Files
mnote/design/05-editor-mainline/process/5-23-editor-side-target-secondary-pane-v1.md
T

2.6 KiB
Raw Blame History

5-23 Editor Side Target / Secondary Pane Checklist v1

状态:process

日期:2026-05-20

Ownerdocument pane runtime / side target

1. 目标

补齐 P1secondary 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
  • 可新增聚焦 smokescripts/task47*-side-target-smoke.js

3. 禁止事项

  • 不实现完整多 editor group grid。
  • 不改变 primary page / resource tab 的默认 active tab 行为。
  • 不把 secondary pane 等同为 active resource tab。
  • 不删除现有 secondaryDocumentId query 兼容。

4. Checklist

  • resolveResourceOpen / document pane runtime 对外暴露 openTarget=side 的稳定返回。
  • 页面文档的 side target 继续打开 secondary pane,并更新/清理既有 secondary query。
  • 资源类 side target 有明确行为:当前阶段可先显示 unsupported/error placeholder,但必须可观测且不误开新窗口。
  • 关闭 secondary pane 不影响 active resource tab URL state。
  • smoke 覆盖 active tab 与 secondary pane 可同时存在、互不清状态。

5. 验收

  • cargo test -p mnote-web web_shell -- --test-threads=1
  • node scripts/task457-main-editor-resource-tab-smoke.js
  • 如新增 smokenode 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.jsnode --check scripts/task457-main-editor-resource-tab-smoke.jscargo test -p mnote-web web_shell -- --test-threads=1node scripts/task472-side-target-secondary-pane-smoke.jsnode scripts/task457-main-editor-resource-tab-smoke.js

6. 非目标

  • 不实现 split editor layout、drag editor between groups、MRU across groups。