Persist PageTree expand state via control-plane view-state and align chevron/DOM with restored expansion; keep Sidex-style shallow page-tree scan and drop the unused recursive scanner that only added cargo noise. Add password vault workbench routes/runtime/skill/CLI, split page_ai_pi into a module package, and retire Hermes/ACP/OpenHub recycle + root harness evidence from the index while gitignoring recycle and local diag dumps. Archive superseded design/bugs docs under old/, point architecture at ARCHITECTURE.md, and refresh smokes for Pi S1–S7, vault, and editor regressions so the working tree can stay clean.
2.7 KiB
2.7 KiB
[recycle] 4-12 [done] task-003 page tree final renderer 执行清单 v1
口径修正(2026-04-28):本文件的
done状态只表示 page tree 的 Rust initial DOM、hydration patch 与 state-family 阶段完成;不表示4-11所定义的 final Rust DOM shell 已完成。默认主路径仍依赖TreeShellIframeHost/iframe_srcdoc时,不得引用本文宣称 page tree final renderer 已最终收口。最终清理更新(2026-05-16):
TreeShellIframeHost与iframe_srcdoc已退出 active source 并移动到recycle/;本文保留为历史 state-family 阶段记录,当前口径以4-18/4-19为准。
目标
让 page tree 默认运行时从 inline compat JS 整树重绘路径继续收口到 Rust family renderer contract:
- 首屏 DOM 继续由
data-rust-page-renderer="initial_v1"输出。 - 焦点、active 高亮与键盘移动不再触发
renderTree()整树重绘,只 patch 已 hydrate 的 Rust DOM row 状态。 - 展开/折叠不再把 Rust 初始 DOM 替换成 compat DOM;在已 hydrate Rust DOM 内 patch
aria-expanded、toggle 文案与子树 fragment。 mnote-web /treedebug shell 与 3000 inline host 保持同一可测试合同,避免默认路径和 debug 路径继续漂移。
执行项
- Rust
page_renderer初始 HTML 为有子节点的 page row 输出tree-node-toggle,使 Rust DOM 自身具备展开/折叠交互锚点。 - 3000 inline
buildInlinePageTreeHtml对齐 Rust 初始 HTML,避免TreeShellIframeHost继续生成缺少 toggle 的第二份 page DOM 合同。 - 3000 inline runtime 增加 hydrated page DOM patch:
focusNode在usedRustInitialRenderer下只更新data-active / data-focused / tabIndex。toggleExpand在usedRustInitialRenderer下只 patch 当前节点aria-expanded、toggle 文案与子树显示/插入。- 新插入的 page 子树 row 复用同一
bindPageRowEvents,保留 open/create/rename/menu 事件。
mnote-web /treedebug runtime 对齐同一 page DOM patch 合同,保留 direct debug 验证边界。- 测试覆盖:
cargo test -p mnote-web page_rendererpnpm vitest run src/components/sidebar/tree-shell-iframe-host.test.tsx src/components/sidebar/tree-shell-surface.test.tsxnode scripts/task112-tree-rust-family-regression-smoke.js- 本地 Convex 函数已通过
npx convex dev --once --tail-logs disable --env-file ../.env.all --run ping:ping同步,避免documents.move运行旧 validator 拒绝normalizedMove。
非目标
- 本清单不把 file tree 与 picker 一并切 final renderer;它们对应
task-004、task-005。 - 本清单不恢复
3104默认入口;/tree仍只作为显式 debug/internal 验证边界。