align workbench open editors tabs

This commit is contained in:
lix-2026
2026-05-21 05:57:19 +08:00
parent eba1010191
commit fd94792ea6
12 changed files with 897 additions and 2 deletions
@@ -0,0 +1,41 @@
# Reasonix Worker ASidex Open Editors 轻量视图
Project root: `/mnt/Data1T/mnote`
## 目标
参考 `reference-code/sidex-main` 的 VSCode `OpenEditorsView`,实现 MNote 轻量 open editors snapshot。优先让 page tab + resource tabs 的状态可被统一读取和测试;只有在非常小范围可控时才新增轻量 UI。
## Ownership
你可以修改:
- `rust/crates/mnote-web/src/routes/web_shell.rs`
- `rust/crates/mnote-web/src/ssr/styles.rs`
- 可新增 `scripts/task47*-open-editors-*.js`
- `design/05-editor-mainline/process/5-24-open-editors-lightweight-view-checklist-v1.md`
不要修改:
- `rust/crates/mnote-web/src/ssr/pages/layout.rs`
- `rust/crates/mnote-web/src/routes/onlyoffice.rs`
- ACP / Hermes 相关文件
## 参考
- Sidex`OpenEditorsView``IEditorGroupsService``GroupModelChangeKind`
- MNote`resourceTabRegistry``activateMainEditorTab``createResourceTabDom``closeResourceTab`
## 验收
- `cargo test -p mnote-web web_shell -- --test-threads=1`
- 如新增 smoke,运行对应 `node --check``node` 命令
## 输出要求
最终回复列出:
- 修改文件
- 实现的 snapshot/UI 合同
- 验证命令结果
- 未完成项和风险
@@ -0,0 +1,43 @@
# Reasonix Worker BSidex Tab 键盘与 MRU 对照实现
Project root: `/mnt/Data1T/mnote`
## 目标
参考 Sidex / VSCode `MultiEditorTabsControl`,为 MNote main tab 增加最小键盘/MRU 行为:左右箭头切换 focus、`Enter`/`Space` 激活、关闭 active resource tab 后按 MRU 或 page tab 回退。
## Ownership
由于 Worker A 也可能修改 `web_shell.rs`,本 worker **不要直接修改源码**。请输出具体 patch 建议到:
- `.codex/reasonix-proposals/2026-05-21-tab-keyboard-mru-proposal.md`
你可以修改:
- `.codex/reasonix-proposals/2026-05-21-tab-keyboard-mru-proposal.md`
- `design/05-editor-mainline/process/5-25-editor-tab-keyboard-and-mru-checklist-v1.md`
不要修改:
- `rust/crates/mnote-web/src/routes/web_shell.rs`
- `rust/crates/mnote-web/src/ssr/styles.rs`
- 任何业务源码
## 参考
- Sidex`MultiEditorTabsControl`
- MNote`bindMainEditorPageTab``activateMainEditorTab``resourceTabMru`
## 验收
只需文档级验收:
- proposal 明确列出要改的函数、事件、DOM 状态和测试断言。
## 输出要求
最终回复列出:
- 生成的 proposal 文件
- 建议修改点
- 认为最小安全实现的步骤
@@ -0,0 +1,42 @@
# Reasonix Worker C:资源打开 resolver 收敛
Project root: `/mnt/Data1T/mnote`
## 目标
继续对照 Sidex editor input resolver,收敛 MNote 正文附件、FileTree asset、new-window、active-tab 的资源打开策略。重点检查并尽量减少 `layout.rs` 中正文附件与 FileTree 的重复 Office / local file 分支。
## Ownership
你可以修改:
- `rust/crates/mnote-web/src/ssr/pages/layout.rs`
- `scripts/task463-onlyoffice-resolver-smoke.js`
- `design/05-editor-mainline/process/5-26-resource-open-resolver-convergence-checklist-v1.md`
不要修改:
- `rust/crates/mnote-web/src/routes/web_shell.rs`
- `rust/crates/mnote-web/src/routes/onlyoffice.rs`
- ACP / Hermes 相关文件
## 约束
- 文件树 edit-mode active tab 行为已经可用,不能破坏。
- 正文附件 `弹窗编辑` 应继续进入 main resource tab。
- 正文附件 `新窗口编辑` 应继续打开浏览器新窗口。
- md/text/code 仍应走 tiptap / 内建编辑器,不要改成 OnlyOffice。
## 验收
- `cargo test -p mnote-web sidebar_tree_runtime_opens_office_assets_through_resource_shell -- --test-threads=1`
- `node scripts/task463-onlyoffice-resolver-smoke.js`
## 输出要求
最终回复列出:
- 修改文件
- 收敛了哪些重复分支
- 验证命令结果
- 未完成项和风险
@@ -0,0 +1,38 @@
# Reasonix Worker DFileTree / Open Editors 生命周期 smoke 收口
Project root: `/mnt/Data1T/mnote`
## 目标
参考 Sidex Explorer + Open Editors 联动,收口 MNote filetree action smoke 和 checklist 状态。重点跑通或明确阻塞 `task430` / `task471`,并补充 action/open editor state 的断言建议。
## Ownership
你可以修改:
- `scripts/task430-vscode-explorer-stage7-smoke.js`
- `scripts/task471-local-folder-bulk-resource-trash-smoke.js`
- `design/04-tree-domain/process/4-44-filetree-action-layer-paste-drop-delete-v1.md`
- `design/04-tree-domain/process/4-45-filetree-open-editors-lifecycle-link-checklist-v1.md`
不要修改:
- `rust/crates/mnote-web/src/ssr/pages/layout.rs`
- `rust/crates/mnote-web/src/routes/web_shell.rs`
- `rust/crates/mnote-web/src/routes/local_folder_source.rs`
- 任何 Rust 源码
## 验收
- `node --check scripts/task430-vscode-explorer-stage7-smoke.js`
- `node --check scripts/task471-local-folder-bulk-resource-trash-smoke.js`
- `node scripts/task471-local-folder-bulk-resource-trash-smoke.js`
## 输出要求
最终回复列出:
- 修改文件
- 实际跑过的 smoke
- 哪些失败是环境前置,哪些是真 bug
- 对 4-44 / 4-45 checklist 的更新