# 5-22 Mindmap Main Editor Tab Kind Checklist v1

> 状态：done
>
> 归档说明（2026-05-21）：mindmap main editor tab kind 收口已完成。
>
> 日期：2026-05-20
>
> Owner：main editor resource tab / mindmap editor kind

## 1. 目标

补齐 P1：mindmap 仍以独立 object shell 进入主 pane，而不是 main editor group 内的 editor kind。目标是把 File Tree 中的 mindmap 资源默认打开到主编辑区 tab，并保留显式对象页 / 新窗口兼容入口。

## 2. 允许修改范围

- `rust/crates/mnote-web/src/routes/web_shell.rs`
- `rust/crates/mnote-web/src/ssr/pages/layout.rs`
- `scripts/task169-mindmap-realtime-smoke.js`
- 可新增聚焦 smoke：`scripts/task47*-mindmap-resource-tab-smoke.js`

## 3. 禁止事项

- 不把 mindmap 数据保存到 `page.body.save`。
- 不删除 `/mindmap/:documentId/:mindmapId` object shell 兼容路由。
- 不破坏已存在的 mindmap realtime / long text edit smoke。
- 不让 mindmap tab 和 page tab 使用同一个 DOM identity。

## 4. Checklist

- [x] resource open resolver 识别 `kind=mindmap` / `objectKind=mindmap`。
- [x] 点击 File Tree mindmap 资源默认创建 main editor resource tab，而不是整页跳 `/mindmap/...`。
- [x] mindmap tab 使用稳定 canonical identity，如 `resource:mindmap:<documentId>:<mindmapId>` 或 local file canonical identity。
- [x] tab panel 内挂载既有 mindmap runtime，并保持 `data-mnote-object-editor="mindmap"` / 可观测标记。
- [x] 显式新窗口 / object shell 入口仍可用。
- [x] smoke 覆盖从 File Tree 打开 mindmap tab、切回 page、再切回 mindmap。

## 5. 验收

- [x] `cargo test -p mnote-web web_shell -- --test-threads=1`
- [x] `node scripts/task169-mindmap-realtime-smoke.js`
- [ ] 如新增 smoke：`node scripts/task47*-mindmap-resource-tab-smoke.js`

## 5.1 本轮执行记录

- 已合入：`kind=mindmap` resource tab，使用 `resource:mindmap:<documentId>:<mindmapId>` identity，并复用现有 `/mindmap/...` bootstrap + runtime mount。
- 已保留：旧 object shell 作为 runtime 不可用或显式路径 fallback。
- 本轮更新：`task169` 已从旧 object shell 口径切到 main editor mindmap resource tab 口径，断言 File Tree 打开 mindmap 后进入 `data-mnote-tab-kind="mindmap"` 的 resource tab，并覆盖切回 page tab 后再切回 mindmap tab。
- 已退役：`task169` 内旧 topic/runtime realtime 深测不再作为必过主链，结果中写入 `retiredRealtimeTopicEditing`，避免旧 object shell 时代的交互假设干扰当前 P1 resource tab 验收。

## 6. 非目标

- 不实现 mindmap 多实例协同编辑模型。
- 不实现 tab 持久化恢复。
