* feat: implement app icon management and caching mechanism
* feat: enhance app synchronization and icon management
- Refactored app synchronization tasks to improve structure and clarity.
- Introduced shared context for managing app sync state and metadata.
- Updated icon handling to ensure proper content type and caching.
- Adjusted cache control settings for app icons to extend cache duration.
- Improved error handling and logging during app sync processes.
* refactor: streamline app icon retrieval by removing unused fileName return
- Removed the fileName return value from GetAppIcon function as it was not utilized.
- Enhanced the GetAppIcon method in BaseApi to improve clarity and maintainability.
- Ensured proper caching headers are set for app icons.
* feat: Implement AppStore synchronization task
- Introduced a new `syncAppStoreTask` function to handle the synchronization of applications from the AppStore.
- The function checks for updates, retrieves the application list, and manages the synchronization process, including downloading app icons and updating app details.
- Refactored the existing app synchronization logic from `SyncAppListFromRemote` into the new task for improved maintainability and clarity.
- Added logging for progress tracking during the synchronization process.
* feat: Refactor HTTP request handling to support custom client
- Introduced `HandleRequestWithClient` function to allow custom HTTP clients for requests.
- Moved the transport loading logic into the new function for better separation of concerns.
- Updated `HandleRequest` to utilize the new function, enhancing flexibility in request handling.
* refactor: Simplify HTTP request handling in app synchronization
- Replaced direct HTTP request handling with `HandleRequestWithClient` for downloading app icons and Docker Compose files.
- Removed unused variables and logging related to icon download updates for cleaner code.
- Improved error handling and logging for failed requests.
* feat: Add pullImage option to ComposeCreate and update related logic
- Introduced a new optional field `pullImage` in the `ComposeCreate` struct to control image pulling behavior.
- Updated `CreateCompose` method to handle the `pullImage` flag when invoking the compose up command.
- Modified `UpWithTask` function to conditionally skip image pulling based on the `pullImages` parameter.
- Enhanced frontend form to include a checkbox for the `pullImage` option, with default value set to true.
* feat: Add label for environment variable input in Compose form
This fix addresses three bugs in the DNS Manual SSL certificate flow:
1. **Order caching fails when Expires is zero**: ACME orders often have
zero Expires initially. The condition `!Expires.IsZero()` caused valid
cached orders to be deleted and recreated with different TXT values.
Fixed by checking `Expires.IsZero() || Expires.After(now)`.
2. **Wildcard and base domain TXT records overwrite each other**: When
requesting SSL for both `example.com` and `*.example.com`, both
authorizations have identifier `example.com`, causing one TXT value
to overwrite the other. Fixed by using `*.domain` as the map key.
3. **Only first TXT record checked**: When multiple TXT records exist,
only the first was checked. Fixed by returning all TXT values and
checking if expected value exists in any of them.
```release-note
Fix DNS Manual SSL certificate issues for wildcard domains
```
Co-authored-by: DeployThemAll <deploythemall@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* feat: Enhance browser cache management and localization support
- Updated browser cache handling in WebsiteService to include a 'noModify' option.
- Introduced new method AddBroswerNoCache in Location to manage no-cache directives.
- Added localization for 'noModify' in multiple languages.
- Updated frontend to support the new browser cache options in the proxy configuration.
* fix: Update cache display logic in proxy configuration
- Adjusted the rendering of cache tags in the proxy configuration to conditionally display based on cache time values.
- Improved user interface by adding margin classes for better spacing between cache tags.
* feat: Enhance WebSocket client functionality and improve data processing
- Reduced message queue size in WebSocket client from 100 to 32.
- Introduced atomic boolean to track client closure state.
- Added SendPayload method to handle message sending with queue management.
- Updated ProcessData function to utilize SendPayload for sending responses.
- Expanded netTypes to include both IPv4 and IPv6 protocols in network connection retrieval.
- Improved net connection processing by using a map for process names, enhancing efficiency.
* feat: Enhance WebSocket client and process data handling
- Added synchronization with sync.Once for safe closure of WebSocket client.
- Updated message queue size to a constant for better maintainability.
- Implemented context timeouts for process data retrieval to prevent blocking.
- Improved network connection handling by utilizing a more efficient method for retrieving connections.
- Introduced a new function to determine connection types based on protocol family.
* feat: Enhance network connection retrieval and process name mapping
- Updated getNetConnections function to improve efficiency by using maps for process names and connections.
- Introduced a new helper function to retrieve process names from the filesystem or process context.
- Enhanced filtering logic for network connections based on process ID, name, and port.
- Increased initial capacity for connection results to optimize performance.
* refactor: Rename SendPayload method to Send in WebSocket client
- Updated the SendPayload method to be more succinctly named Send for clarity.
- Ensured the method continues to handle message sending while maintaining existing functionality.
* refactor: Update ProcessData and getNetConnections for improved clarity and efficiency
- Replaced SendPayload method calls with Send for consistency in WebSocket message handling.
- Enhanced getNetConnections function by refining process name retrieval and filtering logic.
- Improved error handling in getProcessNameWithContext for better robustness.
* refactor: Simplify WebSocket client closure and reading logic
- Removed unnecessary synchronization for closing the WebSocket client.
- Updated the Read method to handle message reading directly without a separate Close method.
- Ensured the Socket is closed properly after reading messages to prevent resource leaks.
* refactor: Simplify process data handling and improve performance
- Replaced goroutine-based processing with a direct loop for handling process data.
- Introduced context support for process and connection retrieval.
- Enhanced error handling and data structuring for process information.
- Improved SSH session retrieval by mapping users by host for better efficiency.
* chore: go fmt
* feat: Add PrettyDistro field to dashboard information and update related services and frontend components
* fix: Trim whitespace and parentheses from detected Linux distribution name in GetDistro method
* fix: Correctly trim parentheses from detected Linux distribution name in GetDistro method
* refactor: Simplify Linux distribution detection by removing unnecessary checks and consolidating logic