Commit Graph
602 Commits
Author SHA1 Message Date
wonfen 4b04d035b6 fix(profile): schedule imported profiles for auto-update 2026-07-19 06:39:48 +08:00
Ming 7e3544cbcc fix(macos): repair menu bar window activation order (#7082) 2026-07-09 05:59:11 +00:00
StarsSail 0407384557 fix: rust lint error (#7424) 2026-07-06 00:19:58 +00:00
wonfen b3f07acb5b fix: limit mihomo yaml wildcard quoting to fake-ip-filter 2026-07-06 06:49:43 +08:00
StarsSail 3da6d7e466 fix: quote wildcard array items in global extension script output (#7414) 2026-07-04 18:20:37 +00:00
wonfen 4fa2f9a329 fix(macos): recover webview and stop ws leak after render process terminate 2026-07-04 09:39:44 +08:00
GrainFull 1f76c67afb fix: recover webview lazily and stop ws leak after render process ter… (#7410)
* fix: recover webview lazily and stop ws leak after render process termination

macOS 内存压力下 WKWebView 渲染进程可能被系统杀掉,导致:
1. 从托盘打开主窗口时白屏;
2. 前端无法清理 Mihomo WebSocket 订阅,孤儿订阅持续将 >1KB 的
   payload 写入 tauri ChannelDataIpcQueue 且无人取走,主进程内存
   以 ~150MB/h 持续增长。

注册 on_web_content_process_terminate 钩子:
- 立即清理全部 Mihomo WebSocket 订阅阻断泄漏(托盘速率任务会自动重连);
- 窗口可见时立即 reload 拉起渲染进程恢复页面;窗口隐藏/最小化时仅置位
  待重载标记,等用户下次打开窗口时再 reload——系统正是因内存压力才杀掉
  不可见窗口的渲染进程,立即重建既浪费内存也可能形成反复被杀的循环。

另修复 tray_event 配置为 tray_menu 时误报 invalid tray event 警告。

* fix: gate logging import to macos to satisfy clippy on other platforms
2026-07-04 00:21:03 +00:00
wonfen 336bd9d735 fix(enhance): protect app-owned config from manual overrides 2026-07-04 07:45:13 +08:00
Tunglies a862667d9b fix: defer setup resources until after first window 2026-06-30 12:53:21 +08:00
Tunglies 2a5d29cdb2 fix: defer runtime config init until after window 2026-06-29 05:19:38 +08:00
wonfen 294955cb8c feat: add fake-ip-range6 2026-06-28 13:08:55 +08:00
StarsSail 16e15ed9d4 fix: improve hide_main_window logic when hotkey pressed (#7322) 2026-06-27 23:50:36 +00:00
57b891215e fix: restore default size for collapsed window state (#7215)
Co-authored-by: puneetdixit200 <236133619+puneetdixit200@users.noreply.github.com>
Co-authored-by: wonfen <96291150+wonfen@users.noreply.github.com>
2026-06-18 13:23:02 +08:00
Tunglies 55ce7bffe4 refactor: avoid embed server clone 2026-06-13 19:51:14 +08:00
Tunglies 2ddd95cf40 refactor(macos): avoid speed text clone 2026-06-13 19:48:49 +08:00
oomeowandTunglies ee7f66f49c fix(macOS): early setup macOS activation policy (#7246)
* fix(macOS): early setup of macOS activation policy

* refactor

---------

Co-authored-by: Tunglies <77394545+Tunglies@users.noreply.github.com>
2026-06-09 05:32:47 +00:00
Tunglies fa27d3eae5 Revert "feat(cvd): add device-bound subscription protocol"
This reverts commit 2cb9c13ab6.
2026-06-02 21:02:19 +08:00
wonfen 2cb9c13ab6 feat(cvd): add device-bound subscription protocol 2026-06-02 13:43:54 +08:00
Tunglies 6e6c537e6b refactor service manager locking 2026-05-28 23:22:56 +08:00
Tunglies dc094033b8 Revert "refactor: remove subscription TLS roots fallback"
This reverts commit 746279fa03.
2026-05-28 02:42:13 +08:00
Tunglies 761209bbbc refactor: backend (#7102)
* refactor(tray): move tray log opening to utils helper

* refactor(enhance): move owned config through pipeline

* refactor(enhance): move sequence values in use_seq

* refactor(enhance): move values while sorting fields

* refactor(enhance): move values when lowercasing owned config

* refactor(backend): move owned config values in utilities

* refactor(tray): borrow hotkey accelerators

* refactor(core): borrow proxy config strings

* fix(backend): preserve config patch semantics

* refactor(enhance): clarify config transform names
2026-05-26 10:47:03 +00:00
Tunglies c7cdc62512 chore: bump dependencies
Bump tauri-plugin-mihomo to 0.5.0 and update frontend dependency locks.

Adapt the traffic websocket stream parser to the new raw text byte callback API.
2026-05-26 13:30:37 +08:00
Tunglies 746279fa03 refactor: remove subscription TLS roots fallback 2026-05-26 00:23:55 +08:00
Tunglies e2d14a5ea7 fix: support empty basic auth passwords 2026-05-25 23:12:44 +08:00
Tunglies ec9ef0f85e fix: report legacy TLS subscription failures 2026-05-25 22:22:24 +08:00
Tunglies c18c23963d refactor: frontend (#7097)
* refactor: remove unused window show/hide event listeners

* refactor: deduplicate profile-changed event handling

* refactor: remove unused setupCloseListener from use-listen

* refactor: remove unused removeAllListeners from use-listen

* fix(backend): dedupe profile changed notification on import

* fix: avoid duplicate timer update completed event

* refactor(frontend): simplify proxy switch fallback path
2026-05-23 12:52:52 +08:00
Tunglies 32029af0f9 refactor: improve tray speed rendering logic and attributes handling 2026-05-22 21:47:59 +08:00
Tunglies 8efbf9e7fd fix: clippy errors for rust 1.97 2026-05-21 12:48:48 +08:00
Tunglies c7a989b484 fix(macOS): improve tray speed rendering attributes 2026-05-21 12:41:51 +08:00
AetherWing bdbc617aff fix: disable WebView2 general autofill (#7062) 2026-05-21 04:01:31 +00:00
Christine. 6ebdaaa7ff fix: switch node slowly on Windows (#7052) 2026-05-20 14:21:24 +08:00
Tunglies edf5246e7f fix: mask subscription URLs in backend logs 2026-05-17 13:13:16 +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 3956b0d034 fix(tray): include macOS speed text in click target 2026-05-09 02:32:27 +08:00
wonfen 2056930f9f fix: preserve reqwest error chain for TLS fallback detection 2026-05-01 20:49:34 +08: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 e6a88cf9c9 refactor: improve service manager initialization by reducing lock duration 2026-04-12 11:15:34 +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
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 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
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
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