diff --git a/apps/desktop-shell/scripts/check-config.mjs b/apps/desktop-shell/scripts/check-config.mjs index 091032c66..ccaf2b317 100644 --- a/apps/desktop-shell/scripts/check-config.mjs +++ b/apps/desktop-shell/scripts/check-config.mjs @@ -3423,6 +3423,10 @@ if ( throw new Error('desktop deep-link diagnostics must not log plugin error details'); } +if (app.includes('desktop tray registration failed: {error}')) { + throw new Error('desktop tray registration diagnostics must not log Tauri error details'); +} + if ( desktopShellLifecycleSource.includes( 'desktop host event failed for app.lifecycle.{label}: {error}', diff --git a/apps/desktop-shell/src-tauri/src/app.rs b/apps/desktop-shell/src-tauri/src/app.rs index 1724e6310..126c99ed8 100644 --- a/apps/desktop-shell/src-tauri/src/app.rs +++ b/apps/desktop-shell/src-tauri/src/app.rs @@ -67,8 +67,8 @@ pub(crate) fn run() { register_desktop_app_menu(app)?; let tray_registered = match register_desktop_tray(app) { Ok(()) => true, - Err(error) => { - eprintln!("desktop tray registration failed: {error}"); + Err(_error) => { + eprintln!("desktop tray registration failed"); false } }; diff --git a/docs/project-memory/shared-memory/decision-log.md b/docs/project-memory/shared-memory/decision-log.md index 48aecdb17..a5c36676a 100644 --- a/docs/project-memory/shared-memory/decision-log.md +++ b/docs/project-memory/shared-memory/decision-log.md @@ -2942,6 +2942,7 @@ - 背景:桌面壳应用菜单、托盘菜单和单实例唤醒是生产用户恢复、刷新和导航主窗口的宿主入口;如果这些动作失败仍被 `let _ = ...` 静默忽略,用户会看到菜单、托盘或二次启动无反应且无法排查。 - 决策:应用菜单显示、后退、前进、刷新主窗口,托盘显示、刷新主窗口,以及单实例唤醒主窗口动作失败必须走统一桌面宿主事件日志;配置检查拒绝这些入口继续对主窗口动作使用 `let _ = ...` 静默吞错。 +- 2026-06-21 调整:托盘注册失败日志只记录 `desktop tray registration failed` 固定标签,不输出 Tauri tray 插件错误详情;配置检查拒绝重新拼接 `: {error}`。 - 影响范围:`apps/desktop-shell/src-tauri/src/app.rs`、`apps/desktop-shell/src-tauri/src/shell/menu.rs`、`apps/desktop-shell/src-tauri/src/shell/tray.rs`、`apps/desktop-shell/scripts/check-config.mjs`、宿主壳方案文档。 - 验证方式:`cargo test --manifest-path apps/desktop-shell/src-tauri/Cargo.toml`、`npm run desktop-shell:typecheck`、`npm run check:native-shells`、`npm run check:encoding`、`git diff --check`。 diff --git a/docs/【前端架构】ExpoReactNative与Tauri宿主壳方案-2026-06-17.md b/docs/【前端架构】ExpoReactNative与Tauri宿主壳方案-2026-06-17.md index f80804fc4..878435aec 100644 --- a/docs/【前端架构】ExpoReactNative与Tauri宿主壳方案-2026-06-17.md +++ b/docs/【前端架构】ExpoReactNative与Tauri宿主壳方案-2026-06-17.md @@ -214,6 +214,7 @@ Tauri 壳同样只负责桌面宿主能力,不承接玩法业务。 - 桌面深链只作为宿主启动 / 唤醒入口处理,不进入 HostBridge capability,也不把 deep-link 插件 command 授权给 H5。Tauri 只注册 `genarrative` scheme,并接受同源 `https://app.genarrative.world` URL;壳层会把目标路径归一为带 `native_app`、`tauri_desktop` 和真实 capability 清单的同源 H5 URL,外域、明文协议和危险协议直接丢弃。`navigation.openNativePage` 的同源主动跳转也必须复用同一宿主上下文补写逻辑,避免新页面按普通浏览器运行态启动。 - 桌面窗口状态持久化属于宿主壳自有体验,不进入 HostBridge capability,也不开放窗口状态插件 command 给 H5。Tauri 壳只保存主窗口大小、位置和最大化状态,不保存可见性、全屏或装饰状态,避免托盘隐藏窗口后下次启动被恢复成隐藏状态;`shell/window_state.rs` 必须保留 Rust 单测证明这组 flags 边界。 - 桌面壳外链打开、WebView 新窗口外链接管、托盘关闭前生命周期注入和窗口隐藏都属于用户可见宿主动作;这些动作失败必须走统一桌面宿主事件日志,配置检查拒绝 `let _ = ...` 静默吞错。 +- 桌面壳托盘注册失败只允许记录 `desktop tray registration failed` 固定标签,不把 Tauri tray 插件错误详情写入可分发桌面壳 stderr;托盘不可用时主窗口关闭仍按无托盘路径退出。 桌面 release 和 dev 模式: