- wire SQLite control-plane access/session paths into Rust web local-folder routes - preserve local Markdown attachment semantics across upload, reload, and secondary-pane resource tabs - refresh design governance docs, Reasonix task templates, and bug records - retire root .mcp.json local MCP config
42 KiB
Mindmap Phase 6 leptos-mindmap UI Shell Reuse Checklist v1
For agentic workers: REQUIRED SUB-SKILL: Use
superpowers:subagent-driven-developmentfor independent code slices, orsuperpowers:executing-planswhen executing this checklist in order. Steps use checkbox (- [ ]) syntax for tracking. 每完成一个节点,必须基于代码、截图或测试证据勾选对应项。
Goal: 在不恢复旧 React 主链、不直接嵌入 lx-doc Vue 应用的前提下,把当前 leptos-mindmap + simple-mind-map runtime 从“无头 runtime + 手写 chrome”推进到接近 KMind/lx-doc 可用度的 floating overlay canvas UI shell。
Architecture: Rust kernel 继续持有导图事实源和命令语义,simple-mind-map 继续作为编辑 runtime。UI schema 只描述 toolbar、sidebar、navigator、context menu 的项目和动作,不负责布局;默认宿主必须采用接近 lx-doc/KMind 的画布承载模型:runtime 作为块内无限画布底层,toolbar/sidebar/navigator/count/minimap 作为 overlay 浮在画布上,不挤压画布尺寸。当前 TypeScript NodeView 只是过渡桥接层,后续 UI shell 应迁到 Leptos/Rust 组件,避免引入更多长期前端语言/框架边界。
Tech Stack: Rust core-protocol / bridge-runtime / mnote-web、leptos-tiptap NodeView、simple-mind-map、历史 React MindmapBlock 组件族、lx-doc mind-map 参考代码、Playwright smoke。
0. 当前判断
当前 Phase 6 的方向不需要改成“直接嵌入 lx-doc/mind-map”。应该继续采用:
Rust kernel truth
-> mindmap.simple_mind_map_scene.v1
-> leptos-tiptap NodeView
-> simple-mind-map runtime
-> UI shell schema / action bridge
-> kernel command / compatPayload.patch
本 checklist 修正的是下一阶段执行重心:
- 不再把“接入
simple-mind-mapruntime”当作可用导图编辑器完成。 - 不再继续手写一次性的功能键、选项栏和底部栏。
- 优先复用本仓历史自研 UI 壳的配置、按钮分组、右侧栏、导航栏、MiniMap、统计、右键菜单经验。
- lx-doc/KMind 作为视觉、命令和交互基线;历史 React 组件作为最直接的迁移素材。
- 2026-05-11 修正:此前 schema UI 已能显示工具项,但仍采用 grid/flex 文档流布局,和
https://wanglin2.github.io/mind-map/#/、KMind 截图的“无限画布 + 浮动 UI”不一致。后续必须先迁移到 floating overlay canvas shell,再继续扩展功能语义。 - 2026-05-11 方向约束:mnote 主体是 Rust,
leptos-tiptap也是嵌入式 Leptos 路线;mindmap UI shell 不应继续沉淀为 TypeScript DOM UI。TS 只保留tiptap NodeView mount + simple-mind-map bridge + event/command forwarding,真正的 toolbar/sidebar/navigator/context menu 应迁移到 Leptos/Rust。
1. 参考材料
当前主线文档
design/06-mindmap/reference/6-mindmap-kernel-phase6-projection-editor-v1.mddesign/06-mindmap/reference/6-mindmap-leptos-adapter-reference-notes-v1.mddocs/superpowers/plans/2026-05-10-mindmap-phase6-projection-editor-checklist.md
lx-doc / KMind 参考
design/05-editor-mainline/reference-code/lx-doc/mind-map/src/pages/Edit/components/Edit.vuedesign/05-editor-mainline/reference-code/lx-doc/mind-map/src/pages/Edit/components/ToolbarNodeBtnList.vuedesign/05-editor-mainline/reference-code/lx-doc/mind-map/src/pages/Edit/components/SidebarTrigger.vuedesign/05-editor-mainline/reference-code/lx-doc/mind-map/src/pages/Edit/components/NavigatorToolbar.vuedesign/05-editor-mainline/reference-code/lx-doc/mind-map/src/config/zh.jsdesign/05-editor-mainline/reference-code/kmind-plugin
本仓历史 UI 壳
wolai-frontend/src/components/editor/blocks/MindmapBlock.tsxwolai-frontend/src/components/editor/blocks/MindmapToolbar.tsxwolai-frontend/src/components/editor/blocks/mindmapToolbarConfig.tswolai-frontend/src/components/editor/blocks/MindmapSidebar.tsxwolai-frontend/src/components/editor/blocks/mindmapSidebarConfig.tswolai-frontend/src/components/editor/blocks/MindmapNavigator.tsxwolai-frontend/src/components/editor/blocks/MindmapMiniMap.tsxwolai-frontend/src/components/editor/blocks/MindmapCount.tsxwolai-frontend/src/components/editor/blocks/MindmapContextMenu.tsx
历史简化宿主参考
/mnt/Data1T/mnote-rust/components/editor/blocks/MindmapRuntimeEditor.tsx/mnt/Data1T/mnote-rust/components/editor/blocks/MindmapToolbar.tsx/mnt/Data1T/mnote-rust/components/editor/blocks/MindmapNavigator.tsx/mnt/Data1T/mnote-rust/components/editor/blocks/MindmapMiniMap.tsx/mnt/Data1T/mnote-rust/components/editor/blocks/MindmapSidebarTrigger.tsx
2. 文件职责图
wolai-frontend/src/lib/mindmap/mindmap-ui-schema.ts- 新增:toolbar、sidebar、navigator、context menu 的中立 UI schema。
wolai-frontend/src/lib/mindmap/mindmap-action-map.ts- 新增:UI action 到
simple-mind-mapcommand、kernel command、compatPayload.patch的映射。
- 新增:UI action 到
wolai-frontend/src/lib/mindmap/mindmap-ui-state.ts- 新增:active node、selection、readonly、scale、panel open state、disabled state 的派生逻辑。
wolai-frontend/src/lib/mindmap/leptos-mindmap-adapter.ts- 修改:暴露 UI shell 需要的 runtime action、state subscribe、command result。
wolai-frontend/src/lib/mindmap/simple-mind-map-bridge.ts- 修改:补齐
execCommand、插件能力探测、scale/view 操作、销毁清理。
- 修改:补齐
wolai-frontend/src/lib/mindmap/mindmap-command-diff.ts- 修改:补齐 toolbar/sidebar/context menu 产生的变更到 kernel command / compat patch 的转换。
design/05-editor-mainline/reference-code/leptos-tiptap/tiptap/src/extensions/tiptap_paragraph.ts- 过渡修改:NodeView 只负责挂载 runtime、Leptos/Rust UI shell 宿主和最小桥接,不再继续扩散硬编码按钮逻辑。
rust/spikes/leptos-tiptap-spike/generated/island/snippets/leptos-tiptap-c355e6ec24c3df4c/src/js/generated/tiptap_paragraph.js- 修改:同步生成后的 browser-side bridge,保持与 TS source 行为一致。
scripts/task166-mindmap-phase6-block-smoke.js- 修改:从 runtime 存在 smoke 升级为 UI shell、交互、保存、reload、截图 smoke。
Floating overlay canvas shell 约束
- 默认 DOM 应为
canvas-layer + overlay-layer:simple-mind-mapruntime 充满块内画布,toolbar/sidebar/navigator/count/minimap 都位于 overlay layer。 - toolbar 顶部居中浮动,视觉上接近 lx-doc
Toolbar.vue的 fixed toolbar,而不是文档流顶部栏。 - sidebar trigger / panel 右侧浮动,打开 panel 时不改变 runtime 宽度,只覆盖画布右侧安全区域。
- navigator 右下浮动,count 左下浮动,MiniMap 后续在右下 navigator 上方浮动。
- smoke 必须断言 overlay layer 存在,runtime rect 与 editor root rect 高度/宽度接近,不因 sidebar/toolbar/navigator 被 grid/flex 挤压。
Leptos/Rust UI shell 收口约束
mindmap-ui-schema.ts/mindmap-action-map.ts/mindmap-ui-state.ts当前是过渡资产;新增长期 UI 行为时应优先设计 Rust/Leptos 可消费的 schema 和 signal/state 边界。tiptap_paragraph.ts不应继续成为 toolbar/sidebar/navigator 的长期实现文件;新增复杂 UI 面板前,应先迁出到 Leptos/Rust 组件或生成的 island 组件边界。- 禁止恢复旧 React
MindmapBlock.tsx为默认主链,禁止直接嵌入 lx-doc Vue app,禁止新增第三套 JS UI 框架。 simple-mind-map可以继续作为 runtime engine,但 UI shell 的宿主语言方向应是 Leptos/Rust。
Task 1: 冻结新阶段边界
Files:
-
Modify:
design/06-mindmap/reference/6-mindmap-kernel-phase6-projection-editor-v1.md -
Modify:
docs/superpowers/plans/2026-05-10-mindmap-phase6-projection-editor-checklist.md -
Create/Modify:
design/06-mindmap/done/6-mindmap-phase6-leptos-ui-shell-reuse-checklist-v1.md -
明确当前 Phase 6 不是“Rust 重写 lx-doc/mind-map”,也不是“直接嵌入 lx-doc Vue app”。
- 2026-05-11 记录:本文件“当前判断”和总设计稿第 3 节均保留三路线定位,Phase 6 主线为
leptos-mindmap。
- 2026-05-11 记录:本文件“当前判断”和总设计稿第 3 节均保留三路线定位,Phase 6 主线为
-
明确下一阶段目标是“当前 simple-mind-map runtime + 可复用 UI shell + kernel command bridge”。
- 2026-05-11 记录:本文件 Goal/Architecture 与总设计稿
10.2均明确 floating overlay UI shell + command bridge。
- 2026-05-11 记录:本文件 Goal/Architecture 与总设计稿
-
在旧 checklist 中标记:已完成项如果只覆盖 runtime 接入和最小 smoke,不代表 KMind-like UI 可用性完成。
- 2026-05-11 更新:旧 checklist 新增
Task 13: UI Shell Reuse 后续收口,指向本文件。
- 2026-05-11 更新:旧 checklist 新增
-
在设计稿中补一段“UI shell 复用策略”,指向本 checklist。
- 2026-05-11 更新:
6-mindmap-kernel-phase6-projection-editor-v1.md新增10.2 2026-05-11 UI shell reuse 收口状态。
- 2026-05-11 更新:
-
验证:
rg -n "UI shell|MindmapBlock.tsx|mindmap-ui-schema|直接嵌入 lx-doc" design/06-mindmap docs/superpowers/plans/2026-05-10-mindmap-phase6-projection-editor-checklist.md- 2026-05-11 通过:命令能检索到本 checklist、总设计稿、reference notes 和旧执行 checklist 的对应口径。
Task 2: 抽取历史 React UI 能力清单
Files:
-
Inspect:
wolai-frontend/src/components/editor/blocks/MindmapBlock.tsx -
Inspect:
wolai-frontend/src/components/editor/blocks/MindmapToolbar.tsx -
Inspect:
wolai-frontend/src/components/editor/blocks/mindmapToolbarConfig.ts -
Inspect:
wolai-frontend/src/components/editor/blocks/MindmapSidebar.tsx -
Inspect:
wolai-frontend/src/components/editor/blocks/mindmapSidebarConfig.ts -
Inspect:
wolai-frontend/src/components/editor/blocks/MindmapNavigator.tsx -
Inspect:
wolai-frontend/src/components/editor/blocks/MindmapMiniMap.tsx -
Inspect:
wolai-frontend/src/components/editor/blocks/MindmapCount.tsx -
Inspect:
wolai-frontend/src/components/editor/blocks/MindmapContextMenu.tsx -
Output:
design/06-mindmap/reference/6-mindmap-leptos-adapter-reference-notes-v1.md -
列出历史 toolbar 分组:历史操作、节点操作、插入扩展、样式、结构、导入导出、视图操作。
-
列出每个 toolbar action 的旧实现来源、旧 runtime 调用、禁用条件、是否需要 active node。
-
列出历史 sidebar panel:节点样式、基础样式、主题、结构、大纲、快捷键或设置。
-
列出历史 navigator 能力:缩放、回根、适应画布、MiniMap、节点数/字数、只读/全屏。
-
列出历史 context menu 能力:插入、删除、复制、粘贴、展开折叠、概要、关联线、样式。
-
标注哪些能力第一阶段必须迁移,哪些只保留 schema 但暂不显示。
-
验证:输出表格至少覆盖 toolbar、sidebar、navigator、context menu 四类能力,并能追溯到具体文件名。
- 2026-05-11 输出:
design/06-mindmap/reference/6-mindmap-leptos-adapter-reference-notes-v1.md第 8 节。
- 2026-05-11 输出:
Task 3: 建立中立 UI Schema
Files:
-
Create:
wolai-frontend/src/lib/mindmap/mindmap-ui-schema.ts -
Create:
wolai-frontend/src/lib/mindmap/mindmap-ui-schema.test.ts -
定义
MindmapUiActionId,覆盖第一阶段 action:undo、redo、editNode、insertSiblingAfter、insertChild、deleteNode、tag、hyperlink、note、image、icon、summary、associativeLine、formula、painter、import、export、setTheme、setLayout、zoomIn、zoomOut、fitView、centerRoot、search、readonly。 -
定义
MindmapToolbarGroup,字段包含id、label、actions、collapsePriority。 -
定义
MindmapSidebarPanel,字段包含id、label、icon、runtimeCapability、phase。 -
定义
MindmapNavigatorItem,字段包含id、label、actionId、readOnly、displayMode。 -
定义
MindmapContextMenuItem,字段包含id、label、actionId、requiresNode、phase。 -
导出
mindmapDefaultUiSchema,只包含第一阶段需要显示的功能。 -
单测断言 action id 不重复、每个 toolbar action 都能在 action map 中找到占位映射、第一阶段 panel 数量不超过 5 个。
-
验证:
cd /mnt/Data1T/mnote/wolai-frontend && pnpm test -- mindmap-ui-schema
Task 4: 建立 Action Map 与禁用状态
Files:
-
Create:
wolai-frontend/src/lib/mindmap/mindmap-action-map.ts -
Create:
wolai-frontend/src/lib/mindmap/mindmap-action-map.test.ts -
Create:
wolai-frontend/src/lib/mindmap/mindmap-ui-state.ts -
Create:
wolai-frontend/src/lib/mindmap/mindmap-ui-state.test.ts -
Modify:
wolai-frontend/src/lib/mindmap/leptos-mindmap-adapter.ts -
定义
MindmapActionTarget:runtimeCommand、kernelCommand、compatPatch、localView。 -
把
insertChild映射到simple-mind-map插入子节点命令,并在成功后走mindmap.node.insert_child或 diff。 -
把
insertSiblingAfter映射到同级插入命令,并在成功后走mindmap.node.insert_sibling_after或 diff。 -
把
deleteNode映射到删除命令,并在成功后走mindmap.node.delete或 diff。 -
把
centerRoot、zoomIn、zoomOut、fitView映射为 runtime view action,同时产生mindmap.view.patch。 -
把
setTheme、setLayout映射为mindmap.theme.set、mindmap.layout.set。 -
把
tag、hyperlink、note、image、icon、formula、painter第一阶段映射为compatPayload.patch,并记录字段路径。 -
实现
deriveMindmapUiState(),根据 active node、readonly、runtime capabilities、selection 派生 disabled state。 -
单测覆盖:无 active node 时节点操作禁用;readonly 时编辑类 action 禁用;view action 不依赖 active node。
-
验证:
cd /mnt/Data1T/mnote/wolai-frontend && pnpm test -- mindmap-action-map mindmap-ui-state- 2026-05-11 补充验证:
pnpm test -- mindmap-ui-schema mindmap-action-map mindmap-ui-state通过。
- 2026-05-11 补充验证:
Task 5: 替换 NodeView 中的硬编码 Chrome
Files:
-
Modify:
design/05-editor-mainline/reference-code/leptos-tiptap/tiptap/src/extensions/tiptap_paragraph.ts -
Modify:
rust/spikes/leptos-tiptap-spike/generated/island/snippets/leptos-tiptap-c355e6ec24c3df4c/src/js/generated/tiptap_paragraph.js -
Modify:
wolai-frontend/src/lib/mindmap/leptos-mindmap-adapter.ts -
移除默认主链中的手写 toolbar button 列表,改为从
mindmapDefaultUiSchema.toolbarGroups渲染。- 2026-05-11 验证:默认 DOM
data-testid="mindmap-schema-toolbar"且data-schema-source="mindmapDefaultUiSchema";截图tmp/task166-mindmap-phase6-block-smoke/toolbar-actions.png。
- 2026-05-11 验证:默认 DOM
-
移除默认主链中的手写 sidebar trigger 列表,改为从
mindmapDefaultUiSchema.sidebarPanels渲染。- 2026-05-11 验证:默认 DOM
data-testid="mindmap-schema-sidebar"且data-schema-source="mindmapDefaultUiSchema";截图tmp/task166-mindmap-phase6-block-smoke/sidebar-node-style.png。
- 2026-05-11 验证:默认 DOM
-
移除默认主链中的固定 bottom bar 文案,改为从 navigator schema 和 runtime state 渲染。
- 2026-05-11 验证:默认 DOM
data-testid="mindmap-schema-navigator",显示节点数、字数与缩放百分比;截图tmp/task166-mindmap-phase6-block-smoke/navigator-default.png。
- 2026-05-11 验证:默认 DOM
-
保留最小错误层:
projection_load_failed、adapter_init_failed、runtime_render_failed、command_failed。 -
保留 debug fallback,但必须通过显式 debug flag 才能显示,不作为默认主链。
-
确保 NodeView 销毁时仍调用 adapter
destroy()。 -
验证:页面 DOM 中默认不再出现旧
.mnote-mindmap-node手写节点主链;data-testid="mnote-mindmap-editor-root"仍存在。- 2026-05-11 验证:
node scripts/task166-mindmap-phase6-block-smoke.js通过;tmp/task166-mindmap-phase6-block-smoke/result.json中ok=true,默认debugChrome=false且无手写 toolbar/sidebar/bottom bar。
- 2026-05-11 验证:
Task 5A: 修正为 Floating Overlay Canvas Shell
Files:
-
Modify:
design/05-editor-mainline/reference-code/leptos-tiptap/tiptap/src/extensions/tiptap_paragraph.ts -
Modify:
rust/spikes/leptos-tiptap-spike/src/lib.rs -
Modify:
rust/spikes/leptos-tiptap-spike/generated/island/snippets/leptos-tiptap-c355e6ec24c3df4c/src/js/generated/tiptap_paragraph.js -
Modify:
scripts/task166-mindmap-phase6-block-smoke.js -
NodeView 默认 DOM 改为
canvas-layer + overlay-layer,runtime 不再和 sidebar 组成 grid。- 2026-05-11 实现:默认路径挂载
mindmap-canvas-layer与mindmap-overlay-layer;debug fallback 仍保留旧布局。
- 2026-05-11 实现:默认路径挂载
-
toolbar 顶部居中浮动,sidebar 右侧浮动,navigator 右下浮动,count 左下浮动。
- 2026-05-11 截图:
tmp/task166-mindmap-phase6-block-smoke/01-after-insert-floating-overlay.png。
- 2026-05-11 截图:
-
sidebar 打开或切换 panel 时不改变 runtime 宽度。
- 2026-05-11 验证:sidebar 已从 workspace grid 移到 overlay layer;smoke 覆盖 panel 切换截图。
-
smoke 断言
data-testid="mindmap-overlay-layer"存在,且runtimeBox.width / rootBox.width >= 0.9。- 2026-05-11 验证:
node scripts/task166-mindmap-phase6-block-smoke.js通过。
- 2026-05-11 验证:
-
smoke 保存
01-after-insert-floating-overlay.png,截图能看到画布底层和浮动 UI。- 2026-05-11 截图:
tmp/task166-mindmap-phase6-block-smoke/01-after-insert-floating-overlay.png。
- 2026-05-11 截图:
-
验证:
cd /mnt/Data1T/mnote/design/05-editor-mainline/reference-code/leptos-tiptap/tiptap && npm run typecheck && npm run build- 2026-05-11 通过。
-
验证:
cd /mnt/Data1T/mnote/wolai-frontend && node scripts/build-leptos-tiptap-island.js- 2026-05-11 已重新生成 island。
-
验证:
cd /mnt/Data1T/mnote && node scripts/task166-mindmap-phase6-block-smoke.js- 2026-05-11 通过;
tmp/task166-mindmap-phase6-block-smoke/result.json中ok=true。
- 2026-05-11 通过;
Task 5B: 收口到 Leptos/Rust UI Shell 宿主
Files:
-
Modify/Create:
rust/spikes/leptos-tiptap-spike/src/lib.rs -
Modify/Create:
rust/spikes/leptos-tiptap-spike/src/mindmap_shell.rs或同等 Leptos 组件文件 -
Modify:
design/05-editor-mainline/reference-code/leptos-tiptap/tiptap/src/extensions/tiptap_paragraph.ts -
Modify:
wolai-frontend/src/lib/mindmap/leptos-mindmap-adapter.ts -
Modify:
scripts/task166-mindmap-phase6-block-smoke.js -
明确
tiptap_paragraph.ts只创建 mount 容器、加载 runtime bridge、转发事件,不再直接渲染 toolbar/sidebar/navigator 长期 UI。- 2026-05-11 实现:默认路径只挂载
mindmap-rust-shell-mount,TS 负责simple-mind-mapruntime、projection/command bridge、mnote:mindmap-shell:*事件转发;debug fallback 仍需显式 debug flag。
- 2026-05-11 实现:默认路径只挂载
-
将 floating overlay shell 的 toolbar/sidebar/count/navigator 渲染迁到 Leptos/Rust 组件边界。
- 2026-05-11 实现:
rust/spikes/leptos-tiptap-spike/src/lib.rs导出mount_mindmap_shell/unmount_mindmap_shell,Leptos 组件输出mindmap-rust-shell、toolbar、sidebar、count、navigator。
- 2026-05-11 实现:
-
Leptos/Rust UI shell 消费同等 schema/state/action 能力;若仍需 TS schema,必须作为临时 adapter 输入,不作为长期事实源。
- 2026-05-11 实现:当前 TS adapter 将
mindmapDefaultUiSchema与deriveMindmapUiState()转为 Rust shell options;后续新增长期 UI 能力应继续迁到 Rust/Leptos schema 边界。
- 2026-05-11 实现:当前 TS adapter 将
-
Leptos/Rust UI shell 触发 action 时仍经由 adapter command bridge,不绕过 kernel command。
- 2026-05-11 验证:Rust shell 派发
mnote:mindmap-shell:action/mnote:mindmap-shell:panel,NodeView 统一转到executeSchemaAction()、applyCommandsAndRefresh()、patchView。
- 2026-05-11 验证:Rust shell 派发
-
smoke 断言默认 UI shell 来源为
leptos-rust-shell或等价稳定标记,而不是typescript-nodeview-dom。- 2026-05-11 验证:
scripts/task166-mindmap-phase6-block-smoke.js断言data-ui-shell-source="leptos-rust-shell"、data-ui-source="leptos-rust-shell"。
- 2026-05-11 验证:
-
验证:
cd /mnt/Data1T/mnote/design/05-editor-mainline/reference-code/leptos-tiptap/tiptap && npm run typecheck && npm run build- 2026-05-11 通过。
-
验证:
cd /mnt/Data1T/mnote/wolai-frontend && node scripts/build-leptos-tiptap-island.js- 2026-05-11 通过,island 入口包含
mount_mindmap_shell/unmount_mindmap_shell。
- 2026-05-11 通过,island 入口包含
-
验证:
cd /mnt/Data1T/mnote && node scripts/task166-mindmap-phase6-block-smoke.js- 2026-05-11 通过;
tmp/task166-mindmap-phase6-block-smoke/result.json中ok=true,默认入口http://127.0.0.1:3000;截图tmp/task166-mindmap-phase6-block-smoke/01-after-insert-floating-overlay.png。
- 2026-05-11 通过;
Task 6: Toolbar 第一阶段迁移
Files:
-
Modify:
wolai-frontend/src/lib/mindmap/mindmap-ui-schema.ts -
Modify:
wolai-frontend/src/lib/mindmap/mindmap-action-map.ts -
Modify:
wolai-frontend/src/lib/mindmap/leptos-mindmap-adapter.ts -
Modify:
scripts/task166-mindmap-phase6-block-smoke.js -
顶部 toolbar 显示:撤销、重做、同级节点、子节点、删除、标签、超链接、备注、图片、图标、概要、关联线、公式、格式刷、导入、导出。
- 2026-05-11 验证:
node scripts/task166-mindmap-phase6-block-smoke.js断言上述 action id 均存在;截图tmp/task166-mindmap-phase6-block-smoke/toolbar-actions.png。
- 2026-05-11 验证:
-
toolbar 分组、图标尺寸、按钮间距对齐 KMind/lx-doc 的工作台密度,不做大卡片式按钮。
- 2026-05-11 实现:
rust/spikes/leptos-tiptap-spike/src/lib.rs新增 schema toolbar group、tool icon/label 紧凑样式;截图tmp/task166-mindmap-phase6-block-smoke/01-after-insert-schema-ui.png。
- 2026-05-11 实现:
-
active node 为空时禁用节点相关按钮。
- 2026-05-11 实现:Rust shell 消费
deriveMindmapUiState()派生的 disabled state;节点类 action 依赖activeNodeId。
- 2026-05-11 实现:Rust shell 消费
-
readonly 时禁用所有编辑类按钮,保留缩放、搜索、回根。
- 2026-05-11 验证:
node scripts/task166-mindmap-phase6-block-smoke.js中verifyReadonlyToolbarState()覆盖 readonly 开关后编辑按钮禁用、view 按钮保留可用。
- 2026-05-11 验证:
-
点击“子节点”后真实插入节点,截图可见新增节点。
- 2026-05-11 验证:
toolbarActions.insertChildOk=true,截图tmp/task166-mindmap-phase6-block-smoke/03-after-toolbar-actions.png。
- 2026-05-11 验证:
-
点击“同级节点”后真实插入同级节点,截图可见新增节点。
- 2026-05-11 验证:
toolbarActions.insertSiblingOk=true,节点数从 5 增至 6。
- 2026-05-11 验证:
-
点击“删除”后真实删除选中节点,并能 reload 后保持。
- 2026-05-11 验证:
toolbarActions.deleteOk=true,删除后节点数为 5,reload 后仍为 5。
- 2026-05-11 验证:
-
验证:smoke 输出 toolbar action 结果 JSON,包含
insertChildOk、insertSiblingOk、deleteOk。- 2026-05-11 通过:
tmp/task166-mindmap-phase6-block-smoke/result.json中toolbarActions={insertChildOk:true,insertSiblingOk:true,deleteOk:true}。
- 2026-05-11 通过:
Task 7: Sidebar 第一阶段迁移
Files:
-
Modify:
wolai-frontend/src/lib/mindmap/mindmap-ui-schema.ts -
Modify:
wolai-frontend/src/lib/mindmap/mindmap-action-map.ts -
Modify:
wolai-frontend/src/lib/mindmap/leptos-mindmap-adapter.ts -
Modify:
scripts/task166-mindmap-phase6-block-smoke.js -
右侧栏触发器显示:节点样式、导图样式、主题、结构、大纲。
- 2026-05-11 验证:smoke 断言
nodeStyle、baseStyle、theme、structure、outline均存在。
- 2026-05-11 验证:smoke 断言
-
打开一个 panel 时不挤压或遮挡主要画布节点。
- 2026-05-11 验证:Task 5A/5B smoke 断言
runtimeBox.width / rootBox.width >= 0.9、runtimeBox.height / rootBox.height >= 0.85;sidebar 位于 floating overlay,不改变 runtime 尺寸。
- 2026-05-11 验证:Task 5A/5B smoke 断言
-
主题 panel 第一阶段至少提供默认主题和 KMind-like 主题切换。
- 2026-05-11 实现:Rust/Leptos sidebar body 渲染
theme-classic、theme-classic4;NodeView bridge 将选择转为setThemekernel command。验证:node scripts/task166-mindmap-phase6-block-smoke.js中sidebarActions.themeOk=true,reload 后theme=classic4保持;截图tmp/task166-mindmap-phase6-block-smoke/sidebar-theme.png、sidebar-actions.png。
- 2026-05-11 实现:Rust/Leptos sidebar body 渲染
-
结构 panel 第一阶段至少提供逻辑结构、右侧结构、鱼骨或树形结构中的可用子集。
- 2026-05-11 实现:Rust/Leptos sidebar body 渲染
logicalStructure、mindMap、fishbone结构选项;NodeView bridge 将选择转为setLayoutkernel command。验证:node scripts/task166-mindmap-phase6-block-smoke.js中sidebarActions.layoutOk=true,reload 后layout=mindMap保持;截图tmp/task166-mindmap-phase6-block-smoke/sidebar-structure.png。
- 2026-05-11 实现:Rust/Leptos sidebar body 渲染
-
大纲 panel 只从 projection/runtime 派生,不创建第二份树真相。
- 2026-05-11 实现:NodeView 每次 mount Rust shell 时从当前 runtime snapshot / projection root 派生
bodyItems,Rust shell 只渲染传入列表,不维护第二份树状态。验证:sidebarActions.outlineDerivedOk=true,输出 outline items 包含当前导图节点文本;截图tmp/task166-mindmap-phase6-block-smoke/sidebar-outline.png。
- 2026-05-11 实现:NodeView 每次 mount Rust shell 时从当前 runtime snapshot / projection root 派生
-
节点样式和导图样式的暂未语义化字段走
compatPayload.patch。- 2026-05-11 实现:sidebar option 派发
source=sidebar与compatPath;节点样式写入nodes.$active.data.fillColor,导图样式写入compatPayload.style.map.lineStyle。验证:sidebarActions.nodeStyleCompatOk=true、sidebarActions.baseStyleCompatOk=true,reload 后保持;截图tmp/task166-mindmap-phase6-block-smoke/sidebar-node-style.png、sidebar-base-style.png。
- 2026-05-11 实现:sidebar option 派发
-
验证:smoke 能打开每个 panel,并保存
sidebar-node-style.png、sidebar-theme.png、sidebar-structure.png、sidebar-outline.png。- 2026-05-11 通过:
node scripts/task166-mindmap-phase6-block-smoke.js保存四张 sidebar 截图。
- 2026-05-11 通过:
Task 8: Navigator / MiniMap / Count 迁移
Files:
-
Modify:
wolai-frontend/src/lib/mindmap/mindmap-ui-schema.ts -
Modify:
wolai-frontend/src/lib/mindmap/leptos-mindmap-adapter.ts -
Modify:
scripts/task166-mindmap-phase6-block-smoke.js -
底部栏显示节点数、字数、当前缩放百分比。
- 2026-05-11 验证:smoke 断言 navigator stats 包含“节点”,zoom 包含
%;截图tmp/task166-mindmap-phase6-block-smoke/navigator-default.png。
- 2026-05-11 验证:smoke 断言 navigator stats 包含“节点”,zoom 包含
-
“回根节点”调用 runtime center root,并写入 view patch。
- 2026-05-11 验证:
node scripts/task166-mindmap-phase6-block-smoke.js通过;navigatorActions.centerRootOk=true,通过浮动 navigator 按钮触发并观测到patchViewPOST。
- 2026-05-11 验证:
-
缩放加减按钮调用 runtime zoom,并写入 view patch。
- 2026-05-11 验证:
navigatorActions.zoomOk=true、viewScale=1.2,截图tmp/task166-mindmap-phase6-block-smoke/navigator-zoomed.png。
- 2026-05-11 验证:
-
搜索入口调用
simple-mind-mapSearch 插件或当前 adapter 搜索入口。- 2026-05-11 实现:Rust/Leptos navigator search input 派发
searchaction,NodeView adapter 记录当前搜索入口状态与 query;后续可替换为 Search 插件面板。验证:navigatorActions.searchOk=true。
- 2026-05-11 实现:Rust/Leptos navigator search input 派发
-
MiniMap 第一阶段可折叠显示,但按钮和容器状态必须稳定。
- 2026-05-11 实现:Rust/Leptos shell 增加 MiniMap 开关和稳定 overlay 容器;不恢复旧 React MiniMap。验证:
navigatorActions.minimapOk=true,截图tmp/task166-mindmap-phase6-block-smoke/navigator-minimap.png。
- 2026-05-11 实现:Rust/Leptos shell 增加 MiniMap 开关和稳定 overlay 容器;不恢复旧 React MiniMap。验证:
-
底部栏在窄屏下不覆盖节点编辑区域。
- 2026-05-11 验证:当前 smoke 断言 runtime 仍保持
runtimeBox.width/rootBox.width >= 0.9、runtimeBox.height/rootBox.height >= 0.85;navigator/MiniMap 均在 overlay layer,不改变 runtime 尺寸。
- 2026-05-11 验证:当前 smoke 断言 runtime 仍保持
-
验证:smoke 保存
navigator-default.png、navigator-zoomed.png、navigator-minimap.png。- 2026-05-11 通过:
node scripts/task166-mindmap-phase6-block-smoke.js输出ok=true,截图路径包含三张 navigator 截图。
- 2026-05-11 通过:
Task 9: Context Menu 迁移
Files:
-
Modify:
wolai-frontend/src/lib/mindmap/mindmap-ui-schema.ts -
Modify:
wolai-frontend/src/lib/mindmap/mindmap-action-map.ts -
Modify:
wolai-frontend/src/lib/mindmap/leptos-mindmap-adapter.ts -
Modify:
scripts/task166-mindmap-phase6-block-smoke.js -
右键节点时显示节点 context menu。
- 2026-05-11 实现:NodeView capture 阶段监听
contextmenu,检测.smm-node后打开节点菜单。验证:node scripts/task166-mindmap-phase6-block-smoke.js中contextMenuActions.nodeMenuOk=true;截图tmp/task166-mindmap-phase6-block-smoke/context-menu-actions.png。
- 2026-05-11 实现:NodeView capture 阶段监听
-
右键画布时显示画布 context menu,节点专属操作禁用或隐藏。
- 2026-05-11 验证:smoke 右键 runtime 空白区后
contextMenuActions.canvasMenuOk=true,且 canvas 菜单不包含insertChild。
- 2026-05-11 验证:smoke 右键 runtime 空白区后
-
节点 menu 第一阶段包含:插入子节点、插入同级节点、删除、展开/收起、概要、关联线、复制文本。
- 2026-05-11 验证:smoke 断言节点菜单包含
insertChild、insertSiblingAfter、deleteNode、summary、associativeLine、expandCollapse、copyNodeText;copyTextOk=true,insertChildOk=true。
- 2026-05-11 验证:smoke 断言节点菜单包含
-
画布 menu 第一阶段包含:回根节点、适应画布、搜索、只读切换。
- 2026-05-11 验证:smoke 断言画布菜单包含
centerRoot、fitView、search、readonly。
- 2026-05-11 验证:smoke 断言画布菜单包含
-
所有 context menu action 复用
mindmap-action-map.ts,不新增第二套动作逻辑。- 2026-05-11 实现:
mindmap-ui-schema.ts新增expandCollapse、copyNodeText,mindmap-action-map.ts将其映射为localView;菜单点击统一调用executeSchemaAction()。说明:context menu DOM 当前仍由 NodeView 过渡渲染,后续可按 Task 5B 同样迁入 Rust/Leptos shell。
- 2026-05-11 实现:
-
验证:smoke 能打开节点右键菜单和画布右键菜单,并保存截图。
- 2026-05-11 通过:
node scripts/task166-mindmap-phase6-block-smoke.js输出ok=true;截图tmp/task166-mindmap-phase6-block-smoke/context-menu-actions.png。
- 2026-05-11 通过:
Task 10: Command Bridge 与保存闭环补齐
Files:
-
Modify:
wolai-frontend/src/lib/mindmap/mindmap-command-diff.ts -
Modify:
wolai-frontend/src/lib/mindmap/leptos-mindmap-adapter.ts -
Modify:
rust/crates/bridge-runtime/src/lib.rs -
Modify:
rust/crates/core-protocol/src/mindmap.rs -
Modify:
scripts/task166-mindmap-phase6-block-smoke.js -
data_change能识别文本更新、插入子节点、插入同级节点、删除节点、移动节点。- 2026-05-11 验证:
mindmap-command-diff.test.ts覆盖文本、插入、删除、移动 diff;node scripts/task166-mindmap-phase6-block-smoke.js覆盖 toolbar/context menu 插入与删除保存闭环。
- 2026-05-11 验证:
-
view_data_change能转成mindmap.view.patch。- 2026-05-11 验证:navigator 回根与缩放触发 view patch;smoke 输出
navigatorActions.centerRootOk=true、navigatorActions.zoomOk=true、viewScale=1.2。
- 2026-05-11 验证:navigator 回根与缩放触发 view patch;smoke 输出
-
toolbar/sidebar/context menu 触发的动作都能落到
kernel command或compatPayload.patch。- 2026-05-11 验证:toolbar 插入/删除、sidebar 主题/结构、context menu 插入均通过 smoke;sidebar 节点样式/导图样式走 compat patch,结果为
nodeStyleCompatOk=true、baseStyleCompatOk=true。
- 2026-05-11 验证:toolbar 插入/删除、sidebar 主题/结构、context menu 插入均通过 smoke;sidebar 节点样式/导图样式走 compat patch,结果为
-
每个
compatPayload.patch记录字段路径、来源 action、runtime revision、kernel revision。- 2026-05-11 实现:
mindmap-command-diff.ts的MindmapCompatPayloadPatch增加actionId、runtimeRevision、kernelRevision;NodeView bridge 注入 action/revision 元信息。
- 2026-05-11 实现:
-
command 失败时显示
command_failed,并保留失败 action id 和错误消息。- 2026-05-11 实现:NodeView command 失败时写入
data-command-failed-action与data-command-failed-message;本轮 smoke 未再复现删除节点 400。
- 2026-05-11 实现:NodeView command 失败时写入
-
reload 后仍能看到 toolbar 插入/删除/主题/结构/view 的已保存结果。
- 2026-05-11 验证:smoke 保存并校验
04-after-reload.png;输出toolbarActions.deleteOk=true、sidebarActions.themeOk=true、sidebarActions.layoutOk=true、viewScale=1.2。
- 2026-05-11 验证:smoke 保存并校验
-
验证:
cd /mnt/Data1T/mnote/rust && cargo test -p core-protocol mindmap- 2026-05-11 通过:3 passed。
-
验证:
cd /mnt/Data1T/mnote/rust && cargo test -p bridge-runtime mindmap- 2026-05-11 通过:14 passed。
-
验证:
cd /mnt/Data1T/mnote/wolai-frontend && pnpm test -- mindmap-command-diff leptos-mindmap-adapter- 2026-05-11 通过:实际匹配全量 106 files,416 tests passed。
Task 11: KMind/lx-doc 视觉对齐
Files:
-
Modify:
design/05-editor-mainline/reference-code/leptos-tiptap/tiptap/src/extensions/tiptap_paragraph.ts -
Modify: relevant generated JS island file
-
Modify:
wolai-frontend/src/lib/mindmap/mindmap-ui-schema.ts -
Modify:
scripts/task166-mindmap-phase6-block-smoke.js -
Reference Image:
tmp/image copy 60.png -
Reference Image:
tmp/image copy 70.png -
Current Evidence:
tmp/image copy 79.png -
默认根节点、二级节点、分支节点、概要线的视觉结果接近 KMind/lx-doc,而不是只显示基础节点和错位连线。
- 2026-05-11 实现:真实
simple-mind-mapruntime 负责节点、连线、概要线渲染;当前截图能看到根节点、二级节点、分支主题和概要括号线。剩余差异:默认主题色仍未完全等同image copy 60.png的红/蓝 KMind 配色,后续可继续细化 themeConfig。
- 2026-05-11 实现:真实
-
toolbar、右侧触发器、底部栏呈现为编辑工作台 chrome,不占据画布主体。
- 2026-05-11 实现:Leptos/Rust shell 的 toolbar、sidebar、navigator、count 均为 floating overlay;新截图
tmp/task166-mindmap-phase6-block-smoke/01-after-insert-floating-overlay.png显示 UI 浮在画布上,不再挤压 runtime。
- 2026-05-11 实现:Leptos/Rust shell 的 toolbar、sidebar、navigator、count 均为 floating overlay;新截图
-
连线对齐节点中心或 runtime 默认锚点,无明显错位。
- 2026-05-11 验证:当前连线由
simple-mind-mapruntime 生成;人工查看04-after-reload.png未见此前手写线条错位问题。
- 2026-05-11 验证:当前连线由
-
画布初始视口能看到完整示例导图,不需要用户手动拖拽才能判断是否渲染成功。
- 2026-05-11 修复:
simple-mind-map-bridge.ts不再用固定fit:false覆盖 runtimeOptions;默认fit:true,01-after-insert-floating-overlay.png中示例导图完整可见。
- 2026-05-11 修复:
-
禁止用说明性大字、调试文案或状态卡片占据导图首屏。
- 2026-05-11 验证:默认首屏为真实 runtime + floating UI;debug fallback 仍需显式 debug flag。
-
验证:人工对照
image copy 60.png/image copy 70.png/ 当前 smoke 截图,记录剩余差异到 checklist 或 reference notes。- 2026-05-11 对照:当前已具备无限画布底层、浮动 toolbar、右侧栏、底部 navigator、概要线和完整初始视口;剩余差异为图标体系、默认主题色、工具栏按钮分组密度和高级面板内容仍未完全复刻 lx-doc/KMind。
Task 12: Browser Smoke 升级
Files:
-
Modify:
scripts/task166-mindmap-phase6-block-smoke.js -
Output:
tmp/task166-mindmap-phase6-block-smoke/result.json -
Output:
tmp/task166-mindmap-phase6-block-smoke/*.png -
smoke 使用真实测试账号登录
http://127.0.0.1:3000/。- 2026-05-11 验证:
tree-shell-smoke-helpers.js使用mnote.e2e@example.com/ “测试账号快速登录”,本轮 smoke baseUrl 为http://127.0.0.1:3000。
- 2026-05-11 验证:
-
smoke 插入或打开 mindmap block 后断言
simple-mind-mapcanvas/SVG 容器非零尺寸。- 2026-05-11 验证:
assertMindmapReady()断言simple-mind-map-runtime、runtime box、节点数和边数。
- 2026-05-11 验证:
-
smoke 断言 toolbar、sidebar trigger、bottom navigator、context menu 入口存在。
- 2026-05-11 验证:smoke 断言
mindmap-schema-toolbar、mindmap-schema-sidebar、mindmap-schema-navigator、mindmap-schema-count,并打开节点/画布 context menu。
- 2026-05-11 验证:smoke 断言
-
smoke 执行插入子节点、插入同级节点、删除节点、缩放、回根节点。
- 2026-05-11 验证:输出
toolbarActions.insertChildOk/insertSiblingOk/deleteOk=true,navigatorActions.centerRootOk/zoomOk=true。
- 2026-05-11 验证:输出
-
smoke 打开右侧栏的主题、结构、大纲 panel。
- 2026-05-11 验证:截图包含
sidebar-theme.png、sidebar-structure.png、sidebar-outline.png。
- 2026-05-11 验证:截图包含
-
smoke reload 后断言已编辑文本、节点数量、view state 至少一项保持。
- 2026-05-11 验证:reload 后断言编辑文本、节点数量、主题、结构、节点样式、导图样式;view scale 输出为
1.2。
- 2026-05-11 验证:reload 后断言编辑文本、节点数量、主题、结构、节点样式、导图样式;view scale 输出为
-
smoke 输出
ok、documentId、mindmapId、nodeCount、edgeCount、toolbarActions、sidebarPanels、navigatorActions、contextMenuActions、screenshots。- 2026-05-11 验证:
tmp/task166-mindmap-phase6-block-smoke/result.json输出ok=true、documentId、mindmapId、nodeCount=6、edgeCount=5、toolbarActions、sidebarActions、navigatorActions、contextMenuActions、screenshots。
- 2026-05-11 验证:
-
smoke 失败时必须标出阶段:
projection_load_failed、adapter_init_failed、runtime_render_failed、ui_shell_missing、command_failed、reload_mismatch。- 2026-05-11 实现:失败分支从 error message / error layer 归类
failureStage,并保存99-failure.png。
- 2026-05-11 实现:失败分支从 error message / error layer 归类
-
验证:
node /mnt/Data1T/mnote/scripts/task166-mindmap-phase6-block-smoke.js- 2026-05-11 通过:
ok=true,截图已刷新。
- 2026-05-11 通过:
Task 13: 旧实现边界收口
Files:
-
Modify:
wolai-frontend/src/components/editor/blocks/MindmapBlock.tsx -
Modify:
wolai-frontend/src/components/editor/blocks/MindmapToolbar.tsx -
Modify:
wolai-frontend/src/components/editor/blocks/MindmapSidebar.tsx -
Modify:
wolai-frontend/src/components/editor/blocks/MindmapNavigator.tsx -
Modify:
wolai-frontend/src/components/editor/blocks/MindmapContextMenu.tsx -
Modify:
wolai-frontend/src/components/editor/editor-host-config.test.ts -
给旧 React mindmap 组件族补清晰注释:legacy/reference/compat,不是 3000 文档页默认主链。
- 2026-05-11 实现:
MindmapBlock.tsx及MindmapToolbar.tsx、MindmapSidebar.tsx、MindmapNavigator.tsx、MindmapContextMenu.tsx、MindmapMiniMap.tsx、MindmapCount.tsx、MindmapSidebarTrigger.tsx顶部均标注 legacy/reference/compat 边界。
- 2026-05-11 实现:
-
默认文档页 host 为
leptos_tiptap_island时,不加载旧 ReactMindmapBlock作为主编辑路径。- 2026-05-11 验证:
editor-host-config.test.ts断言默认 host 为leptos_tiptap_island,blocknote/旧 debug host 均折返 island。
- 2026-05-11 验证:
-
历史 toolbar/sidebar/navigator/context menu 只能作为 schema 抽取来源,不在运行时并行挂两套 UI。
- 2026-05-11 验证:smoke 断言默认不存在旧
mindmap-command-toolbar、mindmap-sidebar、mindmap-bottom-barfallback。
- 2026-05-11 验证:smoke 断言默认不存在旧
-
保留旧组件用于对照、独立迁移或回收,不在本任务中删除。
- 2026-05-11 处理:旧 React 组件族仍被独立导图页
/mindmap/[docId]/[mindmapId]引用,暂不移动;已删除重复的wolai-frontend/src/app/dev/mindmap/page.tsx,对应副本保留在recycle/wolai-frontend/src/app/dev/mindmap/page.tsx。
- 2026-05-11 处理:旧 React 组件族仍被独立导图页
-
静态测试禁止把
.mnote-mindmap-react-mount或window.__mindmapInstance作为 Phase 6 成功条件。- 2026-05-11 实现:
editor-host-config.test.ts新增 Phase 6 mindmap 成功选择器断言,成功条件限定为mnote-mindmap-editor-root、simple-mind-map-runtime、mindmap-rust-shell。
- 2026-05-11 实现:
-
验证:
cd /mnt/Data1T/mnote/wolai-frontend && pnpm test -- editor-host-config- 2026-05-11 通过:实际匹配全量 106 files,418 tests passed。
Task 14: 文档与执行记录
Files:
-
Modify:
design/06-mindmap/reference/6-mindmap-kernel-phase6-projection-editor-v1.md -
Modify:
design/06-mindmap/reference/6-mindmap-leptos-adapter-reference-notes-v1.md -
Modify:
design/06-mindmap/done/6-mindmap-phase6-leptos-ui-shell-reuse-checklist-v1.md -
Modify:
docs/superpowers/plans/2026-05-10-mindmap-phase6-projection-editor-checklist.md -
在总设计稿中明确:UI shell reuse 是
leptos-mindmap的 Phase 6 后续收口,不改变 kernel-first 主合同。- 2026-05-11 更新:
6-mindmap-kernel-phase6-projection-editor-v1.md新增10.2 UI shell reuse 收口状态,指向本 checklist。
- 2026-05-11 更新:
-
在 reference notes 中补历史 React UI 壳能力表。
- 2026-05-11 已完成:
6-mindmap-leptos-adapter-reference-notes-v1.md第 8 节覆盖 toolbar、sidebar、navigator/MiniMap/count、context menu。
- 2026-05-11 已完成:
-
在旧执行 checklist 中补一条链接,说明后续 UI 可用度按本 checklist 继续。
- 2026-05-11 更新:
docs/superpowers/plans/2026-05-10-mindmap-phase6-projection-editor-checklist.md新增Task 13: UI Shell Reuse 后续收口。
- 2026-05-11 更新:
-
每完成一个 task,在本文件勾选对应节点,并附验证命令或截图路径。
- 2026-05-11 已按 Task 10-13 补充命令、截图和 result.json 证据。
-
如果某项被后续实现废弃,移动到“暂不做项”并写明原因,不静默删除。
- 2026-05-11 当前没有静默删除项;context menu DOM 仍标记为 NodeView 过渡层,未误报为纯 Rust shell。
退出标准
- 当前文档页 mindmap block 默认使用真实
simple-mind-mapruntime,而不是手写 SVG/DOM 假导图。 - toolbar、sidebar、navigator、context menu 都来自可复用 UI schema 或等价配置,不再散落为 NodeView 内硬编码按钮。
- 第一阶段常用操作可用:插入子节点、插入同级节点、删除、编辑文本、缩放、回根、主题切换、结构切换、大纲查看。
- 所有编辑动作都经过 kernel command 或
compatPayload.patch,不把整棵 runtime data 作为 canonical truth。 - smoke 有插入后、操作后、打开侧栏后、打开右键菜单后、reload 后截图。
- 人工对照
tmp/image copy 60.png或tmp/image copy 70.png,当前实现已经呈现为可用工作台,而不是“无头 runtime + 临时按钮”。
暂不做项
- 不直接把 lx-doc Vue2 应用作为 mnote 文档页内嵌主链。
- 不恢复旧 React
MindmapBlock.tsx为默认编辑器主链。 - 不在本阶段 Rust-native 重写
simple-mind-maplayout / hit-test / renderer。 - 不在本阶段完整复刻 KMind 多根、MOC、思源块镜像、PDF 标注、全量导入导出、主题设计器。
- 不删除历史 React mindmap 文件;先作为迁移参考和 compat 资产保留。
- 旧 React
MindmapBlock.tsx组件族暂不移动到 recycle,直到/mindmap/[docId]/[mindmapId]独立页切到同一leptos-mindmapadapter contract;当前只回收重复 dev 路由。