2.4 KiB
2.4 KiB
4-15 [done] task-006 compat host thinning 执行清单 v1
口径修正(2026-04-28):本文件的
done状态只表示本批可验证范围内的 compat host 收薄完成;不表示 compat host 已退为纯 debug/internal,也不表示TreeShellIframeHost的 JS DOM/state machine 已从默认真实流量删除。最终退场门禁以4-18-tree-final-dom-shell-cutover-hard-gate-v1.md为准;该硬门禁现已在同目录done/收口。
目标
把本批可验证范围内的 compat host 继续收薄:默认 3000 主路径不再请求 mnote-web:3104 proxy,不回退旧 React renderer,不再通过 __MNOTE_TREE_SHELL_OVERRIDE__ 注入第二份主路径 items;page/filetree/picker 的首屏 Rust initial DOM 与 rendererInput/state family 成为主路径合同。
当前边界
- 本任务不声称已经完成完整 Rust runtime / wasm 替换。
TreeShellIframeHost仍是 3000 主路径的 same-origin inline host;它的职责已收窄为挂载 srcDoc、postMessage transport、状态 patch 与 debug/internal fallback,而不是最终移除。- 3104
/tree只保留显式 debug/internal 验证边界,task112中 direct tree shell debug 已默认跳过。
执行项
- 主路径宿主边界:
- page/filetree/picker 在
rust_family下继续进入同源 iframe host,不回退旧 React renderer。 - 缺少
workspaceId时显示 renderer removed 占位,不恢复旧 React renderer。 - 3000 inline
srcDoc主路径使用state.items + rendererInput,不再依赖__MNOTE_TREE_SHELL_OVERRIDE__作为第二输入真相。
- page/filetree/picker 在
- 状态与事件收薄:
- sidebar refresh/sync 保持事件与语义 key,而不是引入新的树结构重建真相。
- file tree selection 只通过 renderer event snapshot 回宿主业务。
- page/filetree/picker smoke 继续覆盖主路径 iframe host 的导航、右键、双击打开、picker 搜索/选中与 stream fallback。
- 验证覆盖:
pnpm vitest run src/components/sidebar/tree-shell-surface.test.tsx src/components/sidebar/sidebar-events.test.ts src/components/sidebar/sidebar-sync.test.tsnode scripts/task112-tree-rust-family-regression-smoke.js
后续剩余
- 完整“compat host 退为 debug/internal fallback”仍需要真正 Rust runtime/wasm 或等价正式 renderer 承接运行时 DOM 与状态机;当前已把本批可验证主路径收薄记录为阶段完成。