39 lines
1.7 KiB
Markdown
39 lines
1.7 KiB
Markdown
# Checklist: Side Pane Slash Overlay Isolation
|
||||
|
|
|
|||
|
|
## 目标
|
|||
|
|
|
|||
|
|
主编辑器 slash 菜单不得在侧栏/secondary pane 中出现;不支持侧栏打开资源时不得留下会响应 slash 的侧栏 editor host。
|
|||
|
|
|
|||
|
|
## 允许修改
|
|||
|
|
|
|||
|
|
- `rust/crates/mnote-web/src/routes/web_shell.rs`
|
|||
|
|
- 必要时 `rust/spikes/leptos-tiptap-spike/src/lib.rs`
|
|||
|
|
- 相关测试 / smoke
|
|||
|
|
|
|||
|
|
## 禁止事项
|
|||
|
|
|
|||
|
|
- 不禁用主编辑器 slash 菜单。
|
|||
|
|
- 不删除侧栏页面编辑能力。
|
|||
|
|
- 不用全局 CSS 隐藏全部 slash menu 作为表面修复。
|
|||
|
|
|
|||
|
|
## 待办
|
|||
|
|
|
|||
|
|
- [x] `positionSlashMenuForRoot` 只查当前 root 内菜单;不能 fallback 到全局第一个 slash menu。
|
|||
|
|
- [x] `activeEditorRootForSlashMenu` 优先选择含有 selection/focus 的可见 root;secondary hidden/unsupported root 不参与。
|
|||
|
|
- [x] 打开 unsupported side target 时彻底卸载 secondary view 并清理遗留 slash overlay。
|
|||
|
|
- [x] 为 primary + secondary 同时存在时的 slash 隔离补测试。
|
|||
|
|
- [x] 若 leptos runtime 自身生成全局 overlay,需要给 overlay 绑定 `data-pane-role` 或 editor host id。
|
|||
|
|
|
|||
|
|
## 本轮执行记录
|
|||
|
|
|
|||
|
|
- 代码:`web_shell.rs` 增加 `setSlashMenuInactive` / `hideSlashMenusOutsideRoot`,非当前 selection/focus root 的 slash menu 会被标记 `data-mnote-slash-inactive` 并隐藏。
|
|||
|
|
- 浏览器验证:`tmp/bug-20260521-workbench-browser-verify/result-slash.json`,`primaryMenus=1`、`secondaryMenus=0`、`inactiveSecondary=1`,截图 `05-slash-primary-secondary-isolation.png`。
|
|||
|
|
|
|||
|
|
## 验收命令
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd /mnt/Data1T/mnote/rust
|
|||
|
|
cargo test -p mnote-web document_shell_runtime_renders_resource_tab_runtime -- --test-threads=1
|
|||
|
|
cargo test -p mnote-web document_shell_runtime_positions_slash_menu_per_editor_host -- --test-threads=1
|
|||
|
|
```
|