# 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.excalidraw` 和 `manifest.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` ## 验证结果 执行命令: ```bash 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` 默认行为,不自动迁移,不默认替代。