chore: align mvp design governance

- 统一 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
This commit is contained in:
lix-2026
2026-05-21 09:04:13 +08:00
parent fd94792ea6
commit 1956a8a21a
69 changed files with 3390 additions and 111 deletions
@@ -1,5 +1,9 @@
# 5-15 本地 Markdown 路径身份统一 Checklist v1
> 状态:done
>
> 归档说明(2026-05-21):本地 Markdown 路径身份统一 checklist 已完成并从 `process/` 归档到 `done/`
## 背景
当前本地 Markdown 主链正在对齐 VS Code 文件模型:普通 `.md` 文件的运行时身份应来自文件资源地址,而不是 frontmatter 或 MNote 内部稳定 ID。
@@ -132,4 +136,3 @@ cargo test --manifest-path rust/Cargo.toml -p mnote-web local_page_aggregate_acc
cargo test --manifest-path rust/Cargo.toml -p mnote-web local_page_id_initialization_returns_path_id_without_writing_page_ids -- --nocapture
cargo test --manifest-path rust/Cargo.toml -p mnote-web tree_command_local_folder -- --nocapture
```
@@ -1,6 +1,8 @@
# 5-16 Editor Group 与 Resource Tab 安全收口 Checklist v1
> 状态:process
> 状态:done
>
> 归档说明(2026-05-21):本文件核心安全收口已完成;正式 tab state 与错误占位剩余项已由 `5-18` 覆盖并归档。
>
> 日期:2026-05-20
>
@@ -20,7 +22,7 @@
## 3. Checklist
- [ ] 定义轻量 `MainEditorTabEntry` / `mainEditorTabRegistry` 语义,至少包含 `id``kind``title``dirty``saving``hasExternalConflict``lastActiveAt`
- [x] 定义轻量 `MainEditorTabEntry` / `mainEditorTabRegistry` 语义,至少包含 `id``kind``title``dirty``saving``hasExternalConflict``lastActiveAt`(由 `5-18` 的主 tab state 收口覆盖)
- [x] 保持 page tab 为固定 tab,但 resource tab 激活/关闭应走同一套 registry 状态更新。
- [x] `closeResourceTab` 关闭前检查 resource session
- [x] `saving=true` 时禁止直接关闭或等待保存完成。
@@ -28,14 +30,14 @@
- [x] `dirty=true` 时触发保存或确认流程;不得直接释放 session。
- [x] 关闭 active resource tab 后按 MRU 回到上一个 resource tab;没有可用 resource tab 时才回到 page tab。
- [x] resource tab 激活时更新稳定 `aria-selected``tabindex` 和 panel hidden 状态。
- [ ] 打开失败时保留 error placeholder tab,允许用户关闭或重试,不要留下半注册状态。
- [x] 打开失败时保留 error placeholder tab,允许用户关闭或重试,不要留下半注册状态。(由 `5-18` 覆盖)
## 4. 验收
- [x] 打开两个 resource tab,切到第二个并关闭后,应回到第一个,而不是无条件回 page tab。
- [x] 编辑 resource markdown 后立即点关闭,不应静默丢弃未保存内容。
- [x] 保存中关闭不会释放 editor session。
- [ ] 打开失败的 resource tab 有明确错误占位,并可关闭。
- [x] 打开失败的 resource tab 有明确错误占位,并可关闭。(由 `5-18` 覆盖)
- [x] 现有 `task457-main-editor-resource-tab-smoke.js` 继续通过。
- [x] 新增 close dirty / MRU smoke 通过。
@@ -43,7 +45,7 @@
- 已合入:resource tab MRU、关闭 guard、`aria-selected` / `tabindex` 同步、关闭后回退到上一个 resource tab。
- 已新增:`scripts/task460-resource-tab-close-dirty-smoke.js` 覆盖近期本地输入后的关闭阻止。
- 未完成:正式 `MainEditorTabEntry` 模型打开失败 placeholder tab。
- 后续覆盖:正式 `MainEditorTabEntry` 模型打开失败 placeholder tab 已由 `5-18` 收口
## 5. 非目标
@@ -1,6 +1,8 @@
# 5-17 Resource Editor Kind 与 Smoke 矩阵 Checklist v1
> 状态:process
> 状态:done
>
> 归档说明(2026-05-21):资源 editor kind 与 smoke 矩阵已完成;resolver 与 OnlyOffice 回源后续由 `5-19` 覆盖并归档。
>
> 日期:2026-05-20
>
@@ -1,6 +1,8 @@
# 5-18 Main Editor Tab State 与错误占位 Checklist v1
> 状态:process
> 状态:done
>
> 归档说明(2026-05-21):主编辑器 tab state 与错误占位已完成并验证。
>
> 日期:2026-05-20
>
@@ -1,6 +1,8 @@
# 5-19 Resource Open Resolver 与 OnlyOffice 回源 Checklist v1
> 状态:process
> 状态:done
>
> 归档说明(2026-05-21):resource open resolver 与 OnlyOffice 回源已完成;外部 DocumentServer 协同验证不作为本 checklist 阻塞项。
>
> 日期:2026-05-20
>
@@ -1,6 +1,8 @@
# 5-20 Resource Tab Close Confirm Checklist v1
> 状态:process
> 状态:done
>
> 归档说明(2026-05-21):resource tab close guard 可见提示已完成。
>
> 日期:2026-05-20
>
@@ -1,6 +1,8 @@
# 5-21 Editor Tab URL / Active Row / Canonical Identity Checklist v1
> 状态:process
> 状态:done
>
> 归档说明(2026-05-21):editor tab URL、active row 与 canonical identity 收口已完成。
>
> 日期:2026-05-20
>
@@ -1,6 +1,8 @@
# 5-22 Mindmap Main Editor Tab Kind Checklist v1
> 状态:process
> 状态:done
>
> 归档说明(2026-05-21):mindmap main editor tab kind 收口已完成。
>
> 日期:2026-05-20
>
@@ -1,6 +1,8 @@
# 5-23 Editor Side Target / Secondary Pane Checklist v1
> 状态:process
> 状态:done
>
> 归档说明(2026-05-21):`openTarget=side` 到 secondary pane 的轻量合同已完成。
>
> 日期:2026-05-20
>
@@ -1,6 +1,8 @@
# 5-24 Open Editors Lightweight View Checklist v1
> 状态:process
> 状态:done
>
> 归档说明(2026-05-21):open editors lightweight snapshot / 可观测模型已完成;完整 sidebar UI 不是本阶段目标。
>
> 日期:2026-05-21
>
@@ -1,6 +1,8 @@
# 5-25 Editor Tab Keyboard and MRU Checklist v1
> 状态:process
> 状态:done
>
> 归档说明(2026-05-21):editor tab keyboard 与 MRU 行为已完成。
>
> 日期:2026-05-21
>
@@ -2,6 +2,8 @@
> 更新时间:2026-05-19
>
> 当前状态:`process-reference`。本文是参考实现采用矩阵,不是当前执行 checklist;具体实现任务应拆到对应 domain 的 process/done 文档。
>
> 关联背景:
> - `/mnt/Data1T/mnote/CURRENT_ARCHITECTURE.md`
> - `/mnt/Data1T/mnote/design/05-editor-mainline/process/5-5-page-aggregate-single-truth-alignment-v1.md`
@@ -2,6 +2,8 @@
> 更新时间:2026-04-19
>
> 当前状态:`process-reference`。本文只作为 tiptap / Notion-like 行为模型参考,不再作为当前执行 checklist;默认主编辑器已是页面内 `leptos-tiptap` island。
>
> 这份文档已经按当前进展修正:
>
> 现在的问题不再是“这套模板能不能迁进来”,而是:
@@ -2,6 +2,8 @@
> 更新时间:2026-05-18
>
> 当前状态:`process-reference`。本文作为 Page Aggregate 单一真源长期方案保留;当前执行进度与剩余项以 `5-6` 及 MVP 后阶段 checklist 为准。
>
> 2026-05-18 口径补充:
> - 页面聚合的默认 source 已开始向 local-first workspace 收口;页面正文、标题、设置和上传资源不应再默认把 Convex 视作主数据层。
> - 本文中涉及 Convex 的表述只应理解为 local-first 与 Convex-backed 两种 `WorkspaceSource` 的过渡兼容背景,不应再作为默认产品形态解释。
@@ -2,6 +2,7 @@
> 更新时间:2026-04-30
>
> 当前状态:`process-reference`。本文只保留 Wolai 体验复刻目标和取证基线;持续执行与安全边界以 `08-wolai-aline-test-flow` 和 `wolai-aline` skill 为准。
> **Wolai-aline 执行口径更新(2026-04-30):** 本文只保留体验复刻任务拆解和产品目标。所有 Wolai 对标测试、浏览器取证、编辑权限、安全边界、subagent 使用、截图复核和 smoke 补齐,统一以 `/home/lix/.codex/skills/wolai-aline` 与 `/mnt/Data1T/mnote/design/08-wolai-aline-test-flow/process/wolai-aline-test-flow-v1.md` 为准。若本文旧段落与该 skill 冲突,以 skill 为准。
>