Files
mnote/design/04-tree-domain/done/4-31-vscode-explorer-context-menu-minimum-v1.md
T
lix-2026 384da4e44c feat(tree): checkpoint resource lifecycle work
提交当前顶层 mnote Git 工作区,范围集中在 04-tree-domain 的 resource/trash/filetree 生命周期、mnote-web resource_trash 路由、Convex/Next 兼容接口、sidebar/file-tree 客户端适配、smoke 脚本与对应设计/bug 记录。

不包含被 ignore 的 design/05-editor-mainline/reference-code/leptos-tiptap 嵌套仓库改动。新增 smoke 的测试密码改为运行时读取 MNOTE_E2E_PASSWORD,避免提交明文 credential assignment。
2026-05-16 07:38:45 +08:00

2.5 KiB

4-31 VSCode Explorer Context Menu Minimum v1

状态:done 创建时间:2026-05-15 所属主线:04-tree-domain / VSCode Explorer 文件树与垃圾箱闭环 来源:design/10-review/07-vscode-explorer-filetree-trash-gap-review.md 阶段 7

1. 目标

先让主 Sidebar 右键菜单显式覆盖 VSCode Explorer 常见项,避免缺项被误读为“无能力”。已有 executor 的项接真实动作;暂无 executor 的项以禁用态展示原因。

2. 已落地

  • New File:复用当前“新建子页面”能力。
  • New Folder:禁用态,说明页面树暂不区分文件夹,待 Resource Tree folder 合同收口。
  • Paste Into:主 Sidebar 节点右键已接真实 paste target,目标为当前菜单节点;Ctrl/Cmd+V 继续使用 focused target。
  • Refresh:调用 refreshTree(),不使用 window.location.reload()
  • Collapse All:清空展开集合。
  • Copy Path:复制当前页面标题路径。
  • Copy Relative Path:复制不带根斜杠的页面标题路径,按当前 workspace tree 计算。
  • Reveal:展开父链并滚动到当前节点。

3. 验证命令

cd /mnt/Data1T/mnote/wolai-frontend
pnpm test src/components/sidebar/sidebar-context-menu-source.test.ts
pnpm test src/components/sidebar/sidebar-paste-preflight-source.test.ts -- --runInBand

结果:sidebar-context-menu-source.test.ts 1 项通过;sidebar-paste-preflight-source.test.ts 3 项通过。覆盖菜单项存在、Copy Relative Path 接入、Paste Into 右键 action target、仍保留 New Folder 禁用态、未引入 window.location.reload

4. 待补

  • 2026-05-15 已补 3000 主入口真实浏览器 smoke:MNOTE_UI_BASE_URL=http://127.0.0.1:3000 node scripts/task430-vscode-explorer-stage7-smoke.js
  • task430 验证 filetree 右键菜单可见 New File / New Folder / Paste Into / Refresh / Collapse All / Copy Path / Reveal;当时 New FolderPaste Into 为禁用态,且 title 中说明原因。
  • 2026-05-15 二次补强:Paste Into 已从禁用态升级为真实 paste target;主 Sidebar 抽出 executeFileTreePaste(targetDocumentIdOverride),右键传当前菜单节点 node.id,键盘 Ctrl/Cmd+Vnull 保留 focused target。
  • New Folder 需等待 folder/resource tree 合同,而不是在页面树里临时伪造文件夹真相。
  • 2026-05-15 二次补强:已补 Copy Relative Path;空白区右键菜单当前仍没有独立入口,后续若新增必须复用同一 paste helper 和 target 规则。