2.6 KiB
2.6 KiB
5-16 Editor Group 与 Resource Tab 安全收口 Checklist v1
状态:process
日期:2026-05-20
Owner:
mnote-web主编辑区 runtime / resource tab
1. 目标
把当前浏览器内存版 resource tab 收口为轻量 editor group 模型的第一阶段:不引入完整 VSCode 多 group,不改变 Page Aggregate 事实源,只解决打开、激活、关闭和脏资源防护的最小闭环。
2. 允许修改范围
rust/crates/mnote-web/src/routes/web_shell.rsrust/crates/mnote-web/src/ssr/pages/document.rsrust/crates/mnote-web/src/ssr/styles.rsscripts/task457-main-editor-resource-tab-smoke.js- 可新增一个聚焦 smoke,例如
scripts/task460-resource-tab-close-dirty-smoke.js
3. Checklist
- 定义轻量
MainEditorTabEntry/mainEditorTabRegistry语义,至少包含id、kind、title、dirty、saving、hasExternalConflict、lastActiveAt。 - 保持 page tab 为固定 tab,但 resource tab 激活/关闭应走同一套 registry 状态更新。
closeResourceTab关闭前检查 resource session:saving=true时禁止直接关闭或等待保存完成。hasExternalConflict=true时禁止静默关闭。dirty=true时触发保存或确认流程;不得直接释放 session。
- 关闭 active resource tab 后按 MRU 回到上一个 resource tab;没有可用 resource tab 时才回到 page tab。
- resource tab 激活时更新稳定
aria-selected、tabindex和 panel hidden 状态。 - 打开失败时保留 error placeholder tab,允许用户关闭或重试,不要留下半注册状态。
4. 验收
- 打开两个 resource tab,切到第二个并关闭后,应回到第一个,而不是无条件回 page tab。
- 编辑 resource markdown 后立即点关闭,不应静默丢弃未保存内容。
- 保存中关闭不会释放 editor session。
- 打开失败的 resource tab 有明确错误占位,并可关闭。
- 现有
task457-main-editor-resource-tab-smoke.js继续通过。 - 新增 close dirty / MRU smoke 通过。
4.1 本轮执行记录
- 已合入:resource tab MRU、关闭 guard、
aria-selected/tabindex同步、关闭后回退到上一个 resource tab。 - 已新增:
scripts/task460-resource-tab-close-dirty-smoke.js覆盖近期本地输入后的关闭阻止。 - 未完成:正式
MainEditorTabEntry模型、打开失败 placeholder tab。
5. 非目标
- 不实现完整 VSCode preview / pinned / sticky / drag reorder。
- 不实现 tab 持久化恢复。
- 不改变 secondary pane 布局。
- 不把
resourceTabRegistry移到后端持久状态。