From 2e72d81c6810292d2ee18c0d414165e279f9753e Mon Sep 17 00:00:00 2001 From: Ivan Hanloth Date: Wed, 29 Jul 2026 17:29:24 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E9=BC=A0=E6=A0=87?= =?UTF-8?q?=E7=9B=91=E6=8E=A7=E6=B6=88=E6=81=AF=E5=BE=AA=E7=8E=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/config/src-tauri/src/lib.rs | 2 - apps/config/src-tauri/src/verhub.rs | 4 +- apps/config/ui/src/App.svelte | 4 +- .../ui/src/components/DataNoticeModal.svelte | 2 +- apps/config/ui/src/components/Markdown.svelte | 3 +- .../ui/src/components/UpdateModal.svelte | 5 +- apps/config/ui/src/lib/license.js | 1 - apps/config/ui/src/lib/pointer.js | 2 +- apps/config/ui/src/lib/state.svelte.js | 8 +- crates/common/src/config.rs | 12 +- crates/common/src/paths.rs | 19 +- crates/core/src/agent.rs | 78 ++--- crates/core/src/effects.rs | 6 +- crates/core/src/freeze.rs | 10 +- crates/core/src/hide.rs | 77 ++--- crates/core/src/i18n.rs | 1 - crates/core/src/icon.rs | 4 +- crates/core/src/input_hooks.rs | 272 ++++++++++++++++++ crates/core/src/keyboard_hook.rs | 4 +- crates/core/src/lib.rs | 1 + crates/core/src/logging.rs | 5 +- crates/core/src/mouse_hook.rs | 71 ++++- crates/core/src/shell.rs | 10 +- crates/core/src/tray_badge.rs | 9 +- crates/core/src/util.rs | 5 +- docs/dev/architecture.md | 9 + docs/en/dev/architecture.md | 9 + docs/zh-tw/dev/architecture.md | 9 + 28 files changed, 478 insertions(+), 164 deletions(-) create mode 100644 crates/core/src/input_hooks.rs diff --git a/apps/config/src-tauri/src/lib.rs b/apps/config/src-tauri/src/lib.rs index 244d407..0583030 100644 --- a/apps/config/src-tauri/src/lib.rs +++ b/apps/config/src-tauri/src/lib.rs @@ -481,7 +481,6 @@ async fn verhub_announcements(limit: u32) -> Result, S .map_err(|e| e.to_string()) } -/// `contact` 可空——留了才好回复用户。 #[tauri::command] async fn verhub_submit_feedback( content: String, @@ -501,7 +500,6 @@ async fn verhub_submit_feedback( .map_err(|e| e.to_string()) } -/// 上报一段日志 #[tauri::command] async fn verhub_upload_log(content: String) -> Result<(), String> { let device_info = serde_json::json!({ diff --git a/apps/config/src-tauri/src/verhub.rs b/apps/config/src-tauri/src/verhub.rs index f9998e7..a382759 100644 --- a/apps/config/src-tauri/src/verhub.rs +++ b/apps/config/src-tauri/src/verhub.rs @@ -192,7 +192,7 @@ pub async fn upload_log(content: &str, device_info: serde_json::Value) -> Result Ok(()) } -/// 项目公开链接(主页 / 仓库 / 文档等)的缓存有效期。链接极少变动,一天刷新一次足够。 +/// 项目公开链接的缓存有效期。 const PROJECT_CACHE_TTL_SECS: i64 = 24 * 60 * 60; /// 项目公开链接。所有字段都可能缺省(Verhub 上未填写);前端须自备回退链接。 @@ -259,7 +259,7 @@ fn unix_now() -> i64 { } /// 项目公开链接:内存缓存 → 磁盘缓存(`cache_path`)→ Verhub API 逐级回退。 -/// API 拉取失败时退回过期缓存(有旧数据总比没有强),完全没有缓存才报错。 +/// API 拉取失败时退回过期缓存,完全没有缓存才报错。 pub async fn project_links(cache_path: &Path) -> Result { let now = unix_now(); if let Some(cached) = cache_get() diff --git a/apps/config/ui/src/App.svelte b/apps/config/ui/src/App.svelte index e31ac53..ce3a152 100644 --- a/apps/config/ui/src/App.svelte +++ b/apps/config/ui/src/App.svelte @@ -59,12 +59,12 @@ }); onMount(() => { - // 主题:main.js 已在挂载前应用过一次(免得启动屏配色跳变),这里只负责跟随系统变化。 + // main.js 已在挂载前应用过一次,这里只负责跟随系统变化。 const media = matchMedia("(prefers-color-scheme: dark)"); const onSystemTheme = () => applyTheme(loadPreference()); media.addEventListener("change", onSystemTheme); - // 配置到手、界面有内容可看了,才把启动屏淡掉;失败时也得淡掉,否则永远卡在启动屏。 + // 配置到手后才淡掉启动屏;失败时同样要淡掉,否则会一直卡住。 loadAll() .then(() => { autoSaveReady = true; diff --git a/apps/config/ui/src/components/DataNoticeModal.svelte b/apps/config/ui/src/components/DataNoticeModal.svelte index e749c95..6bc11b6 100644 --- a/apps/config/ui/src/components/DataNoticeModal.svelte +++ b/apps/config/ui/src/components/DataNoticeModal.svelte @@ -1,5 +1,5 @@