Commit Graph
2125 Commits
Author SHA1 Message Date
Tunglies bd10ef8ec9 fix: improve youtube premium unlock check 2026-05-16 01:11:34 +08:00
Tunglies 662dd20be1 fix(linux): show window after page load #7002 2026-05-14 21:52:03 +08:00
Tunglies b7ae54b9f3 fix(wayland): disable webkit dmabuf renderer on legacy wayland versions (<1.23) #6999 (#7000) 2026-05-14 21:11:08 +08:00
Tunglies d79ad8976a chore: bump tauri-plugin-mihomo to 0.1.8 2026-05-13 02:18:29 +08:00
Tunglies e538fa0573 fix: comment out useless exit handling 2026-05-11 00:11:02 +08:00
Tunglies 3956b0d034 fix(tray): include macOS speed text in click target 2026-05-09 02:32:27 +08:00
Tunglies 178b33beef Release 2.5.0-rc 2026-05-06 16:25:23 +08:00
wonfen 2056930f9f fix: preserve reqwest error chain for TLS fallback detection 2026-05-01 20:49:34 +08:00
Tunglies 20808c0c11 fix(sysproxy): preserve global proxy apply order #6760, #6832, #6790, #6793, #6801 2026-04-30 19:17:50 +08:00
Tunglies 13fb18ceaf fix: debounce toggle hotkeys #6796 (#6905) 2026-04-29 05:03:08 +00:00
wonfen 33d7988ac9 feat: retry subscription downloads with webpki roots on TLS failures 2026-04-27 08:43:30 +08:00
Tunglies b85b435e00 refactor: structure config validation outcomes
- Replace boolean/string validation results with structured ValidationOutcome values across config validation, profile switching, DNS validation, and script validation. Callers can now distinguish valid, invalid, skipped, and busy states, with invalid results carrying an error kind and message.

- Route core config updates through structured outcomes and checked forced updates. Generation and validation failures now discard runtime drafts and surface validation failures instead of relying on empty success messages.

- Preserve existing frontend ergonomics by keeping boolean service wrappers where callers only need success, while direct DNS and script validation consumers receive ValidationOutcome. Failed profile editor saves reload the backend-restored file content and synchronize Monaco models so reopened editors show the restored state.
2026-04-25 13:31:08 +08:00
Tunglies 762f9a96fd refactor media unlock task collection 2026-04-24 20:20:50 +08:00
Tunglies 4e62bcf7b8 chore: migrate service to 2.3.0
- Bump clash_verge_service_ipc to 2.3.0 and refresh the lockfile for its updated dependency graph.

