Commit Graph

1144 Commits

  • refactor: Replace tokio::spawn with AsyncHandler::spawn for better task management
    - Replace direct tokio::spawn calls with AsyncHandler::spawn across multiple modules
    - Improves task lifecycle management and error handling consistency
    - Affected files:
      - src-tauri/src/cmd/network.rs
      - src-tauri/src/core/core.rs
      - src-tauri/src/core/event_driven_proxy.rs
      - src-tauri/src/enhance/tun.rs
      - src-tauri/src/ipc/logs.rs
      - src-tauri/src/ipc/memory.rs
      - src-tauri/src/ipc/monitor.rs
      - src-tauri/src/ipc/traffic.rs
      - src-tauri/src/utils/network.rs
      - src-tauri/src/utils/resolve.rs
    
    This change provides better control over async task spawning and helps prevent
    potential issues with unmanaged background tasks.
  • renew: remove whether to enable_random_port (#4401)
    * refactor: streamline clean old assets job by using reusable workflow
    
    * refactor: update clean old assets job to include steps section
    
    * refactor: add checkout step in clean_old_assets job for improved repository access
    
    * fix: correct path to clean old assets workflow in autobuild.yml
    
    * fix: update path to clean old assets workflow in autobuild.yml
    
    * refactor: simplify clean_old_assets job by removing unnecessary steps
    
    * refactor: enhance clean_old_assets job dependencies for improved execution flow
    
    * Revert "refactor: enhance clean_old_assets job dependencies for improved execution flow"
    
    This reverts commit 1a5108b5ad.
    
    * feat: implement get_latest_tauri_commit script and update release versioning logic
    
    * renew: remove whether to enable_random_port
    
    ---------
    
    Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
  • fix: clippy errors with new config (#4428)
    * refactor: improve code quality with clippy fixes and standardized logging
    
    - Replace dangerous unwrap()/expect() calls with proper error handling
    - Standardize logging from log:: to logging\! macro with Type:: classifications
    - Fix app handle panics with graceful fallback patterns
    - Improve error resilience across 35+ modules without breaking functionality
    - Reduce clippy warnings from 300+ to 0 in main library code
    
    * chore: update Cargo.toml configuration
    
    * refactor: resolve all clippy warnings
    - Fix Arc clone warnings using explicit Arc::clone syntax across 9 files
    - Add #[allow(clippy::expect_used)] to test functions for appropriate expect usage
    - Remove no-effect statements from debug code cleanup
    - Apply clippy auto-fixes for dbg\! macro removals and path statements
    - Achieve zero clippy warnings on all targets with -D warnings flag
    
    * chore: update Cargo.toml clippy configuration
    
    * refactor: simplify macOS job configuration and improve caching
    
    * refactor: remove unnecessary async/await from service and proxy functions
    
    * refactor: streamline pnpm installation in CI configuration
    
    * refactor: simplify error handling and remove unnecessary else statements
    
    * refactor: replace async/await with synchronous locks for core management
    
    * refactor: add workflow_dispatch trigger to clippy job
    
    * refactor: convert async functions to synchronous for service management
    
    * refactor: convert async functions to synchronous for UWP tool invocation
    
    * fix: change wrong logging
    
    * refactor: convert proxy restoration functions to async
    
    * Revert "refactor: convert proxy restoration functions to async"
    
    This reverts commit b82f5d250b.
    
    * refactor: update proxy restoration functions to return Result types
    
    * fix: handle errors during proxy restoration and update async function signatures
    
    * fix: handle errors during proxy restoration and update async function signatures
    
    * refactor: update restore_pac_proxy and restore_sys_proxy functions to async
    
    * fix: convert restore_pac_proxy and restore_sys_proxy functions to async
    
    * fix: await restore_sys_proxy calls in proxy restoration logic
    
    * fix: suppress clippy warnings for unused async functions in proxy restoration
    
    * fix: suppress clippy warnings for unused async functions in proxy restoration
  • fix: auto-detect KDE/Plasma and disable GTK CSD to fix titlebar button freeze (#4380)
    * fix: auto-detect KDE/Plasma and disable GTK CSD to fix titlebar button freeze
    
    * chore: update UPDATELOG
    
    ---------
    
    Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
  • chore(deps): update cargo dependencies (#4329)
    * chore(deps): update cargo dependencies
    
    * fix: update warp dependency to include server feature
    
    * fix: update return type of scheme_handler to String for consistency
    
    * fix: add hyper-util dependency and update warp path handlers for response status
    
    ---------
    
    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
    Co-authored-by: Tunglies <tunglies.dev@outlook.com>
    Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
  • fix: resolve intermittent startup deadlock issues
    - Optimize configuration access locks to prevent race conditions
    - Enhance UI monitoring thread with non-blocking lock operations
    - Improve window creation timing and synchronization
    - Add comprehensive deadlock detection and debugging logs
    - Simplify code structure with better error handling patterns
    - Update changelog with user-friendly descriptions
  • fix: improve profile import validation and handle async lock correctly
    fix: refactor import_profile function for improved readability and maintainability
  • refactor: optimize singleton macro usage with Default trait implementations (#4279)
    * refactor: implement DRY principle improvements across backend
    
    Major DRY violations identified and addressed:
    
    1. **IPC Stream Monitor Pattern**:
       - Created `utils/ipc_monitor.rs` with generic `IpcStreamMonitor` trait
       - Added `IpcMonitorManager` for common async task management patterns
       - Eliminates duplication across traffic.rs, memory.rs, and logs.rs
    
    2. **Singleton Pattern Duplication**:
       - Created `utils/singleton.rs` with `singleton\!` and `singleton_with_logging\!` macros
       - Replaces 16+ duplicate singleton implementations across codebase
       - Provides consistent, tested patterns for global instances
    
    3. **macOS Activation Policy Refactoring**:
       - Consolidated 3 duplicate methods into single parameterized `set_activation_policy()`
       - Eliminated code duplication while maintaining backward compatibility
       - Reduced maintenance burden for macOS-specific functionality
    
    These improvements enhance maintainability, reduce bug potential, and ensure consistent patterns across the backend codebase.
    
    * fix: resolve test failures and clippy warnings
    
    - Fix doctest in singleton.rs by using rust,ignore syntax and proper code examples
    - Remove unused time::Instant import from ipc_monitor.rs
    - Add #[allow(dead_code)] attributes to future-use utility modules
    - All 11 unit tests now pass successfully
    - All clippy checks pass with -D warnings strict mode
    - Documentation tests properly ignore example code that requires full context
    
    * refactor: migrate code to use new utility tools (partial)
    
    Progress on systematic migration to use created utility tools:
    
    1. **Reorganized IPC Monitor**:
       - Moved ipc_monitor.rs to src-tauri/src/ipc/monitor.rs for better organization
       - Updated module structure to emphasize IPC relationship
    
    2. **IpcManager Singleton Migration**:
       - Replaced manual OnceLock singleton pattern with singleton_with_logging\! macro
       - Simplified initialization code and added consistent logging
       - Removed unused imports (OnceLock, logging::Type)
    
    3. **ProxyRequestCache Singleton Migration**:
       - Migrated from once_cell::sync::OnceCell to singleton\! macro
       - Cleaner, more maintainable singleton pattern
       - Consistent with project-wide singleton approach
    
    These migrations demonstrate the utility and effectiveness of the created tools:
    - Less boilerplate code
    - Consistent patterns across codebase
    - Easier maintenance and debugging
    
    * feat: complete migration to new utility tools - phase 1
    
    Successfully migrated core components to use the created utility tools:
    
    - Moved `ipc_monitor.rs` to `src-tauri/src/ipc/monitor.rs`
    - Better organization emphasizing IPC relationship
    - Updated module exports and imports
    
    - **IpcManager**: Migrated to `singleton_with_logging\!` macro
    - **ProxyRequestCache**: Migrated to `singleton\!` macro
    - Eliminated ~30 lines of boilerplate singleton code
    - Consistent logging and initialization patterns
    
    - Removed unused imports (OnceLock, once_cell, logging::Type)
    - Cleaner, more maintainable code structure
    - All 11 unit tests pass successfully
    - Zero compilation warnings
    
    - **Lines of code reduced**: ~50+ lines of boilerplate
    - **Consistency improved**: Unified singleton patterns
    - **Maintainability enhanced**: Centralized utility functions
    - **Test coverage maintained**: 100% test pass rate
    
    Remaining complex monitors (traffic, memory, logs) will be migrated to use the shared IPC monitoring patterns in the next phase, which requires careful refactoring of their streaming logic.
    
    * refactor: complete singleton pattern migration to utility macros
    
    Migrate remaining singleton patterns across the backend to use standardized
    utility macros, achieving significant code reduction and consistency improvements.
    
    - **LogsMonitor** (ipc/logs.rs): `OnceLock` → `singleton_with_logging\!`
    - **Sysopt** (core/sysopt.rs): `OnceCell` → `singleton_lazy\!`
    - **Tray** (core/tray/mod.rs): Complex `OnceCell` → `singleton_lazy\!`
    - **Handle** (core/handle.rs): `OnceCell` → `singleton\!`
    - **CoreManager** (core/core.rs): `OnceCell` → `singleton_lazy\!`
    - **TrafficMonitor** (ipc/traffic.rs): `OnceLock` → `singleton_lazy_with_logging\!`
    - **MemoryMonitor** (ipc/memory.rs): `OnceLock` → `singleton_lazy_with_logging\!`
    
    - `singleton_lazy\!` - For complex initialization patterns
    - `singleton_lazy_with_logging\!` - For complex initialization with logging
    
    - **Code Reduction**: -33 lines of boilerplate singleton code
    - **DRY Compliance**: Eliminated duplicate initialization patterns
    - **Consistency**: Unified singleton approach across codebase
    - **Maintainability**: Centralized singleton logic in utility macros
    - **Zero Breaking Changes**: All existing APIs remain compatible
    
    All tests pass and clippy warnings resolved.
    
    * refactor: optimize singleton macros using Default trait implementation
    
    Simplify singleton macro usage by implementing Default trait for complex
    initialization patterns, significantly improving code readability and maintainability.
    
    - **MemoryMonitor**: Move IPC client initialization to Default impl
    - **TrafficMonitor**: Move IPC client initialization to Default impl
    - **Sysopt**: Move Arc<Mutex> initialization to Default impl
    - **Tray**: Move struct field initialization to Default impl
    - **CoreManager**: Move Arc<Mutex> initialization to Default impl
    
    ```rust
    singleton_lazy_with_logging\!(MemoryMonitor, INSTANCE, "MemoryMonitor", || {
        let ipc_path_buf = ipc_path().unwrap();
        let ipc_path = ipc_path_buf.to_str().unwrap_or_default();
        let client = IpcStreamClient::new(ipc_path).unwrap();
        MemoryMonitor::new(client)
    });
    ```
    
    ```rust
    impl Default for MemoryMonitor { /* initialization logic */ }
    singleton_lazy_with_logging\!(MemoryMonitor, INSTANCE, "MemoryMonitor", MemoryMonitor::default);
    ```
    
    - **Code Reduction**: -17 lines of macro closure code (80%+ simplification)
    - **Separation of Concerns**: Initialization logic moved to proper Default impl
    - **Readability**: Single-line macro calls vs multi-line closures
    - **Testability**: Default implementations can be tested independently
    - **Rust Idioms**: Using standard Default trait pattern
    - **Performance**: Function calls more efficient than closures
    
    All tests pass and clippy warnings resolved.
    
    * refactor: implement MonitorData and StreamingParser traits for IPC monitors
    
    * refactor: add timeout and retry_interval fields to IpcStreamMonitor; update TrafficMonitorState to derive Default
    
    * refactor: migrate AppHandleManager to unified singleton control
    
    - Replace manual singleton implementation with singleton_with_logging\! macro
    - Remove std::sync::Once dependency in favor of OnceLock-based pattern
    - Improve error handling for macOS activation policy methods
    - Maintain thread safety with parking_lot::Mutex for AppHandle storage
    - Add proper initialization check to prevent duplicate handle assignment
    - Enhance logging consistency across AppHandleManager operations
    
    * refactor: improve hotkey management with enum-based operations
    
    - Add HotkeyFunction enum for type-safe function selection
    - Add SystemHotkey enum for predefined system shortcuts
    - Implement Display and FromStr traits for type conversions
    - Replace string-based hotkey registration with enum methods
    - Add register_system_hotkey() and unregister_system_hotkey() methods
    - Maintain backward compatibility with string-based register() method
    - Migrate singleton pattern to use singleton_with_logging\! macro
    - Extract hotkey function execution logic into centralized execute_function()
    - Update lib.rs to use new enum-based SystemHotkey operations
    - Improve type safety and reduce string manipulation errors
    
    Benefits:
    - Type safety prevents invalid hotkey function names
    - Centralized function execution reduces code duplication
    - Enum-based API provides better IDE autocomplete support
    - Maintains full backward compatibility with existing configurations
    
    * fix: resolve LightWeightState initialization order panic
    
    - Modify with_lightweight_status() to safely handle unmanaged state using try_state()
    - Return Option<R> instead of R to gracefully handle state unavailability
    - Update is_in_lightweight_mode() to use unwrap_or(false) for safe defaults
    - Add state availability check in auto_lightweight_mode_init() before access
    - Maintain singleton check priority while preventing early state access panics
    - Fix clippy warnings for redundant pattern matching
    
    Resolves runtime panic: "state() called before manage() for LightWeightState"
    
    * refactor: add unreachable patterns for non-macOS in hotkey handling
    
    * refactor: simplify SystemHotkey enum by removing redundant cfg attributes
    
    * refactor: add macOS conditional compilation for system hotkey registration methods
    
    * refactor: streamline hotkey unregistration and error logging for macOS
  • feat: migrate logs API from REST to IPC streaming (#4277)
    * feat: migrate logs API from REST to IPC streaming
    
    - Replace REST API `/logs` calls with IPC streaming implementation
    - Add new `src-tauri/src/ipc/logs.rs` with `LogsMonitor` for real-time log streaming
    - Implement duplicate stream prevention with level tracking
    - Add frontend-backend communication via Tauri commands for log management
    - Remove WebSocket compatibility, maintain IPC-only mode
    - Fix duplicate monitoring task startup when toggling log service
    - Add proper task lifecycle management with JoinHandle cleanup
    
    * refactor: remove dead code from logs.rs to fix clippy warnings
    
    - Remove unused `timestamp` field from LogItem struct
    - Remove unused `client` field from LogsMonitor struct
    - Remove unused methods: `is_fresh`, `get_current_monitoring_level`, `get_current_logs`
    - Simplify LogsMonitor initialization by removing client dependency
    - All clippy warnings with -D warnings now resolved
    
    * refactor: extract duplicate fmt_bytes function to utils module
    
    - Create new utils/format.rs module with fmt_bytes function
    - Remove duplicate fmt_bytes implementations from traffic.rs and memory.rs
    - Update imports to use shared utils::format::fmt_bytes
    - Add comprehensive unit tests for fmt_bytes function
    - Ensure DRY principle compliance and code maintainability
  • fix: the issue of home page port being out of sync (#4271)
    * synchronize port 7897
    
    * Update UPDATELOG.md
  • fix: resolve speed test functionality issue after IPC migration #4221, #4218 (#4228)
    * chore(deps): update cargo dependencies
    
    * fix: sysinfo crate use limit features
    
    * fix: update headers-core dependency and kode-bridge version; enhance system monitor status validation
    
    * fix: extend overall_status type in ISystemMonitorOverview to include 'healthy'
    
    * refactor: update URL encoding strategy in IpcManager and cmdGetProxyDelay function
    
    * fix: resolve speed test functionality issue after IPC migration
    
    * fix: resolve speed test functionality issue after IPC migration #4221, #4218
    
    ---------
    
    Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
  • feat: Implement configuration caching mechanism and force-refresh feature**
     **New Features**:
    
    * Added API and frontend support for forcibly refreshing Clash configuration cache
    * Implemented a configuration cache TTL mechanism (60 seconds) to reduce redundant requests
    * Introduced `ProxyRequestCache` system to manage backend data caching
    * Automatically refresh frontend state after core operations to enhance user experience
    
    🚀 **Performance Optimizations**:
    
    * Increased Clash configuration refresh interval from 5 seconds to 60 seconds
    * Force refresh cache after configuration updates to resolve data inconsistency
    * Automatically trigger state refresh after core switch, start, stop, and restart actions
    
    🔧 **Technical Improvements**:
    
    * Removed unused dependencies: `ab_glyph`, `owned_ttf_parser`, `ttf-parser`
    * Simplified WebSocket dependency management, unified `tungstenite` version
    * Refactored configuration save validation process, improved merge file handling
    * Improved error handling and overall user experience
  • feat: migrate mihomo to use kode-bridge IPC on Windows and Unix (#4051)
    * Refactor Mihomo API integration and remove crate_mihomo_api
    
    - Removed the `mihomo_api` crate and its dependencies from the project.
    - Introduced `IpcManager` for handling IPC communication with Mihomo.
    - Implemented IPC methods for managing proxies, connections, and configurations.
    - Updated `MihomoManager` to utilize `IpcManager` instead of the removed crate.
    - Added platform-specific IPC socket path handling for macOS, Linux, and Windows.
    - Cleaned up related tests and configuration files.
    
    * fix: remove duplicate permission entry in desktop capabilities
    
    * refactor: replace MihomoManager with IpcManager and remove Mihomo module
    
    * fix: restore tempfile dependency in dev-dependencies
    
    * fix: update kode-bridge dependency to use git source from the dev branch
    
    * feat: migrate mihomo to use kode-bridge IPC on Windows
    
    This commit implements a comprehensive migration from legacy service IPC to the kode-bridge library for Windows IPC communication. Key changes include:
    
    Replace service_ipc with kode-bridge IpcManager for all mihomo communications
    Simplify proxy commands using new caching mechanism with ProxyRequestCache
    Add Windows named pipe (\.\pipe\mihomo) and Unix socket IPC endpoint configuration
    Update Tauri permissions and dependencies (dashmap, tauri-plugin-notification)
    Add IPC logging support and improve error handling
    Fix Windows IPC path handling in directory utilities
    This migration enables better cross-platform IPC support and improved performance for mihomo proxy core communication.
    
    * doc: add IPC communication with Mihomo kernel, removing Restful API dependency
    
    * fix: standardize logging type naming from IPC to Ipc for consistency
    
    * refactor: clean up and optimize code structure across multiple components and services
    
    - Removed unnecessary comments and whitespace in various files.
    - Improved code readability and maintainability by restructuring functions and components.
    - Updated localization files for consistency and accuracy.
    - Enhanced performance by optimizing hooks and utility functions.
    - General code cleanup in settings, pages, and services to adhere to best practices.
    
    * fix: simplify URL formatting in test_proxy_delay method
    
    * fix: update kode-bridge dependency to version 0.1.3 and change source to crates.io
    
    * fix: update macOS target versions in development workflow
    
    * Revert "fix: update macOS target versions in development workflow"
    
    This reverts commit b9831357e4.
    
    * feat: enhance IPC path handling for Unix systems and improve directory safety checks
    
    * feat: add conditional compilation for Unix-specific IPC path handling
    
    * chore: update cagro.lock
    
    * feat: add external controller configuration and UI support
    
    * Refactor proxy and connection management to use IPC-based commands
    
    - Updated `get_proxies` function in `proxy.rs` to call the new IPC command.
    - Renamed `get_refresh_proxies` to `get_proxies` in `ipc/general.rs` for consistency.
    - Added new IPC commands for managing proxies, connections, and configurations in `cmds.ts`.
    - Refactored API calls in various components to use the new IPC commands instead of HTTP requests.
    - Improved error handling and response management in the new IPC functions.
    - Cleaned up unused API functions in `api.ts` and redirected relevant calls to `cmds.ts`.
    - Enhanced connection management features including health checks and updates for proxy providers.
    
    * chore: update dependencies and improve error handling in IPC manager
    
    * fix: downgrade zip dependency from 4.3.0 to 4.2.0
    
    * feat: Implement traffic and memory data monitoring service
    
    - Added `TrafficService` and `TrafficManager` to manage traffic and memory data collection.
    - Introduced commands to get traffic and memory data, start and stop the traffic service.
    - Integrated IPC calls for traffic and memory data retrieval in the frontend.
    - Updated `AppDataProvider` and `EnhancedTrafficStats` components to utilize new data fetching methods.
    - Removed WebSocket connections for traffic and memory data, replaced with IPC polling.
    - Added logging for better traceability of data fetching and service status.
    
    * refactor: unify external controller handling and improve IPC path resolution
    
    * fix: replace direct IPC path retrieval with guard function for external controller
    
    * fix: convert external controller IPC path to string for proper insertion in config map
    
    * fix: update dependencies and improve IPC response handling
    
    * fix: remove unnecessary unix conditional for ipc path import
    
    * Refactor traffic and memory monitoring to use IPC stream; remove TrafficService and TrafficManager. Introduce new IPC-based data retrieval methods for traffic and memory, including formatted data and system overview. Update frontend components to utilize new APIs for enhanced data display and management.
    
    * chore: bump crate rand version to 0.9.2
    
    * feat: Implement enhanced traffic monitoring system with data compression and sampling
    
    - Introduced `useTrafficMonitorEnhanced` hook for advanced traffic data management.
    - Added `TrafficDataSampler` class for handling raw and compressed traffic data.
    - Implemented reference counting to manage data collection based on component usage.
    - Enhanced data validation with `SystemMonitorValidator` for API responses.
    - Created diagnostic tools for monitoring performance and error tracking.
    - Updated existing hooks to utilize the new enhanced monitoring features.
    - Added utility functions for generating and formatting diagnostic reports.
    
    * feat(ipc): improve URL encoding and error handling for IPC requests
    
    - Add percent-encoding for URL paths to handle special characters properly
    - Enhance error handling in update_proxy with proper logging
    - Remove excessive debug logging to reduce noise
    - Update kode-bridge dependency to v0.1.5
    - Fix JSON parsing error handling in PUT requests
    
    Changes include:
    - Proper URL encoding for connection IDs, proxy names, and test URLs
    - Enhanced error handling with fallback responses in updateProxy
    - Comment out verbose debug logs in traffic monitoring and data validation
    - Update dependency version for improved IPC functionality
    
    * feat: major improvements in architecture, traffic monitoring, and data validation
    
    * Refactor traffic graph components: Replace EnhancedTrafficGraph with EnhancedCanvasTrafficGraph, improve rendering performance, and enhance visual elements. Remove deprecated code and ensure compatibility with global data management.
    
    * chore: update UPDATELOG.md for v2.4.0 release, refine traffic monitoring system details, and enhance IPC functionality
    
    * chore: update UPDATELOG.md to reflect removal of deprecated MihomoManager and unify IPC control
    
    * refactor: remove global traffic service testing method from cmds.ts
    
    * Update src/components/home/enhanced-canvas-traffic-graph.tsx
    
    * Update src/hooks/use-traffic-monitor-enhanced.ts
    
    * Update src/components/layout/layout-traffic.tsx
    
    * refactor: remove debug state management from LayoutTraffic component
    
    ---------
  • fix: manage setup Mutex crash (#3995)
    * Revert "Revert "refactor: Replace std::sync::Mutex with parking_lot::Mutex for improved performance and consistency in multiple files" (#3990)"
    
    This reverts commit 667844aa12.
    
    * refactor: Manage lightweight state in the app setup and clean up unused proxy client code
    
    * refactor: Move macOS-specific Manager import under conditional compilation
  • refactor(Draft): Replace latest() with latest_ref() and data() with data_mut() in multiple files for improved mutability handling and consistency across the codebase (#3987)
    * feat: add benchmarking for draft operations and new draft management structure
    
    * Refactor Config Access: Replace `latest()` with `latest_ref()` and `data()` with `data_mut()` in multiple files for improved mutability handling and consistency across the codebase.
    
    * refactor: remove DraftNew implementation and related benchmarks for cleaner codebase
  • fix: remove unused redir-port and tproxy-port on Windows (#3969)
    Directly remove redir-port and tproxy-port configurations on Windows platform
  • chore(deps): remove deprecated dependencies (#3960)
    * chore(deps):  remove deprecated dependencies
    
    * refactor: simplify string formatting in make_key function
  • Add cors (#3909)
    * add external `cors` control panel
    
    * optimize format
    
    * fix-script.rs
    
    * fix-service.rs
    
    * fix-rs
    
    async_proxy_query.rs
    
    event_driven_proxy.rs
    
    service_ipc.rs
    
    service.rs
    
    sysopt.rs
    
    * lower the prettier version number to 3.5.3
    
    * Revert "lower the prettier version number to 3.5.3"
    
    This reverts commit 0f1c3dfa8a.
    
    * fix: prttier erros
    
    * add developer environment detection and controlled the display of development environment URL
    
    * submit required
    
    * fix-external-controller-cors
    
    * use the custom component ToggleButton to ensure a uniform button style
    
    * fix-tsx
    
    hotkey-viewer.tsx
    
    external-controller-cors.tsx
    
    * fix-bug_report.yml
    
    * remove the annoying title
    
    * fix-write overload problem
    
    * Individual button settings
    
    * fix-setting-clash.tsx
    
    ---------
    
    Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
    Co-authored-by: Tunglies <tunglies.dev@outlook.com>