edit | blame | history | raw

2026-06-25 目录包 Spike

用户目标

继续推进 Round01 .mindraw 工作,执行 Tauri 目录包 spike:验证普通目录包在选择、打开、保存、watch、拖放、路径校验和失败态上的可行性,但不进入生产 .mindraw 读写实现。

已完成事项

  • 只读核对当前 Tauri / 前端文件入口:
  • src/store/useStore.ts
  • src-tauri/src/lib.rs
  • src/components/ExcalidrawEditor.tsx
  • src/types/index.ts
  • 新增 spike 目录:02-P/Round01-mindraw-defstart/spikes/001-tauri-directory-package/
  • 新增一次性验证脚本:validate-directory-package.mjs
  • 新增并更新 spike 报告:README.md
  • 用 P0 fixtures 执行验证,并把结论写回 Round01 文档和统一进展台账。
  • 更新 INDEX.md 登记 spike 目录。

关键结论

  • Spike verdict:PARTIAL
  • 目录包文件系统语义可行:
  • P0 fixture 预期状态全部通过。
  • 临时目录副本可用 temp-file rename 模拟 scene + manifest 保存,并重验为 valid。
  • watch 能观察到包内 drawing.excalidrawmanifest.json 变更。
  • .mindraw 目录包可被确定性识别为目录。
  • 当前生产 App 不能直接接入 .mindraw
  • openFilePath / openFilePaths 只接受 .excalidraw
  • Tauri file association 只过滤 .excalidraw
  • read_file / save_file / rename_file / delete_file 假设目标是单个 .excalidraw 文件。
  • 文件树会把 .mindraw 当普通目录展开。
  • Save As 当前保存单个 .excalidraw 文件。
  • 拖放当前走图片导入,不会打开 .mindraw 目录包。
  • DocumentTab 当前只表达单文件路径和一份 content。

文件变更

  • 02-P/Round01-mindraw-defstart/spikes/001-tauri-directory-package/README.md
  • 02-P/Round01-mindraw-defstart/spikes/001-tauri-directory-package/validate-directory-package.mjs
  • 02-P/Round01-mindraw-defstart/README.md
  • 02-P/Round01-mindraw-defstart/first-batch-review.md
  • 02-P/plan-progress.markdown
  • INDEX.md

验证结果

执行命令:

node 02-P/Round01-mindraw-defstart/spikes/001-tauri-directory-package/validate-directory-package.mjs

结果:

  • minimal-empty.mindraw:PASS。
  • single-image.mindraw:PASS。
  • missing-asset.mindraw:PASS,按预期 warning。
  • damaged-manifest.mindraw:PASS,按预期 invalid。
  • damaged-scene.mindraw:PASS,按预期 invalid。
  • illegal-path.mindraw:PASS,按预期 invalid。
  • hash-mismatch.mindraw:PASS,按预期 invalid。
  • legacy-excalidraw/:PASS。
  • 原子保存模拟:PASS。
  • watch 包内变更:PASS。
  • 拖放分类:PARTIAL,需后续生产实现补独立 .mindraw drop/open 链路。

未决问题

  • Phase 1 生产实现尚未开始。
  • 需要先写 DocumentKind / DocumentRef / DocumentFormatService 的最小 PR 边界,再改生产代码。
  • mindraw:// runtime、macOS package 注册、documentId 索引恢复仍后置。

后续建议

  • 下一步进入 Phase 1 生产实现设计。
  • 先定义文档引用模型,再改文件树、打开、保存、Save As、file association 和拖放。
  • 继续保护旧 .excalidraw 默认行为,不自动迁移,不默认替代。