# 2026-06-25 Mindraw 实现 ## 用户目标 用户要求继续推进 `.mindraw` 格式建设;当前重点是不要停留在 Tauri 目录包 spike,而是向“Mindraw 格式 + 全局链接”目标继续开工。 ## 已完成事项 - 完成 `.mindraw` Phase 1/2 初始生产实现: - 新增前端文档格式识别模块,识别顶层 `.excalidraw` 文件和 `.mindraw` 目录包。 - 明确拒绝 `.mindraw` 包内 `drawing.excalidraw` / `.assets/*` 作为独立文档打开。 - 前端打开链路可对 `.mindraw` 包调用后端 `read_mindraw_package`。 - 前端保存链路可对 dirty `.mindraw` tab 调用后端 `save_mindraw_package`。 - 后端新增 `.mindraw` 包读取、manifest / scene hash 校验、资产 warning、保存时 scene hash 更新。 - 后端文件树和系统打开入口已识别 `.mindraw` 目录包,并把包显示为单个文档节点,不展开内部 scene 文件。 - Save As 已支持创建新 `.mindraw` 目录包,生成新的 `documentId`、ISO 时间、`manifest.json`、`drawing.excalidraw` 和 `.assets/`。 - 同步更新工程地图和计划进度: - `CODEGRAPH.md` - `INDEX.md` - `02-P/plan-progress.markdown` ## 关键决策 - `.mindraw` 仍按普通目录包处理,不注册 macOS package。 - `.mindraw` 包内 `drawing.excalidraw` 是实现细节,不暴露为独立文档入口。 - 当前支持既有 `.mindraw` 包的读取/保存,以及 Save As 新 `.mindraw` 包;旧 `.excalidraw` 自动迁移、全局链接 runtime 仍后置。 ## 文件变更 - 新增: - `src/lib/documentFormat.ts` - `src/lib/documentFormat.test.ts` - 修改: - `src/types/index.ts` - `src/store/useStore.ts` - `src/store/useStore.test.ts` - `src-tauri/src/lib.rs` - `src-tauri/Cargo.toml` - `src-tauri/Cargo.lock` - `CODEGRAPH.md` - `INDEX.md` - `02-P/plan-progress.markdown` ## 验证结果 - `npm run test:run -- src/lib/documentFormat.test.ts src/store/useStore.test.ts`:2 个测试文件,30 个用例通过。 - `cargo test --locked --manifest-path src-tauri/Cargo.toml mindraw_package_tests`:12 个用例通过。 - `npm run build`:通过;仍存在既有 Assistant 字体解析 warning、Tauri dialog 动静态 import warning、chunk size warning。 - `cargo fmt --manifest-path src-tauri/Cargo.toml` 未运行成功:当前 Rust toolchain 缺少 `cargo-fmt` 组件;已手动检查新增 Rust 段落。 ## 未决问题 - 还需要真实 App 验证目录包选择、Save As 弹窗过滤器、Finder 打开、watch 刷新、拖放和失败态文案。 - Phase 3.5 全局链接 runtime 尚未开始;当前只保留到后续 spike。 ## 后续建议 下一步做真实 App 入口验证;通过后进入 Phase 3 / Phase 3.5 前置设计,为后续 `mindraw://` 全局链接定位打基础。