Commit Graph

318 Commits

  • refactor: window handle usage (#4788)
    * refactor: Remove unused UI reset function and streamline window creation logic
    
    * refactor: Remove debug print statements and streamline lightweight mode initialization
    
    * fix: Ensure tray status refresh during silent startup and lightweight mode entry is independent of window creation
    
    * refactor: Simplify window creation process and remove debug print statements
  • refactor: clash-verge-service management (#4674)
    * refactor: clash-verge-service management
    
    * fix: correct service state checks in ProxyControlSwitches component
    refactor: improve logging in service state update functions
    
    * fix: add missing async handler for Windows and adjust logging import for macOS
    
    * fix: streamline logging imports and add missing async handler for Windows
    
    * refactor: remove unused useServiceStateSync hook and update imports in _layout
    
    * refactor: remove unused useServiceStateSync import and clean up code in ProxyControlSwitches and _layout
    
    * refactor: simplify service status checks and reduce wait time in useServiceInstaller hook
    
    * refactor: remove unnecessary logging statements in service checks and IPC connection
    
    * refactor: extract SwitchRow component for better code organization and readability
    
    * refactor: enhance service state management and update related mutations in layout
    
    * refactor: streamline core stopping logic and improve IPC connection logging
    
    * refactor: consolidate service uninstallation logic and improve error handling
    
    * fix: simplify conditional statements in CoreManager and service functions
    
    * feat: add backoff dependency and implement retry strategy for IPC requests
    
    * refactor: remove redundant Windows conditional and improve error handling in IPC tests
    
    * test: improve error handling in IPC tests for message signing and verification
    
    * fix: adjust IPC backoff retry parameters
    
    * refactor: Remove service state tracking and related logic from service management
    
    * feat: Enhance service status handling with logging and running mode updates
    
    * fix: Improve service status handling with enhanced error logging
    
    * fix: Ensure proper handling of service operations with error propagation
    
    * refactor: Simplify service operation execution and enhance service status handling
    
    * fix: Improve error message formatting in service operation execution and simplify service status retrieval
    
    * refactor: Replace Cache with CacheProxy in multiple modules and update CacheEntry to be generic
    
    * fix: Remove unnecessary success message from config validation
    
    * refactor: Comment out logging statements in service version check and IPC request handling
  • fix: Fix icon to RGBA/sRGB Colorspace (#4753)
    * fix: Fixed icon pixel size
    
    * fix: fix icon to RGBA/sRGB Colorspace
    
    * chore: update UPDATELOG
    
    ---------
    
    Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
  • fix: resolve from lightweight cause crash (#4682)
    * refactor: streamline lightweight mode handling and improve window management
    
    * refactor: replace mutex-based window creation lock with atomic operations for improved performance
    
    * refactor: remove startup completed event handling and simplify initialization logic
    
    * refactor: remove conditional compilation for emit_update_event function
    
    * refactor: simplify return statements and clean up commented code in lightweight and window manager modules
    
    * refactor: streamline lightweight mode handling by consolidating window management calls
    
    * refactor: prevent unnecessary window toggle when exiting lightweight mode
    
    * refactor: reorder imports for consistency in lightweight module
    
    * refactor: move macOS specific logging_error import for clarity
  • refactor: restructure async initialization and standardize logging system
    ### Major Improvements
    
    - **Async initialization refactoring**: Complete async migration of init_config, improving app startup performance and stability
      - Change init_work_config from blocking to async execution
      - Optimize error handling for directory creation and config file initialization
      - Enhance structure and robustness of initialization process
    
    - **Logging system standardization**: Unify usage of project's built-in logging! macro
      - Replace all log::info!/warn!/error!/debug! with logging!(level, Type::Setup, true, ...) format
      - Maintain consistency in log categorization and formatting
      - Improve convenience for log tracking and debugging
    
    ### Technical Optimizations
    
    - **Error handling improvements**: Remove crate::log_err! macro, use standard Result error propagation
    - **Directory management optimization**: Refactor ensure_directories function with clearer directory creation logic
    - **Config initialization enhancement**: Separate initialize_config_files function for better code maintainability
    - **Async task management**: Use AsyncHandler::spawn to optimize background log cleanup tasks
    
    ### Bug Fixes
    
    - Fix potential race conditions in async config initialization
    - Improve error feedback and logging during app startup
    - Enhance error handling for DNS config and resource file initialization
    
    ### Updates
    
    - Update wording in UPDATELOG.md issue descriptions
  • refactor: enhance async initialization and streamline setup process (#4560)
    * feat: Implement DNS management for macOS
    
    - Added `set_public_dns` and `restore_public_dns` functions in `dns.rs` to manage system DNS settings.
    - Introduced `resolve` module to encapsulate DNS and scheme resolution functionalities.
    - Implemented `resolve_scheme` function in `scheme.rs` to handle deep links and profile imports.
    - Created UI readiness management in `ui.rs` to track and update UI loading states.
    - Developed window management logic in `window.rs` to handle window creation and visibility.
    - Added initial loading overlay script in `window_script.rs` for better user experience during startup.
    - Updated server handling in `server.rs` to integrate new resolve functionalities.
    - Refactored window creation calls in `window_manager.rs` to use the new window management logic.
    
    * refactor: streamline asynchronous handling in config and resolve setup
    
    * Revert "refactor: streamline asynchronous handling in config and resolve setup"
    
    This reverts commit 23d7dc86d5.
    
    * fix: optimize asynchronous memory handling
    
    * fix: enhance task logging by adding size check for special cases
    
    * refactor: enhance async initialization and streamline setup process
    
    * refactor: optimize async setup by consolidating initialization tasks
    
    * chore: update changelog for Mihomo(Meta) kernel upgrade to v1.19.13
    
    * fix: improve startup phase initialization performance
    
    * refactor: optimize file read/write performance to reduce application wait time
    
    * refactor: simplify app instance exit logic and adjust system proxy guard initialization
    
    * refactor: change resolve_setup_async to synchronous execution for improved performance
    
    * refactor: update resolve_setup_async to accept AppHandle for improved initialization flow
    
    * refactor: remove unnecessary initialization of portable flag in run function
    
    * refactor: consolidate async initialization tasks into a single blocking call for improved execution flow
    
    * refactor: optimize resolve_setup_async by restructuring async tasks for improved concurrency
    
    * refactor: streamline resolve_setup_async and embed_server for improved async handling
    
    * refactor: separate synchronous and asynchronous setup functions for improved clarity
    
    * refactor: simplify async notification handling and remove redundant network manager initialization
    
    * refactor: enhance async handling in proxy request cache and window creation logic
    
    * refactor: improve code formatting and readability in ProxyRequestCache
    
    * refactor: adjust singleton check timeout and optimize trace size conditions
    
    * refactor: update TRACE_SPECIAL_SIZE to include additional size condition
    
    * refactor: update kode-bridge dependency to version 0.2.1-rc2
    
    * refactor: replace RwLock with AtomicBool for UI readiness and implement event-driven monitoring
    
    * refactor: convert async functions to synchronous for window management
    
    * Update src-tauri/src/utils/resolve/window.rs
    
    * fix: handle missing app_handle in create_window function
    
    * Update src-tauri/src/module/lightweight.rs
  • refactor: proxy control component and system settings UI
    fix: handle tun toggle state after service uninstall
  • fix(subscription): resolve issues causing import failures in some cases #4534, #4436, #4552, #4519, #4517, #4503, #4336, #4301 (#4553)
    * fix(subscription): resolve issues causing import failures in some cases #4534, #4436, #4552, #4519, #4517, #4503, #4336, #4301
    
    * fix(profile): update profile creation to include file data handling
    
    * fix(app): improve singleton instance exit handling
    
    * fix: remove unsued handle method
  • refactor(async): migrate from sync-blocking async execution to true async with unified AsyncHandler::spawn (#4502)
    * feat: replace all tokio::spawn with unified AsyncHandler::spawn
    
    - 🚀 Core Improvements:
      * Replace all tokio::spawn calls with AsyncHandler::spawn for unified Tauri async task management
      * Prioritize converting sync functions to async functions to reduce spawn usage
      * Use .await directly in async contexts instead of spawn
    
    - 🔧 Major Changes:
      * core/hotkey.rs: Use AsyncHandler::spawn for hotkey callback functions
      * module/lightweight.rs: Async lightweight mode switching
      * feat/window.rs: Convert window operation functions to async, use .await internally
      * feat/proxy.rs, feat/clash.rs: Async proxy and mode switching functions
      * lib.rs: Window focus handling with AsyncHandler::spawn
      * core/tray/mod.rs: Complete async tray event handling
    
    -  Technical Advantages:
      * Unified task tracking and debugging capabilities (via tokio-trace feature)
      * Better error handling and task management
      * Consistency with Tauri runtime
      * Reduced async boundaries for better performance
    
    - 🧪 Verification:
      * Compilation successful with 0 errors, 0 warnings
      * Maintains complete original functionality
      * Optimized async execution flow
    
    * feat: complete tokio fs migration and replace tokio::spawn with AsyncHandler
    
    🚀 Major achievements:
    - Migrate 8 core modules from std::fs to tokio::fs
    - Create 6 Send-safe wrapper functions using spawn_blocking pattern
    - Replace all tokio::spawn calls with AsyncHandler::spawn for unified async task management
    - Solve all 19 Send trait compilation errors through innovative spawn_blocking architecture
    
    🔧 Core changes:
    - config/profiles.rs: Add profiles_*_safe functions to handle Send trait constraints
    - cmd/profile.rs: Update all Tauri commands to use Send-safe operations
    - config/prfitem.rs: Replace append_item calls with profiles_append_item_safe
    - utils/help.rs: Convert YAML operations to async (read_yaml, save_yaml)
    - Multiple modules: Replace tokio::task::spawn_blocking with AsyncHandler::spawn_blocking
    
     Technical innovations:
    - spawn_blocking wrapper pattern resolves parking_lot RwLock Send trait conflicts
    - Maintain parking_lot performance while achieving Tauri async command compatibility
    - Preserve backwards compatibility with gradual migration strategy
    
    🎯 Results:
    - Zero compilation errors
    - Zero warnings
    - All async file operations working correctly
    - Complete Send trait compliance for Tauri commands
    
    * feat: refactor app handle and command functions to use async/await for improved performance
    
    * feat: update async handling in profiles and logging functions for improved error handling and performance
    
    * fix: update TRACE_MINI_SIZE constant to improve task logging threshold
    
    * fix(windows): convert service management functions to async for improved performance
    
    * fix: convert service management functions to async for improved responsiveness
    
    * fix(ubuntu): convert install and reinstall service functions to async for improved performance
    
    * fix(linux): convert uninstall_service function to async for improved performance
    
    * fix: convert uninstall_service call to async for improved performance
    
    * fix: convert file and directory creation calls to async for improved performance
    
    * fix: convert hotkey functions to async for improved responsiveness
    
    * chore: update UPDATELOG.md for v2.4.1 with major improvements and performance optimizations
  • 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>
  • fix: resolve system proxy status detection and display inconsistency
    - Fixed getSystemProxyActualState logic to properly check actual system status
    - Unified system proxy state display across all components
    - Replaced systemProxyIndicator with actualState for consistent UI display
    - Updated components: setting-system, ProxyControlSwitches, proxy-tun-card
    - Added entry to v2.4.0 changelog
  • 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
  • refactor: enhance traffic monitoring system with unified data management
     New Features:
    - Implement unified traffic monitoring hook with reference counting
    - Add intelligent data sampling and compression for better performance
    - Introduce enhanced canvas traffic graph with mouse hover tooltips
    - Add Y-axis labels and improved time axis display strategies
    - Support multiple time ranges (1, 5, 10 minutes) with adaptive formatting
    
    🚀 Performance Improvements:
    - Smart data compression reduces memory usage by 80%
    - Reference counting prevents unnecessary data collection when no components need it
    - Debounced data updates reduce UI thrashing
    - Optimized canvas rendering with controlled frame rates
    
    🔧 Technical Improvements:
    - Consolidate traffic monitoring logic into single hook (use-traffic-monitor.ts)
    - Remove duplicate hook implementations
    - Improve error handling with fallback to last valid data
    - Add comprehensive traffic statistics and monitoring diagnostics
    - Enhance tooltip system with precise data point highlighting
    
    🐞 Bug Fixes:
    - Fix connection speed display issues after IPC migration
    - Improve data freshness indicators
    - Better handling of network errors and stale data
    - Consistent traffic parsing across all components
    
    📝 Code Quality:
    - Add TypeScript interfaces for better type safety
    - Implement proper cleanup for animation frames and references
    - Add error boundaries for traffic components
    - Improve component naming and organization
    
    This refactoring provides a more robust, performant, and feature-rich traffic monitoring system while maintaining backward compatibility.
  • 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
  • refactor: external-controller-cors to always show (#4243)
    * refactor: external-controller-cors to always show
    
    * i18n: update translation
    
    * Update UPDATELOG.md
  • fix: resolve connection speed display issues after IPC migration #4208 (#4229)
    🐞 Bug Fixes:
    - Fix missing upload/download rate display in connections page after IPC migration
    - Implement real-time connection speed calculation based on data differences
    - Add connection speed data types and calculation logic
    
    🔧 Technical Improvements:
    - Add connection speed calculation function in AppDataProvider
    - Use useRef to store previous connection data for speed difference calculation
    - Add curUpload and curDownload fields to connection data
    - Optimize connection data processing flow for accurate speed calculations
    
    📝 Changelog:
    - Update relevant issue descriptions in 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>
  • add: home card drag (#4215)
    * add home page control buttons
    
    * Update UPDATELOG.md
    
    * update zh en
    
    * Revert "add home page control buttons"
    
    This reverts commit e184843855.
    
    * Update UPDATELOG.md
    
    * Revert "update zh en"
    
    This reverts commit cbaddf59fb.
    
    * remove unnecessary code
    
    * fix: home.tsx
    
    * add  react-beautiful-dnd script
    
    * add home page drag
    
    * fix: react-beautiful-dndA setup problem was encountered
    
    * Revert "fix: react-beautiful-dndA setup problem was encountered"
    
    This reverts commit 81c34dd472.
    
    * fix: react-beautiful-dndA setup problem was encountered
    
    * Update types.d.ts
    
    * Revert "Update types.d.ts"
    
    This reverts commit 854046cf2f.
    
    * update @types/react-beautiful-dnd
    
    * Update home.tsx
    
    * Update UPDATELOG.md
    
    * remove unnecessary components
    
    * Revert "add  react-beautiful-dnd script"
    
    This reverts commit e84d569225.
    
    * Reapply "add  react-beautiful-dnd script"
    
    This reverts commit 2379fd27c4.
    
    * fix: home page error
  • fix: Windows installer parameter problem (#4213)
    * repair and delete the startup item
    
    * fix: parameter usage issues
    
    * Update UPDATELOG.md
    
    * Update UPDATELOG.md
    
    * fix: install