Tunglies
2ca8e6716d
style: adjust rustfmt max_width to 120
2025-12-06 10:31:31 +08:00
Sline
f439e93a2b
feat(hotkey): add global reactivate_profiles shortcut ( #5527 )
...
* feat(hotkey): add global reactivate_profiles shortcut
* feat(profile): expose validation state for reactivation shortcuts
2025-11-19 17:06:23 +08:00
Tunglies
4eeb883464
refactor: update imports to use as _ for unused identifiers across multiple files
2025-11-09 22:15:37 +08:00
Sline
c8aa72186e
chore: i18n ( #5276 )
...
* chore: notice i18n
* feat: add script to clean up unused i18n keys
* chore: cleanup i18n keys
* refactor(i18n/proxies): migrate proxies UI to structured locale keys
* chore: i18n for rule module
* chore: i18n for profile module
* chore: i18n for connections module
* chore: i18n for settings module
* chore: i18n for verge settings
* chore: i18n for theme settings
* chore: i18n for theme
* chore(i18n): components.home.*
* chore(i18n): remove unused i18n keys
* chore(i18n): components.profile.*
* chore(i18n): components.connection
* chore(i18n): pages.logs.*
* chore(i18n): pages.*.provider
* chore(i18n): components.settings.externalCors.*
* chore(i18n): components.settings.clash.*
* chore(i18n): components.settings.liteMode.*
* chore(i18n): components.settings.backup.*
* chore(i18n): components.settings.clash.port.*
* chore(i18n): components.settings.misc.*
* chore(i18n): components.settings.update.*
* chore(i18n): components.settings.sysproxy.*
* chore(i18n): components.settings.sysproxy.*
* chore(i18n): pages.profiles.notices/components.providers.notices
* refactor(notice): unify showNotice usage
* refactor(notice): add typed showNotice shortcuts, centralize defaults, and simplify subscriptions
* refactor: unify showNotice usage
* refactor(notice): unify showNotice API
* refactor(notice): unify showNotice usage
* chore(i18n): components.test.*
* chore(i18n): components.settings.dns.*
* chore(i18n): components.home.clashInfo.*
* chore(i18n): components.home.systemInfo.*
* chore(i18n): components.home.ipInfo/traffic.*
* chore(i18n): navigation.*
* refactor(i18n): remove pages.* namespace and migrate route texts under module-level page keys
* chore(i18n): common.*
* chore(i18n): common.*
* fix: change error handling in patch_profiles_config to return false when a switch is in progress
* fix: improve error handling in patch_profiles_config to prevent requests during profile switching
* fix: change error handling in patch_profiles_config to return false when a switch is in progress
fix: ensure CURRENT_SWITCHING_PROFILE is reset after config updates in perform_config_update and patch_profiles_config
* chore(i18n): restructure root-level locale keys into namespaces
* chore(i18n): add missing i18n keys
* docs: i18n guide
* chore: adjust i18n
* refactor(i18n): align UI actions and status labels with common keys
* refactor(i18n): unify two-name locale namespaces
* refactor(i18n/components): unify locale keys and update component references
* chore(i18n): add shared and entities namespaces to all locale files
* refactor(i18n): consolidate shared and entity namespaces across features
* chore(deps): update npm dependencies to ^7.3.5 (#5310 )
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* refactor(i18n): migrate shared editor modes and consolidate entities namespaces
* tmp
* refactor(i18n): flatten locales and move theme/validation strings
* docs: CONTRIBUTING_i18n.md
* refactor(i18n): restructure feedback and profile namespaces for better organization
* refactor(i18n): unify settings locale structure and update references
* refactor(i18n): reorganize locale keys for home, proxies, rules, connections, logs, unlock, and tests
* refactor(i18n/feedback/layout): unify shared toasts & normalize layout namespace
* refactor(i18n): centralize common UI strings in shared
* refactor(i18n): flatten headers and unify locale schema
* refactor(i18n): consolidate duplicate per-feature translations into shared namespace
* refactor(i18n): split locales into per-namespace files
* style: lint
* refactor(i18n): unify unlock UI translations under tests namespace
* feat(i18n): add type-checked translation keys
* style: eslint import order
* feat(i18n): replace ad-hoc loader with rust-i18n backend bundles
* chore(prebuild): remove locale-copy step
* fix(i18n, notice): propagate runtime params and update cleanup script path
* fix(i18n,notice): make locale formatting idempotent and guard early notice translations
* fix(i18n): resolve locale aliases and match OS codes correctly
* fix(unlock): use i18next-compatible double-brace interpolation in failure notice
* fix(i18n): route unlock error notices through translation keys
* fix(i18n): i18n types
* feat(i18n): localize upgrade notice for Clash core viewer
* fix(notice): ensure runtime overrides apply to prefix translations
* chore(i18n): replace literal notices with translation keys
* chore(i18n): types
* chore(i18n): regen typings before formatting to keep keys in sync
* chore(i18n): simply labels
* chore(i18n): adjust translation
* chore: remove eslint-plugin-i18next
* chore(i18n): add/refine Korean translations across frontend scopes and Rust backend (#5341 )
* chore(i18n): translate settings.json (missed in previous pass) (#5343 )
* chore(i18n): add/refine Korean translations across frontend scopes and Rust backend
* chore(i18n): add/refine Korean translations across frontend scopes and Rust backend
* fix(i18n-tauri): quote placeholder-leading value in ko.yml to prevent rust_i18n parse panic
* chore(i18n): translate settings.json (forgot to include previously)
---------
Co-authored-by: rozan <34974262+thelojan@users.noreply.github.com>
2025-11-08 19:40:38 +08:00
oomeow
8c734a5a35
fix: disable tun mode menu on tray when tun mode is unavailable ( #4975 )
...
* fix: check if service installed when toggle tun mode on tray
* chore: cargo fmt
* fix: auto disable tun mode
* docs: update UPDATELOG.md
* fix: init Tun mode status
* chore: update
* feat: disable tun mode tray menu when tun mode is unavailable
* fix: restart core when uninstall service is canceled
* chore: remove check notification when toggle tun mode
* chore: fix updatelog
---------
Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
2025-10-31 17:31:40 +08:00
Tunglies
355a18e5eb
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
2025-08-26 01:49:51 +08:00
Tunglies
0d070fb934
refactor: update AppHandle usage to use Arc<AppHandle> for improved memory management ( #4491 )
...
* refactor: update AppHandle usage to use Arc<AppHandle> for improved memory management
* fix: clippy ci
* fix: ensure default_latency_test is safely accessed with non-null assertion
2025-08-23 00:20:58 +08:00
Tunglies
f1192c95a8
feat: add notification system with hotkey events and permission handling ( #3867 )
...
* feat: add notification system with hotkey events and permission handling
* Add macOS-specific handling for AppHidden notification
Introduces conditional support for the AppHidden notification event,
enabling macOS-specific behavior. Updates the enum and notification
logic to include this platform-specific feature.
Improves macOS user experience by accommodating system-level
application hiding events.
* Implement feature X to enhance user experience and fix bug Y in module Z
* refactor(notification): update notification keys for consistency and clarity
* chore(deps): update dependencies to latest versions
2025-06-26 23:09:07 +08:00