- Re-check the running service version after install/start so a stopped old 2.2.0 service is reinstalled before use.
2026-04-24 18:59:42 +08:00
wonfen 4d408a8c1a fix: serialize OS state reads with in-progress update_sysproxy 2026-04-22 12:20:26 +08:00
Tunglies 4718c80498 chore(windows): bump sysproxy-rs to 0.5.4 2026-04-16 13:38:46 +08:00
Tunglies 30ed2ac829 feat(runtime): cap tokio worker threads at 16 and scale blocking threads (#6261)
This prevents the runtime from spawning an excessive number of threads on
high-end CPUs, reducing memory footprint and context switching.
Introduces a dynamic cap for worker threads (max 16) and scales
blocking threads proportionally. Includes thread naming for diagnostics.
2026-04-15 08:38:19 +00:00
sgt57andTunglies 8c7b5abcb5 fix(tun): restart core when tun mode is toggled to true on linux (#6800)
* fix(tun): restart core when tun mode is toggled to true on linux

* fix(changelog): add note for Linux TUN not taking effect immediately

---------

Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
2026-04-15 14:08:17 +08:00
renovate[bot]andrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com> 87810c18df chore(deps): update rust crate nanoid to 0.5 (#6803)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-14 09:09:36 +00:00
renovate[bot]renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>Tunglies
a4c537541e chore(deps): update rust crate rust-i18n to v4 (#6784)
* chore(deps): update rust crate rust-i18n to v4

* fix: migrate rust-i18n to v4 with Cow-first zero-copy approach

- Adapt to v4 breaking changes: available_locales!() returns Vec<Cow<'static, str>>
- Cache locales in LazyLock<Vec<Cow<'static, str>>> to avoid repeated Vec alloc + sort
- Propagate Cow<'static, str> through resolve/current/system_language APIs
- Fix t! macro args branch: into_owned() + Cow::Owned for type correctness
- Eliminate double resolve in sync_locale (skip redundant set_locale indirection)
- Replace .to_string() with .into_owned() / Cow passthrough in updater.rs

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
2026-04-12 11:11:16 +00:00
Tunglies 749b6c9e30 feat(script): convert script execution to async and add timeout handling 2026-04-12 11:20:28 +08:00
Tunglies e6a88cf9c9 refactor: improve service manager initialization by reducing lock duration 2026-04-12 11:15:34 +08:00
Tunglies 0f41f1bc8d refactor: optimize deep_merge function using iterative stack approach 2026-04-12 11:13:17 +08:00
Tunglies a6687a3839 feat(tls): refactor TLS configuration to use static Lazy instance 2026-04-12 03:28:24 +08:00
Tunglies 20fddc5cff feat: add bytes dependency and optimize buffer handling in test_delay function 2026-04-12 03:26:48 +08:00
Tunglies 6fea76f7e3 feat(core): enable enhanced panic diagnostics and observability
Transitioned panic strategy from 'abort' to 'unwind' and integrated a
global panic hook into the logging framework.

This change allows the application to capture critical failure metadata—
including specific file locations, line numbers, and panic payloads—
persisting them to local logs before exit.

Note: We prioritize troubleshooting capability and long-term stability
at this stage. Reverting to 'panic = abort', `debug = false`,
`strip = true`, `remove split-debuginfo` for peak performance and
minimal binary size will only be considered once the project reaches
a mature state with near-zero community-reported crashes.
2026-04-12 03:26:48 +08:00
Tunglies 0e38ccbb9d fix: clippy error on macOS 2026-04-10 21:40:29 +08:00
9e5da1a851 feat(tray): 恢复并重构托盘显示速率功能 (#6487)
* feat(tray): 恢复并重构托盘显示速率功能

* docs(changelog): add tray speed feature entry for v2.4.7

* refactor(tray): 将托盘速率显示限制为仅 macOS

* chore(style): 统一托盘速率设置相关代码风格

* refactor(tray): 统一 speed 任务调度并移除循环内配置轮询

* chore(tauri): enable createUpdaterArtifacts for updater support

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor(tray): refine macOS tray speed formatting and two-line alignment

* refactor(tray): move to utils

* refactor(tray): improve macOS speed display formatting, alignment, and structure

* chore: 降级 Node.js 版本至 21.7.1

* refactor(tray): 优化 macOS 托盘速率流与显示逻辑

* refactor(tray): 将速率任务重构为独立控制器并切换至 /traffic 流

* refactor(tray): 缩短速率宽度

* refactor(tray): 收敛测速流抽象并修正停止清理时序

* docs(changelog): 更新变更日志

* refactor(tray): simplify speed formatting logic and remove redundant functions

* refactor(tray): optimize speed display logic and reduce redundant attribute initialization

* refactor(tray): enhance traffic event parsing and improve stale event handling

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
2026-04-09 14:40:32 +00:00
Tunglies 3aa39bff94 refactor: fix startup init chain — resolve_done semantics, dedupe events, cleanup
Backend:
- Move resolve_done() from sync setup() to async task after futures::join!
  so Timer waits for actual init completion instead of firing immediately
- Replace std::thread::sleep(50ms) with tokio::time::sleep in async context
- Remove duplicate refresh_tray_menu in tray_init (keep post-join call only)
- Delete dead code reset_resolve_done (process restarts, static is destroyed)
- Rename create_window(is_show) → create_window(should_create) for clarity

Frontend:
- Remove duplicate verge://refresh-clash-config listener from AppDataProvider
  (useLayoutEvents handles it via invalidateQueries — single consumer path)
- Stabilize useEffect deps with useRef for TQ refetch references
- Simplify AppDataProvider event listener setup (profile-changed + proxy only)
2026-04-06 12:20:16 +08:00
Tunglies ec82b69786 refactor: eliminate startup flicker — defer window show until overlay renders
- Remove Rust-side `eval(INITIAL_LOADING_OVERLAY)` that prematurely
  dismissed the overlay before React/MUI theme was ready
- Defer `window.show()` from Rust `activate_window` to an inline
  `<script>` in index.html, executed after the themed overlay is in DOM
- Remove `useAppInitialization` hook (duplicate of `useLoadingOverlay`
  with no themeReady gate)
- Simplify overlay to pure theme-colored background — no spinner or
  loading text — so fast startup feels instant
- Simplify `hideInitialOverlay` API and reduce overlay fade to 0.2s
- Clean up unused CSS variables (spinner-track, spinner-top, etc.)
2026-04-06 01:53:40 +08:00
Tunglies 04ce3d1772 refactor: remove unused UI notification functions and streamline initialization logic 2026-04-06 01:14:42 +08:00
Tunglies 830c0773dc refactor: migrate backoff crate to backon (#6718)
Replace backoff 0.4.0 with backon 1.6.0 for retry logic.
2026-04-03 13:21:04 +00:00
git-sac 7b7dc79c74 fix: decode percent-encoded username/password before building Basic Auth header (#6716)
URLs with percent-encoded characters in credentials (e.g. %40 for @) were
being double-encoded after Url::parse() + as_str() serialization, causing
the constructed Basic Auth header to contain the wrong credentials and
resulting in 401 Unauthorized errors.
2026-04-03 11:29:38 +00:00
wonfen 51578c03b0 fix: URL test url 2026-04-03 12:13:04 +08:00
wonfen b7ae5f0ac9 fix: handle edge cases and add missing i18n 2026-04-03 06:26:24 +08:00
wonfen 05fba11baa feat: auto-download updates in background and install on next launch
(cherry picked from commit 2f7c1b85f25e80b86233798a75e133b72a8101bb)
2026-04-03 05:54:18 +08:00
F-seeeye 0980a891a7 fix(proxy): avoid reporting requested state when system proxy toggle fails (#6699) 2026-04-02 13:34:47 +00:00
Tunglies 3714f0c4c8 feat: update clash_verge_service_ipc version to 2.2.0 2026-04-01 00:40:35 +08:00
wysha-objectandTunglies b7230967b4 feat: show detailed results in hotkey notifications (#6639)
* feat: show detailed results in hotkey notifications

* fix: Japanese locale appears to have a truncated translation key label

* fix: variable naming

* Update documentation to English

* Remove unnecessary mut

* feat: enhance system proxy notifications with toggle state

* chore: update changelog to include new shortcut notification feature

* fix: remove unnecessary quotes from system proxy toggle messages in localization files

* fix: tun mode toggled hotkey notifications

* fix: correct toggle_tun_mode logic to handle current state and errors

---------

Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
2026-03-30 17:06:45 +00:00
wonfen 56291d3d91 chore: replace update URL 2026-03-30 12:01:05 +08:00
Tunglies 857392de8a fix(merge): optimize key handling in deep_merge function 2026-03-28 02:37:59 +08:00
Tunglies 4ee6402e29 fix(timer): improve delay timer handling during task execution 2026-03-28 01:45:02 +08:00
Tunglies add2c1036b fix(profile): refresh timer after profile deletion to ensure state consistency 2026-03-28 01:40:39 +08:00
Tunglies c8f737d44e chore!(deps): update sysproxy dependency to version 0.5.3 2026-03-28 01:03:56 +08:00
Tunglies ca8e350694 fix(proxy): resolve system proxy toggle stuck and state desync (#6614) (#6657)
* fix(proxy): resolve system proxy toggle stuck and state desync (#6614)

Backend: replace hand-rolled AtomicBool lock in update_sysproxy() with
tokio::sync::Mutex so concurrent calls wait instead of being silently
dropped, ensuring the latest config is always applied.

Move blocking OS calls (networksetup on macOS) to spawn_blocking so
they no longer stall the tokio worker thread pool.

Frontend: release SwitchRow pendingRef in .finally() so the UI always
re-syncs with the actual OS proxy state, and rollback checked on error.

Closes #6614

* fix(changelog): add note for macOS proxy toggle freeze issue
2026-03-27 15:40:03 +00:00
Nemu-x 762a400915 feat(installer): add Russian language to Windows installer (#6643)
* feat(installer): add Russian language to Windows installer

* feat(installer): add Russian to WebView2 installer configs
2026-03-27 06:01:27 +00:00
Tunglies 670d7bae3b refactor(tray): deduplicate icon getters, update_icon, and menu+icon combo
- Consolidate 3 near-identical icon getter functions into load_icon/default_icon with IconKind enum
- Merge two platform-gated update_icon implementations into one
- Extract update_menu_and_icon to eliminate duplicate combo in feat/config.rs and feat/clash.rs
2026-03-23 22:37:09 +08:00
Tunglies 0932de9f6c fix(tray): sync tray state after all init tasks complete
Tray refresh ran in parallel with core init, so the tray could display
stale state when the core hadn't fully started yet.
2026-03-23 21:24:27 +08:00
Tunglies 77fa721119 fix(sysproxy): fully clear PAC when disabling system proxy (#6591) 2026-03-23 08:03:20 +00:00
renovate[bot]renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>Slinetrac
a49807b89c chore(deps): lock file maintenance (#6594)
* chore(deps): lock file maintenance

* chore: update Cargo.toml

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Slinetrac <realakayuki@gmail.com>
2026-03-23 04:01:31 +00:00