Commit Graph

28 Commits

  • 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
  • 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
  • Update logging macros usage in timer module
    Replace log macros with custom logging macros in timer module
  • Fix and Optimize
    fix: #3187 and #3096, silent startup can not trigger lightweight mode
    fix: optimize startup initializing processing
  • feat: implement auto lightweight mode timer functionality
    This commit implements the automatic lightweight mode feature with timer functionality:
    
    - Rename configuration properties from auto_enter_lite_mode to enable_auto_light_weight_mode and auto_enter_lite_mode_delay to auto_light_weight_minutes for better clarity
    - Add window event listeners to detect when window is closed or gets focus
    - Implement timer system to automatically enter lightweight mode after configured time
    - Remove exit_lightweight_mode function as it's no longer needed with the new implementation
    - Update UI components to reflect the new property names
    - Add logging for lightweight mode operations
    - Initialize lightweight mode based on user configuration at startup
    
    The feature now allows users to set a timer that will automatically enter lightweight mode
    after closing the main window, which can be cancelled by focusing the window again.
  • refactor(timer): improve timer management with robust error handling
    This commit improves the timer management system with the following enhancements:
    
    Replace Mutex with RwLock for better read concurrency in timer state
    Add structured TimerTask type to store task metadata
    Use atomic boolean for initialization flag instead of mutex
    Implement comprehensive error handling with detailed logging
    Add rollback capability when task operations fail
    Reduce lock contention by generating task diffs outside locks
    Add timing metrics for task execution
    Improve code organization and documentation
  • refactor(timer): enhance timer initialization and task handling (#2956)
    - Add initialization flag to prevent duplicate timer initialization
    - Improve logging for better debugging and monitoring
    - Refactor async task function with proper error handling
    - Add more detailed log messages throughout the timer lifecycle
  • feat: Enhance configuration validation and error handling
    - Improve config validation process with detailed logging and error tracking
    - Add more robust error handling in profile updates and config patches
    - Implement comprehensive config validation using clash core subprocess