59 lines
2.3 KiB
Markdown
59 lines
2.3 KiB
Markdown
# Reasonix Batch A2 Worker B:local folder restore 后 FileTree focus/reveal
|
||||
|
|
|
|||
|
|
Project root: `/mnt/Data1T/mnote`
|
|||
|
|
|
|||
|
|
## 目标
|
|||
|
|
|
|||
|
|
修复 `task473-local-folder-trash-restore-no-refresh-focus-gap-smoke.js` 记录的缺口:local folder 非 md 资源从 trash workbench restore 后,FileTree 恢复行应有 `data-selected="true"` 或 `data-active="true"` 或 `data-focused="true"`,且不触发页面 reload。
|
|||
|
|
|
|||
|
|
## Ownership
|
|||
|
|
|
|||
|
|
允许修改:
|
|||
|
|
|
|||
|
|
- `rust/crates/mnote-web/src/ssr/pages/layout.rs`
|
|||
|
|
- `rust/crates/mnote-web/src/routes/gateway.rs`
|
|||
|
|
- `scripts/task473-local-folder-trash-restore-no-refresh-focus-gap-smoke.js`
|
|||
|
|
- `design/04-tree-domain/process/4-28-trash-restore-location-reveal-focus-v1.md`
|
|||
|
|
- `design/04-tree-domain/process/4-46-batch-a-filetree-action-trash-smoke-execution-checklist-v1.md`
|
|||
|
|
- `.codex/reasonix-tasks/results/batch-a2-worker-b-restore-focus.md`
|
|||
|
|
|
|||
|
|
禁止:
|
|||
|
|
|
|||
|
|
- 不改 delete 默认进入 trash 的语义。
|
|||
|
|
- 不把 browser reload 当成 no-refresh。
|
|||
|
|
- 不引入跨窗口 postMessage 或复杂新服务。
|
|||
|
|
- 不提交 git。
|
|||
|
|
|
|||
|
|
## 推荐实现方向
|
|||
|
|
|
|||
|
|
短路径即可:
|
|||
|
|
|
|||
|
|
1. trash workbench local restore 成功后,把恢复对象的 filetree row-id 写入 `sessionStorage`。
|
|||
|
|
- 对非 md local resource,row-id 是 `local:asset:${original_relative_path}`。
|
|||
|
|
- 当前 row HTML 有 `data-trash-entry-id`,通常是 `local-file:${relative_path}`;可在 HTML 中新增 `data-filetree-row-id`,避免前端猜。
|
|||
|
|
2. `refreshLocalFolderSidebarSnapshot()` 渲染后消费这个 pending row-id,选择/聚焦对应 filetree row。
|
|||
|
|
3. 复用现有 `selectSidebarFileTreeRow(row, {})` 或新增小 helper,不要只改 DOM 属性导致 selection store 不一致。
|
|||
|
|
|
|||
|
|
## 验收命令
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cargo test --manifest-path rust/Cargo.toml -p mnote-web layout -- --test-threads=1
|
|||
|
|
cargo test --manifest-path rust/Cargo.toml -p mnote-web gateway -- --test-threads=1
|
|||
|
|
node --check scripts/task473-local-folder-trash-restore-no-refresh-focus-gap-smoke.js
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
如本机 3000 可用,运行:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/google-chrome-stable node scripts/task473-local-folder-trash-restore-no-refresh-focus-gap-smoke.js
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 最终输出
|
|||
|
|
|
|||
|
|
写入 `.codex/reasonix-tasks/results/batch-a2-worker-b-restore-focus.md`,包含:
|
|||
|
|
|
|||
|
|
- 修改文件
|
|||
|
|
- 实现策略
|
|||
|
|
- 验证命令和结果
|
|||
|
|
- 未完成项/风险
|