同步三端桥接模块分类文档

记录 HostBridge 模块分类门禁决策

补充宿主壳协议中的三端模块归属

补充 Expo 与 Tauri 壳方案中的扩展约束
This commit is contained in:
2026-06-21 20:41:19 +08:00
parent 198da27ef8
commit 2621ddc835
3 changed files with 11 additions and 0 deletions
@@ -3233,3 +3233,10 @@
- 2026-06-21 调整:Tauri 桌面能力流必须由根级 `desktop-shell:test` 保护,且每个 `desktopCapabilityFlowContracts` 条目至少关联一个带 Rust 单测的真实桌面壳模块;新增桌面 capability 时不能只登记 dispatch / 配置片段而没有 Rust 单元测试覆盖。
- 影响范围:`packages/shared/src/contracts/hostBridge.ts`、`apps/mobile-shell/src/host-bridge/`、`apps/mobile-shell/src/shell/`、`apps/desktop-shell/src-tauri/src/host_bridge/`、`apps/desktop-shell/src-tauri/src/shell/`、`scripts/check-native-shells.mjs`。
- 验证方式:`npm run check:native-shells`、`npm run typecheck`、`npm run check:encoding`、`git diff --check`。
## 2026-06-21 三端 HostBridge 模块必须先分类再扩展
- 背景:微信小程序壳、Expo 移动壳和 Tauri 桌面壳已经按相近目录结构拆出桥接层,但同名能力并不总是三端共享;如果后续只靠文件清单约束,新增模块可能在某一端随意落点,破坏“三端尽量一致、端专属能力明确隔离”的管理目标。
- 决策:`scripts/check-native-shells.mjs` 必须把 HostBridge 模块分成三端共同、Expo / Tauri 原生 App 共同、移动端专属、桌面端专属和微信端专属五类,并从现有文件清单反推实际分类。新增、拆分或迁移桥接模块时,必须先更新分类归属,再同步目录清单、文档和能力流证据。
- 影响范围:`miniprogram/host-bridge/`、`apps/mobile-shell/src/host-bridge/`、`apps/desktop-shell/src-tauri/src/host_bridge/`、`scripts/check-native-shells.mjs`、宿主壳能力统一协议文档、Expo / Tauri HostBridge 方案文档。
- 验证方式:`npm run check:native-shells`、`npm run check:encoding`、`git diff --check`。
File diff suppressed because one or more lines are too long
@@ -41,6 +41,8 @@ AI H5 sandbox
当前 `npm run check:native-shells` 锁定的生产文件清单以本文后续“结构门禁按完整相对路径反查文档和目录”段落为唯一文档口径;不要再维护只含文件名的短清单,避免测试文件、`file_payloads.rs` 或新增宿主脚本登记发生文档漂移。
`npm run check:native-shells` 还会按桥接模块语义分类三端结构:`dispatch` 和 `protocol` 必须同时存在于微信、移动和桌面壳;`appearance`、`badge`、`capabilities`、`clipboard`、`file-payloads`、`files`、`navigation`、`network`、`notifications`、`runtime`、`share` 是 Expo / Tauri 原生 App 壳共同模块;`bridge`、`haptics`、`scanner` 只属于移动壳,`mod`、`title` 只属于桌面壳,`payment`、`shareGrid`、`subscribeMessage`、`webView` 只属于微信壳。新增、拆分或迁移 HostBridge 模块时必须先在该分类中明确归属,再同步目录清单和能力流证据。
生产替身词扫描只覆盖上述壳源码、分发配置、共享 HostBridge 契约和已接入真实宿主能力的 H5 调用链;Expo export、Tauri `target/`、Cargo / Metro 缓存和 release 构建产物不进入扫描范围,避免本地或 CI 生成文件污染源码门禁。
声明为宿主请求能力的 desktop capability 必须在 `apps/desktop-shell/src-tauri/src/host_bridge/dispatch.rs` 命中真实模块委托,不能只由 `unsupported_method`、`unsupported_capability` 或 fallback 分支支撑;`apps/desktop-shell/scripts/check-config.mjs` 负责反查声明能力与委托函数的对应关系。H5 内置玩法如果通过 `navigation.openNativePage` 打开受控原生壳路由,也必须在 `scripts/check-native-shells.mjs` 登记 route flow、H5 fallback、路由表和命名交互测试,避免新增内置入口只停留在普通 Web 跳转。