收紧桌面壳事件注册失败处理

桌面壳新窗口策略增加可测试决策函数

桌面壳 WebView 事件注册失败改为启动阻断或日志记录

桌面壳配置门禁禁止事件注册静默吞错

宿主壳协议和共享决策记录补充事件注册失败规则
This commit is contained in:
2026-06-20 05:27:02 +08:00
parent 6c0d929e91
commit 73ea93ccc8
6 changed files with 122 additions and 14 deletions
@@ -2851,3 +2851,10 @@
- 决策:`apps/desktop-shell/src-tauri/src/host_bridge/badge.rs``apps/desktop-shell/src-tauri/src/host_bridge/notifications.rs` 统一返回 `HostBridgeResponse`,各自承接 payload 校验、系统调用、成功响应和失败响应映射;`dispatch.rs` 只保留 method 委托。桌面壳配置检查会拒绝 `dispatch.rs` 重新对这两个 method 做 `match` 或包装 `ok(true)`
- 影响范围:`apps/desktop-shell/src-tauri/src/host_bridge/badge.rs``apps/desktop-shell/src-tauri/src/host_bridge/notifications.rs``apps/desktop-shell/src-tauri/src/host_bridge/dispatch.rs``apps/desktop-shell/scripts/check-config.mjs``docs/project-memory/shared-memory/decision-log.md`
- 验证方式:`npm run desktop-shell:typecheck``npm run desktop-shell:test``npm run check:native-shells``npm run check:encoding``git diff --check`
## 2026-06-20 桌面壳 HostBridge 事件注册失败不可静默
- 背景:Tauri 桌面壳已经声明 `host.events``app.lifecycle``network.statusChanged``navigation.canGoBack`,H5 会据此订阅生命周期、网络和返回栈事件;如果 WebView 事件脚本注册失败仍被静默忽略,H5 会误以为宿主能力可用。
- 决策:桌面壳启动阶段安装 `network.statusChanged``navigation.canGoBack` 脚本失败时直接阻断启动;生命周期首发和页面加载重放阶段的 `app.lifecycle``network.statusChanged``navigation.canGoBack` 失败必须通过统一 helper 记录日志,不允许 `let _ = register_desktop_*``let _ = emit_current_*` 静默吞错。配置检查反查该错误处理路径。
- 影响范围:`apps/desktop-shell/src-tauri/src/app.rs``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``npm run check:native-shells``npm run check:encoding``git diff --check`