Files
mnote/design/04-tree-domain/done/4-30-vscode-explorer-f2-inline-rename-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.4 KiB
Raw Blame History

4-30 VSCode Explorer F2 Inline Rename v1

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

1. 目标

补齐 wolai-frontend 文件树 DOM host 的 F2 行内重命名入口,避免键盘路径只触发 reducer 事件但 UI 仍无 inline editor。

2. 已落地

  • tree-shell-dom-host.tsx 为 filetree row 增加行内 tree-rename-input
  • F2 不再只转发 beginRenameFocused,而是直接进入当前 row 的 inline rename 状态。
  • Enter / blur 提交,Escape 取消。
  • 页面 / index row 提交到 /api/tree/commandsrename,并通过 onTreeMutation 回写 tree.node.renamed
  • 普通 asset row 提交到 /api/media/batchrename,并广播 wolai:assets-changed
  • F2 输入框已补行内 validation:空名、非法路径字符、同级重名会在 input 下方显示错误并阻断提交,不再依赖 alert。
  • 普通附件重命名时,如果用户输入不带扩展名,会保留原附件扩展名后再提交,例如 附件.pdf 输入 附件新名 会提交 附件新名.pdf
  • jsdom / 旧浏览器环境缺少 CSS.escape 时使用本地 fallback,避免 F2 聚焦逻辑抛错。

3. 验证命令

cd /mnt/Data1T/mnote/wolai-frontend
pnpm test src/components/sidebar/tree-shell-host.test.tsx

结果:1 个测试文件通过,10 项测试通过;新增测试覆盖 F2 进入 inline input、提交 tree.node.rename、空名 / 非法字符 / 同级重名行内阻断,以及附件扩展名保留。

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 row F2 inline rename:请求 /api/tree/commands action=rename,Convex 标题更新,无需刷新可见。
  • task430 覆盖普通附件 row F2 inline rename:请求 /api/media/batch action=renameConvex media_assets.file_name 更新,无需刷新可见。
  • 3000 Rust SSR 主壳已补 F2 inline rename;页面树 fallback 中仍保留 prompt 式重命名,按当前口径不属于 filetree F2 小阶段完成条件。
  • 2026-05-15 二次补强:本次只补 wolai-frontend DOM host 的行内 validationRust SSR srcdoc 路径如继续作为 3000 主入口,需要在后续 smoke 中补同等级 validation parity。