edit | blame | history | raw

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.jsondrawing.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:// 全局链接定位打基础。