From 6eaf999240607608e56ca20c7d2f2464194ab548 Mon Sep 17 00:00:00 2001 From: Tunglies <77394545+Tunglies@users.noreply.github.com> Date: Wed, 5 Nov 2025 22:58:05 +0800 Subject: [PATCH 1/3] refactor: optimize worker loop to use try_recv for non-blocking event processing #5318 --- src-tauri/src/core/notification.rs | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src-tauri/src/core/notification.rs b/src-tauri/src/core/notification.rs index 071bcedb..50968bec 100644 --- a/src-tauri/src/core/notification.rs +++ b/src-tauri/src/core/notification.rs @@ -1,3 +1,4 @@ +use super::handle::Handle; use crate::{ constants::{retry, timing}, logging, @@ -91,22 +92,12 @@ impl NotificationSystem { } fn worker_loop(rx: mpsc::Receiver) { - use super::handle::Handle; - let handle = Handle::global(); - while !handle.is_exiting() { - match rx.recv() { + match rx.try_recv() { Ok(event) => Self::process_event(handle, event), - Err(e) => { - logging!( - error, - Type::System, - "receive event error, stop notification worker: {}", - e - ); - break; - } + Err(mpsc::TryRecvError::Disconnected) => break, + Err(mpsc::TryRecvError::Empty) => break, } } } From 21de5cbb0b507e04599b20730feb1ecf1ce65e19 Mon Sep 17 00:00:00 2001 From: Tunglies <77394545+Tunglies@users.noreply.github.com> Date: Thu, 6 Nov 2025 00:30:43 +0800 Subject: [PATCH 2/3] refactor: remove unnecessary emit calls in switch_proxy_node and enhance profile switch notifications --- src-tauri/src/feat/profile.rs | 2 - src-tauri/src/utils/resolve/scheme.rs | 120 ++++++++++++++++---------- 2 files changed, 75 insertions(+), 47 deletions(-) diff --git a/src-tauri/src/feat/profile.rs b/src-tauri/src/feat/profile.rs index 28e91893..ff4e4292 100644 --- a/src-tauri/src/feat/profile.rs +++ b/src-tauri/src/feat/profile.rs @@ -60,7 +60,6 @@ pub async fn switch_proxy_node(group_name: &str, proxy_name: &str) { group_name, proxy_name ); - let _ = handle::Handle::app_handle().emit("verge://force-refresh-proxies", ()); let _ = tray::Tray::global().update_menu().await; } Err(err) => { @@ -72,7 +71,6 @@ pub async fn switch_proxy_node(group_name: &str, proxy_name: &str) { proxy_name, err ); - let _ = handle::Handle::app_handle().emit("verge://force-refresh-proxies", ()); } } } diff --git a/src-tauri/src/utils/resolve/scheme.rs b/src-tauri/src/utils/resolve/scheme.rs index 04659ab3..109fd14d 100644 --- a/src-tauri/src/utils/resolve/scheme.rs +++ b/src-tauri/src/utils/resolve/scheme.rs @@ -4,9 +4,9 @@ use smartstring::alias::String; use tauri::Url; use crate::{ - config::{PrfItem, profiles}, + config::{Config, PrfItem, profiles}, core::handle, - logging, logging_error, + logging, utils::logging::Type, }; @@ -29,57 +29,87 @@ pub(super) async fn resolve_scheme(param: &str) -> Result<()> { } }; - if link_parsed.scheme() == "clash" || link_parsed.scheme() == "clash-verge" { - let name_owned: Option = link_parsed - .query_pairs() - .find(|(key, _)| key == "name") - .map(|(_, value)| value.into_owned().into()); - let name = name_owned.as_ref(); + let (url_param, name) = + if link_parsed.scheme() == "clash" || link_parsed.scheme() == "clash-verge" { + let name_owned: Option = link_parsed + .query_pairs() + .find(|(key, _)| key == "name") + .map(|(_, value)| value.into_owned().into()); + let name = name_owned.to_owned(); - let url_param = if let Some(query) = link_parsed.query() { - let prefix = "url="; - if let Some(pos) = query.find(prefix) { - let raw_url = &query[pos + prefix.len()..]; - Some(percent_decode_str(raw_url).decode_utf8_lossy().to_string()) + let url_param = if let Some(query) = link_parsed.query() { + let prefix = "url="; + if let Some(pos) = query.find(prefix) { + let raw_url = &query[pos + prefix.len()..]; + Some(percent_decode_str(raw_url).decode_utf8_lossy().to_string()) + } else { + None + } } else { None - } + }; + (url_param, name) } else { - None + (None, None) }; - match url_param { - Some(ref url) => { - logging!(info, Type::Config, "decoded subscription url: {url}"); - match PrfItem::from_url(url.as_ref(), name, None, None).await { - Ok(mut item) => { - let uid = match item.uid.clone() { - Some(uid) => uid, - None => { - logging!(error, Type::Config, "Profile item missing UID"); - handle::Handle::notice_message( - "import_sub_url::error", - "Profile item missing UID".to_string(), - ); - return Ok(()); - } - }; - let result = profiles::profiles_append_item_safe(&mut item).await; - logging_error!( - Type::Config, - "failed to import subscription url: {:?}", - result - ); - handle::Handle::notice_message("import_sub_url::ok", uid); - } - Err(e) => { - handle::Handle::notice_message("import_sub_url::error", e.to_string()); - } - } - } - None => bail!("failed to get profile url"), + let url = if let Some(ref url) = url_param { + url + } else { + logging!( + error, + Type::Config, + "missing url parameter in deep link: {}", + param_str + ); + return Ok(()); + }; + + let mut item = match PrfItem::from_url(url, name.as_ref(), None, None).await { + Ok(item) => item, + Err(e) => { + logging!( + error, + Type::Config, + "failed to parse profile from url: {:?}", + e + ); + // TODO 通知系统疑似损坏,前端无法显示通知事件 + handle::Handle::notice_message("import_sub_url::error", e.to_string()); + return Ok(()); + } + }; + + let uid = item.uid.clone().unwrap_or_default(); + // TODO 通过 deep link 导入后需要正确调用前端刷新订阅页面,以及通知结果 + match profiles::profiles_append_item_safe(&mut item).await { + Ok(_) => { + Config::profiles().await.apply(); + let _ = Config::profiles().await.data_arc().save_file().await; + // TODO 通知系统疑似损坏,前端无法显示通知事件 + handle::Handle::notice_message( + "import_sub_url::ok", + item.uid.clone().unwrap_or_default(), + ); + // TODO fuck me this shit is fucking broken as fucked + handle::Handle::notify_profile_changed(uid); + } + Err(e) => { + logging!( + error, + Type::Config, + "failed to import subscription url: {:?}", + e + ); + Config::profiles().await.discard(); + // TODO 通知系统疑似损坏,前端无法显示通知事件 + handle::Handle::notice_message("import_sub_url::error", e.to_string()); + return Ok(()); } } + handle::Handle::refresh_verge(); + handle::Handle::refresh_clash(); + Ok(()) } From ccffc0a4fa2dc5c223164965701794a9234267ad Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 6 Nov 2025 09:36:30 +0800 Subject: [PATCH 3/3] chore(deps): update npm dependencies (#5321) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 4 +-- pnpm-lock.yaml | 76 +++++++++++++++++++++++++------------------------- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/package.json b/package.json index f9cfcbc6..0a2261c6 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@mui/icons-material": "^7.3.5", "@mui/lab": "7.0.0-beta.17", "@mui/material": "^7.3.5", - "@mui/x-data-grid": "^8.16.0", + "@mui/x-data-grid": "^8.17.0", "@tauri-apps/api": "2.9.0", "@tauri-apps/plugin-clipboard-manager": "^2.3.2", "@tauri-apps/plugin-dialog": "^2.4.2", @@ -112,7 +112,7 @@ "prettier": "^3.6.2", "sass": "^1.93.3", "tar": "^7.5.2", - "terser": "^5.44.0", + "terser": "^5.44.1", "typescript": "^5.9.3", "typescript-eslint": "^8.46.3", "vite": "^7.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cd5dae09..ac86b7bd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,8 +36,8 @@ importers: specifier: ^7.3.5 version: 7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@mui/x-data-grid': - specifier: ^8.16.0 - version: 8.16.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mui/system@7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^8.17.0 + version: 8.17.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mui/system@7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@tauri-apps/api': specifier: 2.9.0 version: 2.9.0 @@ -164,10 +164,10 @@ importers: version: 19.2.2(@types/react@19.2.2) '@vitejs/plugin-legacy': specifier: ^7.2.1 - version: 7.2.1(terser@5.44.0)(vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.0)(yaml@2.8.1)) + version: 7.2.1(terser@5.44.1)(vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1)) '@vitejs/plugin-react-swc': specifier: ^4.2.1 - version: 4.2.1(vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.0)(yaml@2.8.1)) + version: 4.2.1(vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1)) adm-zip: specifier: ^0.5.16 version: 0.5.16 @@ -238,8 +238,8 @@ importers: specifier: ^7.5.2 version: 7.5.2 terser: - specifier: ^5.44.0 - version: 5.44.0 + specifier: ^5.44.1 + version: 5.44.1 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -248,16 +248,16 @@ importers: version: 8.46.3(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) vite: specifier: ^7.2.0 - version: 7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.0)(yaml@2.8.1) + version: 7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1) vite-plugin-monaco-editor-esm: specifier: ^2.0.2 version: 2.0.2(monaco-editor@0.54.0) vite-plugin-svgr: specifier: ^4.5.0 - version: 4.5.0(rollup@4.46.2)(typescript@5.9.3)(vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.0)(yaml@2.8.1)) + version: 4.5.0(rollup@4.46.2)(typescript@5.9.3)(vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1)) vitest: specifier: ^4.0.7 - version: 4.0.7(@types/debug@4.1.12)(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.0)(yaml@2.8.1) + version: 4.0.7(@types/debug@4.1.12)(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1) packages: @@ -1239,8 +1239,8 @@ packages: '@types/react': optional: true - '@mui/x-data-grid@8.16.0': - resolution: {integrity: sha512-yJ+v+E1yI1HxrEUdOfgrUTCxobAFvotGggU6cy6MnM7c7/TPPg9d5mDzjzxb0imOCJ6WyiM/vtd5WKbY/5sUNw==} + '@mui/x-data-grid@8.17.0': + resolution: {integrity: sha512-eIzYM700Er5AKGS7T9NxQfpFNGpGP0NYpJ6RiQWSv904CkzAY0mbMZ6/XKldavbhSwzHVUfv37GK9mFeUl7I5g==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 @@ -1255,14 +1255,14 @@ packages: '@emotion/styled': optional: true - '@mui/x-internals@8.16.0': - resolution: {integrity: sha512-JR53WOFqmQYQzurOpB0H91K7/9uMcte1ooxHxTLGB+97PgB+rKY6siRWvUALGS56XyPV+1a2ALI33hd2E7+Rgg==} + '@mui/x-internals@8.17.0': + resolution: {integrity: sha512-KvmR0PPX1j2i44y0DXwzs45jIPMu/YZYXYy7xvzo+ZNdYebbW5LbVeG4zdEUnKHyOG02oHdI7MM9AxcZE16TBw==} engines: {node: '>=14.0.0'} peerDependencies: react: ^17.0.0 || ^18.0.0 || ^19.0.0 - '@mui/x-virtualizer@0.2.6': - resolution: {integrity: sha512-t45EHhD9kStSwIYMkqYYQIFbZNVQws9LRANktf0e/+j+MxsRTFk41r0rgiazMSOSugJlCuSh/H8xUUuMCZdtow==} + '@mui/x-virtualizer@0.2.7': + resolution: {integrity: sha512-xcdo+lvlfwuLE2FVAQtOEg078liB/aiVGjEuiyPv02Vzp8Y50qNH0EtV9lk/E/d/lbkkMGnapnk+JFT5HlUB0w==} engines: {node: '>=14.0.0'} peerDependencies: react: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -3976,8 +3976,8 @@ packages: resolution: {tarball: https://codeload.github.com/clash-verge-rev/tauri-plugin-mihomo/tar.gz/dcb6b5a6753233422e7cea23042239c7994c605c} version: 0.1.0 - terser@5.44.0: - resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} + terser@5.44.1: + resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} engines: {node: '>=10'} hasBin: true @@ -5481,14 +5481,14 @@ snapshots: optionalDependencies: '@types/react': 19.2.2 - '@mui/x-data-grid@8.16.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mui/system@7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@mui/x-data-grid@8.17.0(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mui/system@7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@babel/runtime': 7.28.4 '@mui/material': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@mui/system': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) '@mui/utils': 7.3.5(@types/react@19.2.2)(react@19.2.0) - '@mui/x-internals': 8.16.0(@types/react@19.2.2)(react@19.2.0) - '@mui/x-virtualizer': 0.2.6(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@mui/x-internals': 8.17.0(@types/react@19.2.2)(react@19.2.0) + '@mui/x-virtualizer': 0.2.7(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) clsx: 2.1.1 prop-types: 15.8.1 react: 19.2.0 @@ -5500,7 +5500,7 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mui/x-internals@8.16.0(@types/react@19.2.2)(react@19.2.0)': + '@mui/x-internals@8.17.0(@types/react@19.2.2)(react@19.2.0)': dependencies: '@babel/runtime': 7.28.4 '@mui/utils': 7.3.5(@types/react@19.2.2)(react@19.2.0) @@ -5510,11 +5510,11 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mui/x-virtualizer@0.2.6(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@mui/x-virtualizer@0.2.7(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@babel/runtime': 7.28.4 '@mui/utils': 7.3.5(@types/react@19.2.2)(react@19.2.0) - '@mui/x-internals': 8.16.0(@types/react@19.2.2)(react@19.2.0) + '@mui/x-internals': 8.17.0(@types/react@19.2.2)(react@19.2.0) react: 19.2.0 react-dom: 19.2.0(react@19.2.0) transitivePeerDependencies: @@ -6160,7 +6160,7 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-legacy@7.2.1(terser@5.44.0)(vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.0)(yaml@2.8.1))': + '@vitejs/plugin-legacy@7.2.1(terser@5.44.1)(vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.4) @@ -6174,16 +6174,16 @@ snapshots: magic-string: 0.30.19 regenerator-runtime: 0.14.1 systemjs: 6.15.1 - terser: 5.44.0 - vite: 7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.0)(yaml@2.8.1) + terser: 5.44.1 + vite: 7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react-swc@4.2.1(vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.0)(yaml@2.8.1))': + '@vitejs/plugin-react-swc@4.2.1(vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.46 '@swc/core': 1.14.0 - vite: 7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.0)(yaml@2.8.1) + vite: 7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1) transitivePeerDependencies: - '@swc/helpers' @@ -6196,13 +6196,13 @@ snapshots: chai: 6.2.0 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.7(vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.0)(yaml@2.8.1))': + '@vitest/mocker@4.0.7(vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))': dependencies: '@vitest/spy': 4.0.7 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.0)(yaml@2.8.1) + vite: 7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1) '@vitest/pretty-format@4.0.7': dependencies: @@ -8620,7 +8620,7 @@ snapshots: dependencies: '@tauri-apps/api': 2.9.0 - terser@5.44.0: + terser@5.44.1: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.15.0 @@ -8844,18 +8844,18 @@ snapshots: dependencies: monaco-editor: 0.54.0 - vite-plugin-svgr@4.5.0(rollup@4.46.2)(typescript@5.9.3)(vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.0)(yaml@2.8.1)): + vite-plugin-svgr@4.5.0(rollup@4.46.2)(typescript@5.9.3)(vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1)): dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.46.2) '@svgr/core': 8.1.0(typescript@5.9.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.9.3)) - vite: 7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.0)(yaml@2.8.1) + vite: 7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1) transitivePeerDependencies: - rollup - supports-color - typescript - vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.0)(yaml@2.8.1): + vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1): dependencies: esbuild: 0.25.4 fdir: 6.5.0(picomatch@4.0.3) @@ -8868,13 +8868,13 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 sass: 1.93.3 - terser: 5.44.0 + terser: 5.44.1 yaml: 2.8.1 - vitest@4.0.7(@types/debug@4.1.12)(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.0)(yaml@2.8.1): + vitest@4.0.7(@types/debug@4.1.12)(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1): dependencies: '@vitest/expect': 4.0.7 - '@vitest/mocker': 4.0.7(vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.0)(yaml@2.8.1)) + '@vitest/mocker': 4.0.7(vite@7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1)) '@vitest/pretty-format': 4.0.7 '@vitest/runner': 4.0.7 '@vitest/snapshot': 4.0.7 @@ -8891,7 +8891,7 @@ snapshots: tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.0)(yaml@2.8.1) + vite: 7.2.0(@types/node@24.10.0)(jiti@2.6.1)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12