# 2026-06-25 Mindraw验证 ## 用户目标 继续推进 `.mindraw` Phase 2 的 Tauri 目录包验证:选择、打开、保存、watch、路径校验和失败态;不进入全局链接实现,不提前 Phase 3.5。 ## 已完成事项 - 继续完善 `.mindraw` Phase 1/2 初始生产实现的文件树操作一致性: - `.mindraw` 文件树显示标题不再暴露扩展名。 - `.mindraw` 重命名保持 `.mindraw` 扩展和文档 kind。 - `.mindraw` 删除按目录包整体删除。 - 修复 Tauri watch 缺口: - `AppState` 持有当前 watcher,避免 watcher 在命令返回后释放。 - watch 事件过滤扩展到 `.excalidraw` 文件、`.mindraw` 目录包和 `.mindraw` 包内路径。 - 完成本地 QA debug app smoke: - 临时目录中 `.mindraw` 显示为顶层文档,不暴露包内 `drawing.excalidraw`。 - `RuntimeBoard.mindraw` 可打开到画布。 - `Cmd+S` 可保存 `.mindraw` 包,`drawing.excalidraw` 和 `manifest.scene.sha256` 同步更新。 - 旧 `.excalidraw` 文件仍可打开。 - 外部新增 / 删除 `.mindraw` 包后文件树能刷新为 3 files / 2 files。 - 已恢复本机 Mindraw preferences,并删除临时验证目录。 ## 关键决策 - 本轮 debug `.app` 仅作为本地 QA 构建,不作为可分发包,不递增版本,不生成 DMG。 - Phase 2 仍保持 `Active`:打开 / 保存 / 文件树 / watch 主链路已通过 smoke,但文件选择器、Finder 拖放和失败态人工矩阵仍未完整验收。 ## 文件变更 - `src/lib/documentFormat.ts` / `src/lib/documentFormat.test.ts`:补充 `.mindraw` 标题和扩展名规范化能力及测试。 - `src/components/TreeView.tsx`:文件树重命名、显示、删除确认使用统一文档标题。 - `src/store/useStore.ts` / `src/store/useStore.test.ts`:`.mindraw` 重命名、删除、Save As 和 kind 保持测试补强。 - `src-tauri/src/lib.rs`:`.mindraw` 目录包重命名 / 删除、watch 生命周期和 watch 事件过滤修复;后端测试增至 15 个。 - `CODEGRAPH.md`:更新 `.mindraw`、watch 和 QA 证据。 - `02-P/plan-progress.markdown`:更新 Phase 2 runtime smoke 进度和后续未覆盖项。 - `02-P/qa/mindraw-phase2-runtime-check.md`:新增本轮 QA 证据报告。 - `INDEX.md`:登记新增 QA 报告。 ## 验证结果 - `npm run test:run -- src/lib/documentFormat.test.ts src/store/useStore.test.ts`:PASS,33 个测试通过。 - `cargo test --locked --manifest-path src-tauri/Cargo.toml mindraw_package_tests`:PASS,15 个测试通过。 - `npm run tauri -- build --debug --bundles app`:PASS,生成本地 QA debug `.app`。 - `git diff --check`:PASS。 - `cargo fmt --manifest-path src-tauri/Cargo.toml --check`:失败,原因是本机 stable toolchain 未安装 `cargo-fmt` 组件。 ## 未决问题 - 原生文件选择器选择 `.mindraw` 目录包的体验尚未人工验收。 - Finder 拖放 `.mindraw` 到 App 尚未人工验收;当前 Finder 拖拽已实现主链路仍是图片导入。 - damaged manifest、hash mismatch、illegal asset path 等失败态的 UI 文案尚未跑完整人工矩阵;后端拒绝路径已有自动化测试。 ## 后续建议 下一步继续 Phase 2:补文件选择器、Finder/package 打开体验、拖放和失败态人工矩阵;通过后再考虑 Phase 3 导出互通,Phase 3.5 全局链接仍保持后置。