Commit Graph

46 Commits

  • refactor: replace unwrap_or with unwrap_or_else for improved error handling (#5163)
    In Rust, the `or` and `or_else` methods have distinct behavioral differences. The `or` method always eagerly evaluates its argument and executes any associated function calls. This can lead to unnecessary performance costs—especially in expensive operations like string processing or file handling—and may even trigger unintended side effects.
    
    In contrast, `or_else` evaluates its closure lazily, only when necessary. Introducing a Clippy lint to disallow `or` sacrifices a bit of code simplicity but ensures predictable behavior and enforces lazy evaluation for better performance.
  • perf: utilize smartstring for string handling (#5149)
    * perf: utilize smartstring for string handling
    
    - Updated various modules to replace standard String with smartstring::alias::String for improved performance and memory efficiency.
    - Adjusted string manipulations and conversions throughout the codebase to ensure compatibility with the new smartstring type.
    - Enhanced readability and maintainability by using `.into()` for conversions where applicable.
    - Ensured that all instances of string handling in configuration, logging, and network management leverage the benefits of smartstring.
    
    * fix: replace wrap_err with stringify_err for better error handling in UWP tool invocation
    
    * refactor: update import path for StringifyErr and adjust string handling in sysopt
    
    * fix: correct import path for CmdResult in UWP module
    
    * fix: update argument type for execute_sysproxy_command to use std::string::String
    
    * fix: add missing CmdResult import in UWP platform module
    
    * fix: improve string handling and error messaging across multiple files
    
    * style: format code for improved readability and consistency across multiple files
    
    * fix: remove unused file
  • fix: simplify conditional checks and improve async handler usage across multiple files (#5156)
    * fix: simplify conditional checks and improve async handler usage across multiple files
    
    * fix: add missing AsyncHandler import in find_processes_by_name function
    
    * fix: remove redundant AsyncHandler import in find_processes_by_name function
  • feat: support for reopen app via desktop shortcuts (#5037)
    * fix: singleton check
    
    * docs: update UPDATELOG.md
    
    ---------
    
    Co-authored-by: Slinetrac <realakayuki@gmail.com>
  • Refactor logging macros to remove print control parameter
    - Updated logging macros to eliminate the boolean parameter for print control, simplifying the logging calls throughout the codebase.
    - Adjusted all logging calls in various modules (lib.rs, lightweight.rs, help.rs, init.rs, logging.rs, resolve/mod.rs, resolve/scheme.rs, resolve/ui.rs, resolve/window.rs, server.rs, singleton.rs, window_manager.rs) to reflect the new macro structure.
    - Ensured consistent logging behavior across the application by standardizing the logging format.
  • fix: restart app failed (#4974)
    * fix: failed to restart app
    
    * chore: cleanup
    
    * chore: cargo fmt
    
    * chore: use AsyncHandler
    
    * chore: clippy
    
    * chore: update
  • edition 2024 (#4702)
    * feat: update Cargo.toml for 2024 edition and optimize release profiles
    
    * feat: refactor environment variable settings for Linux and improve code organization
    
    * Refactor conditional statements to use `&&` for improved readability
    
    - Updated multiple files to combine nested `if let` statements using `&&` for better clarity and conciseness.
    - This change enhances the readability of the code by reducing indentation levels and making the conditions more straightforward.
    - Affected files include: media_unlock_checker.rs, profile.rs, clash.rs, profiles.rs, async_proxy_query.rs, core.rs, handle.rs, hotkey.rs, service.rs, timer.rs, tray/mod.rs, merge.rs, seq.rs, config.rs, proxy.rs, window.rs, general.rs, dirs.rs, i18n.rs, init.rs, network.rs, and window.rs in the resolve module.
    
    * refactor: streamline conditional checks using `&&` for improved readability
    
    * fix: update release profile settings for panic behavior and optimization
    
    * fix: adjust optimization level in Cargo.toml and reorder imports in lightweight.rs
  • feat: update Cargo.toml for 2024 edition and optimize release profiles (#4681)
    * feat: update Cargo.toml for 2024 edition and optimize release profiles
    
    * feat: refactor environment variable settings for Linux and improve code organization
    
    * Refactor conditional statements to use `&&` for improved readability
    
    - Updated multiple files to combine nested `if let` statements using `&&` for better clarity and conciseness.
    - This change enhances the readability of the code by reducing indentation levels and making the conditions more straightforward.
    - Affected files include: media_unlock_checker.rs, profile.rs, clash.rs, profiles.rs, async_proxy_query.rs, core.rs, handle.rs, hotkey.rs, service.rs, timer.rs, tray/mod.rs, merge.rs, seq.rs, config.rs, proxy.rs, window.rs, general.rs, dirs.rs, i18n.rs, init.rs, network.rs, and window.rs in the resolve module.
    
    * refactor: streamline conditional checks using `&&` for improved readability
  • 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(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: 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
  • 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>
  • 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 and Optimize
    fix: #3187 and #3096, silent startup can not trigger lightweight mode
    fix: optimize startup initializing processing
  • refactor(logging): replace log_err! with structured logging_error! calls
    refactor(cm-service): better error handling from Backend to Frontend