- 统一 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
53 lines
2.7 KiB
Markdown
53 lines
2.7 KiB
Markdown
# 5-23 Editor Side Target / Secondary Pane Checklist v1
|
||
|
||
> 状态:done
|
||
>
|
||
> 归档说明(2026-05-21):`openTarget=side` 到 secondary pane 的轻量合同已完成。
|
||
>
|
||
> 日期:2026-05-20
|
||
>
|
||
> Owner:document pane runtime / side target
|
||
|
||
## 1. 目标
|
||
|
||
补齐 P1:secondary pane 与 main tab 目前是两套概念。目标是先建立轻量 side target 合同,让 `openTarget=side` 能稳定映射到当前 secondary pane,而不是继续分散在“右侧边栏打开”和 resource tab 特例里。
|
||
|
||
## 2. 允许修改范围
|
||
|
||
- `rust/crates/mnote-web/src/routes/web_shell.rs`
|
||
- `rust/crates/mnote-web/src/ssr/pages/layout.rs`
|
||
- `scripts/task457-main-editor-resource-tab-smoke.js`
|
||
- 可新增聚焦 smoke:`scripts/task47*-side-target-smoke.js`
|
||
|
||
## 3. 禁止事项
|
||
|
||
- 不实现完整多 editor group grid。
|
||
- 不改变 primary page / resource tab 的默认 active tab 行为。
|
||
- 不把 secondary pane 等同为 active resource tab。
|
||
- 不删除现有 `secondaryDocumentId` query 兼容。
|
||
|
||
## 4. Checklist
|
||
|
||
- [x] `resolveResourceOpen` / document pane runtime 对外暴露 `openTarget=side` 的稳定返回。
|
||
- [x] 页面文档的 side target 继续打开 secondary pane,并更新/清理既有 secondary query。
|
||
- [x] 资源类 side target 有明确行为:当前阶段可先显示 unsupported/error placeholder,但必须可观测且不误开新窗口。
|
||
- [x] 关闭 secondary pane 不影响 active resource tab URL state。
|
||
- [x] smoke 覆盖 active tab 与 secondary pane 可同时存在、互不清状态。
|
||
|
||
## 5. 验收
|
||
|
||
- [x] `cargo test -p mnote-web web_shell -- --test-threads=1`
|
||
- [x] `node scripts/task457-main-editor-resource-tab-smoke.js`
|
||
- [x] 如新增 smoke:`node scripts/task47*-side-target-smoke.js`
|
||
|
||
## 5.1 本轮执行记录
|
||
|
||
- 已合入:`openResourceAsSideTarget`,资源侧栏目标先显示可观测 unsupported placeholder,不再误开新窗口或污染 active resource tab。
|
||
- 已合入:`tree.page.open` + `openTarget=side` 的 document side target wrapper,复用现有 `openSecondaryDocument` / `secondaryDocumentId` 合同。
|
||
- 已合入:资源类 `openTarget=side` 使用 secondary pane unsupported placeholder 时清理 `secondaryDocumentId` / `secondarySourceKind` / `secondaryRootUri`,保留 active resource tab 的 `resourceTab` URL state。
|
||
- 验证记录:`node --check scripts/task472-side-target-secondary-pane-smoke.js`、`node --check scripts/task457-main-editor-resource-tab-smoke.js`、`cargo test -p mnote-web web_shell -- --test-threads=1`、`node scripts/task472-side-target-secondary-pane-smoke.js`、`node scripts/task457-main-editor-resource-tab-smoke.js`。
|
||
|
||
## 6. 非目标
|
||
|
||
- 不实现 split editor layout、drag editor between groups、MRU across groups。
|