- 统一 local-first MVP 后阶段架构口径,补充 process 执行总序和 Reasonix 协作记录 - 归档已完成的 design checklist,标注参考型 process,更新 AGENTS/REASONIX/架构文档 - 补充文件树/主编辑器下载与上下文菜单相关实现、bug 记录和 smoke 脚本 验证:git diff --check;codegraph sync .;cargo test -p mnote-web;node --check scripts/task476-filetree-editor-context-menu-download-smoke.js
4.5 KiB
4.5 KiB
4-46 FileTree / Editor Context Menu Download v1
状态:done
日期:2026-05-21
Owner:FileTree action layer / editor attachment context menu
1. 问题
- 文件树 asset/resource 行右键菜单没有
下载动作,虽然后端已有/api/local-folder/files/open?download=true下载入口。 - 主编辑器附件当前主要依赖 hover 后的更多按钮打开附件菜单,真实右键附件链接没有复用同一套菜单。
- 本地文件下载响应只有
Content-Disposition: attachment,缺少 filename,浏览器可能无法使用原文件名保存,中文文件名尤其不稳定。
2. 目标
- 文件树 asset 右键菜单显示
下载。 - 点击文件树 asset 下载时复用现有 attachment 下载链路,并记录
data-mnote-filetree-last-action=download/data-mnote-filetree-last-action-status=requested。 - 文件树已选中多个 asset/resource 时,右键任一已选文件执行
下载会批量下载当前选择集中的资源文件。 - 文件树主 Markdown 文件行和本地文件夹行也应支持下载;文件夹下载为
.tar包。 - 文件拖到本地文件树文件夹时,应上传到该文件夹路径,不应因缺少
rootUri或documentId报错。 - 主编辑器附件右键打开附件 context menu,菜单内容与 hover 更多按钮一致。
- 本地文件下载响应带
filename与filename*,支持中文文件名。
3. Checklist
- 文件树 asset 菜单增加
download动作。 handleTreeContextMenuAction处理 filetree assetdownload。Ctrl/Cmd多选和Shift范围多选后支持文件树 asset 批量下载。- 文件树主 Markdown 文件行支持下载原始
.md文件。 - 文件树本地文件夹行支持下载
.tar包。 - 文件拖到本地文件树文件夹时使用目标文件夹
targetRelativePath上传。 - 主编辑器附件链接右键打开 attachment menu。
/api/local-folder/files/open?download=true响应补Content-Disposition文件名。- Rust contract / route 测试覆盖新增行为。
- Reasonix 浏览器截图复核右键菜单与下载入口。
- Codex post-fix browser smoke 复核文件树 asset 单文件下载与 Ctrl/Cmd、Shift 多选下载。
4. 验收
cargo test -p mnote-web sidebar_tree_runtime_renders_context_menu_and_scoped_title_updates -- --test-threads=1cargo test -p mnote-web local_file_open_download_sets_content_disposition_filename -- --test-threads=1cargo test -p mnote-web local_folder_open_downloads_directory_as_tar -- --test-threads=1cargo test -p mnote-web web_shell -- --test-threads=1node --check scripts/task476-filetree-editor-context-menu-download-smoke.jsnode scripts/task476-filetree-editor-context-menu-download-smoke.js- Reasonix pre-fix browser result:
tmp/reasonix-filetree-editor-context-menu-2026-05-21/result.json - Codex post-fix browser result:
tmp/task476-filetree-editor-context-menu-download-smoke/result.json
4.1 执行记录
- 2026-05-21:Reasonix 浏览器测试确认:文件树 asset 右键菜单缺少
download,主编辑器附件 hover/菜单下载可用。 - 2026-05-21:已补 filetree asset
download菜单项和 action handler,下载时复用 attachment 下载链并记录 filetree action 状态。 - 2026-05-21:已补文件树多选下载,右键已选资源时按当前选择集批量触发浏览器下载;
task476smoke 覆盖Ctrl多选 2 个文件与Shift范围多选 3 个文件。 - 2026-05-21:已补主 Markdown 文件行下载、文件夹
.tar下载和拖到文件夹上传;task476smoke 覆盖README.md下载、README.tar下载,以及README/drag-upload-note.txt上传落盘。 - 2026-05-21:已补主编辑器附件链接真实右键菜单,右键打开与 hover 更多按钮一致的 attachment menu。
- 2026-05-21:已补 local-folder open 下载文件名:
Content-Disposition同时提供 ASCII fallbackfilename与 UTF-8filename*。 - 2026-05-21:
task476post-fix browser smoke 通过;文件树 asset 单文件下载得到浏览器 suggested filenamereport-a.pdf,Ctrl/Cmd多选下载得到report-a.pdf/report-c.pdf,Shift范围下载得到report-a.pdf/report-b.pdf/report-c.pdf。该 smoke 中编辑器附件链接未渲染为可见项,作为本轮文件树多选下载的非阻塞项记录为editor_attachment_not_visible。
5. 非目标
- 不一次性实现 attachment 菜单中所有历史占位动作。
- 不改变文件树删除语义。
- 不重构完整 command service。