* refactor(server): Move the SSH import and discovery features from the server edit page to the settings page
* feat (SSH Configuration): Added a feature to automatically import SSH configurations upon first launch
Checks for and prompts the user to import SSH configurations upon the first launch on the desktop
Optimized the SSH server import logic, adding duplicate detection and name conflict handling
Fixed an issue with mount status checks that could occur during the import process
* refactor (UI): Adjust the placement of the QR code scanning and SSH configuration import features
Move the QR code scanning feature from the server editing page to the settings page, and display different access points based on the platform
Optimize the SSH configuration import logic to ensure the status is updated correctly after the configuration is read for the first time
* refactor(ssh): Refactor server import logic and extract common methods
Extract server import logic into the `ServerDeduplication` class
Use the `importServersWithNotification` method consistently to handle imports
Remove duplicate `_importServers` and `_resolveServers` methods
Add checks for existing server IDs
* refactor(SSH): Optimized server import logic and fixed permission issues
- Moved the SSH configuration import logic from `edit.dart` to `actions.dart`
- Removed redundant checks for the `mounted` parameter
- Added handling for file permission exceptions
- Improved logic for resolving server name conflicts
* fix(ssh): Fixed an issue with message display during SSH configuration import
- Modified the format of the import success message to display the number of servers successfully imported
- Added a prompt for manual selection when permissions are denied
- Optimized the server deduplication logic to display an “already exists” message based on the original count
* fix(ssh): Fixed an issue with the count display when importing SSH configurations
Adjusted the server's deduplication logic to ensure the correct original count is used when displaying the number of imports
Removed unnecessary flag settings for the first read of SSH configurations
* fix: Fixed an issue where the “first read” flag was not updated when SSH configuration access was denied
When SSH configuration access is denied, set the “first read” flag to false to prevent repeated prompts
* fix(server): Optimized the logic for checking existing servers when importing SSH configurations
Moved the logic for checking existing servers to an earlier stage to avoid unnecessary parsing of SSH configurations
* refactor(Settings page): Simplify the click handling logic of the cancel button
* fix(backup_service): Add a cancel button in the restore backup dialog
* refactor(Settings Page): Refactor the ordered list component and optimize state management
- Extract the logic for building list items into a separate method to improve maintainability
- Add animation effects to enhance the dragging experience
- Use PageStorageKey to maintain the scroll position
- Optimize the state management logic of the checkbox
- Add new contributors in github_id.dart
* fix: Add SafeArea to the settings page to prevent content from being obscured
Add SafeArea wrapping content in multiple settings pages to prevent content from being obscured by the navigation bar on certain devices, thereby enhancing user experience
* refactor: Extract file list retrieval method and optimize asynchronous loading of iOS settings page
Extract the `_getEntities` method from an inline function to a class member method to enhance code readability
Preload watch context and push token in the iOS settings page to avoid repeatedly creating Futures
* fix: Add a `key` attribute to the ChoiceChipX component to avoid rendering issues
* refactor(Settings page): Refactor the platform-related settings logic and merge the Android settings into the main page
Migrate the Android platform settings from a standalone page to the main settings page, and remove redundant Android settings page files
Adjust the platform setting logic, retaining only the special setting entry for the iOS platform
* build: Update fl_lib dependency to v1.0.363
* feat(Settings): Add persistent disable state for cards and virtual keys
Add persistent storage functionality for server detail cards and SSH virtual key disable status
Modify the logic of relevant pages to support the saving and restoration of disabled states
* refactor(setting): Simplify save logic and optimize file sorting performance
In the settings page, remove the unnecessary `enabledList` filtering and directly save the `_order` list
Optimize the sorting logic on the local file page by first retrieving the file status before proceeding with sorting
* fix: Optimize data filtering and backup service error handling on the settings page
Fix the data filtering logic in the settings page to only process key-value pairs with specific prefixes
Add error handling to the backup service, capture and display merge failure exceptions
* fix(Settings page): Fixed the issue where disabled items were not included in the order settings and asynchronously saved preference settings
Fix the issue where disabled items in the virtual keyboard and service details order settings are not included in the order list
Change the preference setting saving method to an asynchronous operation, and add a mounted check to prevent updating the state after the component is unmounted
* refactor: Optimize the reordering logic and remove redundant sorting methods
Narrow the scope of state updates in the reordering logic to only encompass the parts where data is actually modified
Remove the unused sorting methods in `_local.dart` to simplify the code
* refactor(view): Optimize the refresh logic of the local file page
Refactor the refresh method that directly calls setState into a unified _refresh method
Use the `_entitiesFuture` to cache the list of files to obtain results and avoid redundant calculations
* Update lib/view/page/storage/local.dart
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* feat(localization): Add validation prompt for invalid host formats
Add validation for host formats, allowing only IPv4, IPv6, and domain name formats
Add regular expression validation for host format on the server editing page
Update multilingual files to add the invalidHostFormat field
* chore: Update dependent package versions to the latest
* fix(server edit): Update the hostname regular expression to support IPv6 zone identifiers
Modify the regular expression for hostname validation to add support for IPv6 zone identifiers (such as %en0)