- 统一 local-first MVP 后阶段架构口径,补充 process 执行总序和 Reasonix 协作记录 - 归档已完成的 design checklist,标注参考型 process,更新 AGENTS/REASONIX/架构文档 - 补充文件树/主编辑器下载与上下文菜单相关实现、bug 记录和 smoke 脚本 验证:git diff --check;codegraph sync .;cargo test -p mnote-web;node --check scripts/task476-filetree-editor-context-menu-download-smoke.js
3.1 KiB
3.1 KiB
5-18 Main Editor Tab State 与错误占位 Checklist v1
状态:done
归档说明(2026-05-21):主编辑器 tab state 与错误占位已完成并验证。
日期:2026-05-20
Owner:主编辑区 tab runtime /
web_shell.rs
1. 目标
补齐 P0-1 的最小轻量 editor group 状态:在不引入完整 VSCode 多 group 的前提下,让 page/resource tab 共享一个明确的浏览器内存状态模型,并补上 resource 打开失败时的错误占位 tab。
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- 可新增
scripts/task462-resource-tab-error-placeholder-smoke.js
3. 禁止事项
- 不引入完整 VSCode DI、多 editor group grid、preview/sticky 持久化。
- 不改变 Page Aggregate 或 local Markdown 事实源。
- 不修改 resource resolver、OnlyOffice、File Tree lifecycle;这些由其它 checklist 处理。
4. Checklist
- 定义轻量 main editor tab 状态,至少能表达
id、kind、title、dirty、saving、hasExternalConflict、lastActiveAt、status。 - page tab 与 resource tab 激活统一通过同一状态更新入口。
- resource tab close guard 读取同一状态入口,避免散落检查。
- 打开 resource 失败时创建或保留 error placeholder tab。
- error placeholder tab 有明确错误 UI,可关闭,不留下半注册 panel/session。
- 更新 Rust 字符串 contract test,确保关键 runtime marker 存在。
5. 验收
node --check scripts/task462-resource-tab-error-placeholder-smoke.jsnode scripts/task462-resource-tab-error-placeholder-smoke.jsnode scripts/task457-main-editor-resource-tab-smoke.jscargo test -p mnote-web web_shell -- --test-threads=1
6. 本轮执行记录
- 已完成:
createResourceSession已补lastActiveAt,resource session 继续持有dirty/saving/hasExternalConflict/status等关闭保护状态。- page tab 与 resource tab 继续统一通过
activateMainEditorTab激活,并在激活 resource tab 时更新 MRU 与lastActiveAt。 closeResourceTab继续通过resourceTabCloseGuardReason读取关闭保护状态。openResourceInActiveTab失败时保留 resource tab,并通过.mnote-resource-tab-error渲染可见错误占位。- 新增
scripts/task462-resource-tab-error-placeholder-smoke.js,已验证失败资源会出现错误占位、可关闭、连续失败不会产生失控 tab。 web_shell.rs与styles.rs已补关键 runtime / CSS contract。
- 未完成:
lastActiveAt时间戳尚未用于 tab 排序(当前 MRU 队列resourceTabMru控制切换顺序)。dirty/saving/hasExternalConflict状态在 resource tab close guard 中读出但无 UI 确认弹窗(仅 console.warn + 禁止关闭)。
- 风险:无
7. 非目标
- 不做 tab 持久化恢复。
- 不做 tab 拖拽排序、context menu 或 close others。