Files
mnote/design/04-tree-domain/done/4-14-task-005-file-tree-final-renderer-capability-checklist-v1.md
T

2.8 KiB
Raw Blame History

4-14 [done] task-005 file tree final renderer 能力保留执行清单 v1

口径修正(2026-04-28):本文件的 done 状态只表示 file tree 的 Rust initial DOM、row contract、selection state family 与能力保留阶段完成;不表示 file tree 已完成 final Rust DOM shell 切换。默认主路径仍依赖 iframe_srcdoc 时,不得用本文作为最终完成依据。

目标

file treerust_family 默认路径下继续从 3000 inline compat host 收口到 final Rust renderer state family,同时保留文件树关键能力:

  • 首屏 DOM 由 data-rust-filetree-renderer="initial_v1" 输出,并覆盖 doc / index / asset-folder / asset 行语义。
  • 选择状态只通过 rust_filetree_selection_reducer_v1 合同入口执行与回报,不再由宿主反向控制。
  • 内部拖放、外部文件拖入、右键菜单、双击打开、空白区清空选择与 drop target dataset 不退化。
  • 3000 inline host 与 mnote-web /tree debug shell 保持同一可测试合同。

执行项

  • 补齐 3000 inline file tree hydrated runtime
    • Rust initial DOM 包含 doc / index / asset-folder / asset 行 test id、row kind、document id、asset id、icon hint 与 selected/active dataset。
    • asset-folderasset 行保留打开、右键、拖放目标与资源打开 bridge。
    • 选择、右键选择、Shift/Ctrl/Cmd 多选、可见行归一化与 drag rows 解析统一走 rust_filetree_selection_reducer_v1 镜像入口。
    • active/selection/drop feedback 在 hydrated Rust DOM 上 patch dataset,不因宿主 patch 触发整树重绘。
  • 对齐 mnote-web /tree debug runtime
    • debug shell 的 file tree row 语义、selection contract、drag/drop bridge 与 3000 inline host 同步。
    • fallback render path 仍可作为 debug/internal 边界,但主路径首屏不再清空 Rust initial DOM。
  • 测试覆盖:
    • cargo test -p mnote-web filetree_renderer && cargo test -p mnote-web filetree_selection
    • pnpm vitest run src/components/sidebar/tree-shell-iframe-host.test.tsx src/lib/file-tree/shell.test.ts src/lib/tree-stream/tree-delta.test.ts
    • node scripts/task112-tree-rust-family-regression-smoke.js

完成记录

  • 2026-04-26:代码对照确认 3000 inline host 与 mnote-web /tree debug shell 均已 hydrate data-rust-filetree-renderer="initial_v1",并保留 doc / index / asset-folder / asset row contract、selection reducer contract、drag/drop bridge 与资源打开 bridge。
  • 2026-04-26task-005 完整验证通过,未发现需要新增生产改动的缺口;本清单作为能力门槛记录。

非目标

  • 本清单不拆除 compat host 的所有 debug fallback;对应 task-006
  • 本清单不新增业务命令语义;file tree drop/delete/paste/upload preflight 已在前置任务中下沉 Rust。