收口桌面壳生命周期诊断日志

桌面壳生命周期事件失败只记录固定阶段标签

扩展桌面壳配置门禁禁止生命周期日志输出 Tauri 错误细节

补充宿主壳方案和共享决策中的生命周期诊断边界
This commit is contained in:
2026-06-21 02:35:24 +08:00
parent f262c69041
commit 6066a7be4f
4 changed files with 48 additions and 5 deletions
@@ -2976,6 +2976,7 @@
- 背景:Tauri 桌面壳 `app.lifecycle` 事件会驱动 H5 游戏循环、背景音乐和固定玩法音频暂停 / 恢复;如果 `is_visible()`、`is_minimized()` 或 `is_focused()` 读取失败后静默使用默认值,生命周期状态可能错误且难以排查。
- 决策:`emit_current_desktop_lifecycle_event(...)` 必须通过 `resolve_desktop_lifecycle_window_flag(...)` 读取窗口可见、最小化和焦点状态;读取失败时记录 `desktop host event failed for app.lifecycle.<field>`,再使用保守默认值。桌面壳配置检查拒绝重新出现 `window.is_visible().unwrap_or(...)`、`window.is_minimized().unwrap_or(...)` 或 `window.is_focused().unwrap_or(...)`。
- 2026-06-21 调整:生命周期窗口状态读取失败和 `app.lifecycle` / `navigation.canGoBack` 等桌面宿主事件注入失败只记录固定阶段标签,不把 Tauri 错误详情写入可分发桌面壳 stderr;配置检查拒绝生命周期日志重新输出 `: {error}` 详情。
- 影响范围:`apps/desktop-shell/src-tauri/src/shell/lifecycle.rs`、`apps/desktop-shell/scripts/check-config.mjs`。
- 验证方式:`cargo test --manifest-path apps/desktop-shell/src-tauri/Cargo.toml shell::lifecycle`、`npm run desktop-shell:typecheck`、`npm run check:native-shells`、`npm run check:encoding`、`git diff --check`。
@@ -443,7 +443,7 @@ GameBridge 禁止:
2026-06-18 追加:H5 账号状态刷新开始消费 `app.reloadWebView`。用户登录成功、退出登录、其它身份边界变化或登录状态异常页点击重新尝试时,`AuthGate` 会优先请求 Tauri 主 WebViewWindow 刷新;宿主未声明或刷新失败时再回退浏览器刷新,Tauri 仍只暴露 `host_bridge_request` 这一受控命令入口。
2026-06-18 追加:桌面壳 WebView 每次页面加载完成后都会回放当前 `app.lifecycle`,覆盖托盘刷新、`app.reloadWebView` 和 H5 自刷新后的新 JS 上下文。回放会读取主窗口当前 `is_visible()`、`is_minimized()` 和 `is_focused()`,隐藏或最小化状态下不得误报 active;生命周期事件仍只通过 HostBridge message 注入,不开放 Tauri event 插件或额外 command。2026-06-20 调整:桌面壳不再声明 `network.statusChanged`,直到网络变化事件能由 Rust 侧真实网络源统一驱动;H5 仍可按 `network.status` 主动查询桌面网络可达性。
2026-06-18 追加:桌面壳 WebView 每次页面加载完成后都会回放当前 `app.lifecycle`,覆盖托盘刷新、`app.reloadWebView` 和 H5 自刷新后的新 JS 上下文。回放会读取主窗口当前 `is_visible()`、`is_minimized()` 和 `is_focused()`,隐藏或最小化状态下不得误报 active;生命周期事件仍只通过 HostBridge message 注入,不开放 Tauri event 插件或额外 command。2026-06-20 调整:桌面壳不再声明 `network.statusChanged`,直到网络变化事件能由 Rust 侧真实网络源统一驱动;H5 仍可按 `network.status` 主动查询桌面网络可达性。2026-06-21 调整:生命周期窗口状态读取失败和生命周期 / 返回栈事件注入失败只记录 `desktop host event failed for app.lifecycle.<field>` 或对应事件固定标签,不把 Tauri 错误详情写入可分发桌面壳 stderr。
2026-06-18 追加:桌面壳启用 Tauri 真实系统托盘,并复用品牌图标。托盘菜单只提供宿主壳级动作:显示主窗口、刷新主窗口和退出应用;左键点击托盘图标恢复并聚焦主窗口。该能力不进入 HostBridge capability 清单,不向 H5 暴露托盘 API、菜单 API、shell API 或任意窗口控制;如果当前桌面环境无法注册托盘,壳会继续启动主窗口。托盘注册成功时,用户点击主窗口关闭按钮会先通过 `app.lifecycle` 注入 `background` / `hidden`,再隐藏到托盘,必须通过托盘“退出”动作结束应用;托盘恢复、应用菜单显示、单实例唤醒和 deep link 唤醒都会重新显示、取消最小化、聚焦主窗口并回放当前生命周期状态。托盘注册失败时不拦截关闭,避免窗口消失后没有恢复入口;托盘显示和刷新主窗口动作失败必须记录桌面宿主事件日志,不能静默吞错。