edit | blame | history | raw

2026-06-25 Mindraw选择

用户目标

继续向 Phase 3.5 前的完整 .mindraw 格式推进;本轮聚焦 Phase 2 剩余的目录包选择、系统打开边界和失败态状态保护。

已完成事项

  • 新增 openDirectoryOrDocument() store 入口:
  • 普通目录继续执行 loadDirectory()
  • .mindraw 路径按文档打开,调用 read_mindraw_package,随后加载父目录,避免浏览包内部。
  • 菜单 Open Directory、快捷键 Cmd/Ctrl+O、侧边栏目录选择按钮均接入 openDirectoryOrDocument()
  • 侧边栏空目录提示从 “No .excalidraw files found” 改为 “No Mindraw documents found”。
  • 新增自动化测试:
  • 普通目录选择仍加载目录。
  • .mindraw 目录包选择会打开包文档且不对包内部执行 get_file_tree
  • damaged .mindraw 打开失败时保持当前 tab / active file 不变,并弹出失败提示。
  • 本地 debug app smoke:
  • .excalidraw 文件可通过 open -n -a .../Mindraw.app Legacy.excalidraw 进入 opened-files 链路并打开。
  • .mindraw 普通目录包通过同一 open -a 方式未进入 Tauri Opened 文档事件,符合当前“不注册 macOS package”的 MVP 边界。

关键决策 / 边界

  • 本轮不注册 macOS package,不修改 tauri.conf.json.mindraw file association。
  • Finder / open -a 直接打开普通 .mindraw 目录包目前不能视为完成;该体验需要后续 macOS package 注册或 Phase 3.5 deep link 方案继续验证。
  • 目录选择器返回 .mindraw 的路径已在应用层补齐,属于 Phase 2 可推进范围。

文件变更

  • src/store/useStore.ts
  • src/store/useStore.test.ts
  • src/components/Sidebar.tsx
  • src/hooks/useMenuHandler.ts
  • src/hooks/useKeyboardShortcuts.ts
  • 02-P/qa/mindraw-phase2-runtime-check.md
  • 02-P/plan-progress.markdown
  • CODEGRAPH.md

验证结果

  • npm run test:run -- src/lib/documentFormat.test.ts src/store/useStore.test.ts:PASS,36 个测试通过。
  • npm run test:run -- src/hooks/useMenuHandler.test.ts src/lib/documentFormat.test.ts src/store/useStore.test.ts:PASS,51 个测试通过。
  • npm run tauri -- build --debug --bundles app:PASS,生成本地 QA debug .app
  • git diff --check:PASS。
  • 本轮 debug app 验证后已停止 App、恢复 preferences、删除临时验证目录。

未决问题

  • 仍需真实原生 folder picker 点击选择 .mindraw 包的人工验证;自动化已覆盖同一结果路径。
  • Finder 直接打开 .mindraw 普通目录包未完成,需后续 package 注册或 deep link spike。
  • Finder 拖放 .mindraw 到 App、完整 damaged manifest / hash mismatch / illegal asset path UI 文案矩阵仍未完成。

后续建议

继续 Phase 2:补 Save As 弹窗过滤器人工验证、Finder 拖放行为、失败态人工矩阵。Phase 2 结论收口后再进入 Phase 3 导出互通;Phase 3.5 全局链接仍保持后置。