edit | blame | history | raw

Phase 3.6.1 收尾

日期:2026-06-26

用户目标

用户确认先做 Phase 3.6.1。目标是继续补齐 .mindraw native 文件体验:active .mindraw 的普通 Save As... 应创建新的 .mindraw 目录包,并提供原生 picker 直接打开 .mindraw package document。

已完成事项

  • 版本提升到 0.8.2
  • 新增 File > Open Mindraw Package... 菜单项。
  • 新增 Tauri command select_mindraw_package,原生 picker 可返回 .mindraw package path。
  • 新增前端 openMindrawPackageFromPicker(),picker 选包后走 openDirectoryOrDocument() 打开。
  • 新增 saveCurrentFileAs(),active .mindraw 普通 Save As... 分流到 save_mindraw_package_as;普通 .excalidraw 仍走 save_file_as
  • 为 Save As 增加安全建议文件名:.mindraw 使用 原名 copy.mindraw.excalidraw 使用 原名 copy.excalidraw;后端只接收文件名,不接收路径片段。
  • 补齐前端和 Rust 回归测试。
  • 更新 CHANGELOG.mdCODEGRAPH.mdINDEX.md02-P/plan-progress.markdown03-O/C2.builds/README.md
  • 新增 QA 报告:02-P/qa/mindraw-phase361-native-file-polish-check.md
  • 生成并安装本机 DMG:03-O/C2.builds/releases/Build202606260113/Mindraw_0.8.2_aarch64-Build202606260113.dmg
  • 创建冻结提交和 tag:
  • Commit: 7d93c4dRelease 0.8.2 native file polish
  • Tag: v0.8.2-Build202606260113

关键决策

  • Phase 3.6.1 作为 Phase 3.6 后的小阶段记录,不改写 Phase 3.6 的历史边界。
  • Open Mindraw Package... 不替代 Open Directory;它是专门选择 .mindraw package document 的 native 文件入口。
  • 专用 Save As Mindraw Package... 保留,用于从 .excalidraw 显式转存 .mindraw;active .mindraw 下普通 Save As... 直接走 package save flow。
  • release 仍为本地 ad-hoc 签名测试包,不是 Developer ID 签名或公证包。

文件变更

  • src/hooks/useMenuHandler.ts
  • src/hooks/useMenuHandler.test.ts
  • src-tauri/src/lib.rs
  • src-tauri/src/menu.rs
  • package.json
  • src-tauri/Cargo.toml
  • src-tauri/tauri.conf.json
  • CHANGELOG.md
  • CODEGRAPH.md
  • INDEX.md
  • 02-P/plan-progress.markdown
  • 02-P/qa/mindraw-phase361-native-file-polish-check.md
  • 03-O/C2.builds/README.md
  • 03-O/C2.builds/releases/Build202606260113/release-manifest.txt(构建产物目录记录,未纳入 Git)

验证结论

  • npm run test:run -- src/hooks/useMenuHandler.test.ts:PASS,24 个测试通过。
  • npm run test:run -- src/store/useStore.test.ts src/hooks/useKeyboardShortcuts.test.tsx src/lib/mindrawDeepLink.test.ts src/lib/documentFormat.test.ts:PASS,49 个测试通过。
  • 合并目标前端回归:PASS,5 个测试文件 / 73 个测试通过。
  • cargo test --manifest-path src-tauri/Cargo.toml:PASS,38 个测试通过。
  • cargo check --manifest-path src-tauri/Cargo.toml:PASS。
  • npm run build:PASS,仍有既有字体、dialog dynamic/static import 和 chunk size warning。
  • BUILD_ID=202606260113 npm run package:mindraw:PASS。
  • release .app 经 ad-hoc 重签名后 codesign --verify --deep --strict:PASS。
  • /Applications/Mindraw.app 安装版版本为 0.8.2,strict codesign:PASS。
  • .mindraw package mdls 显示 com.mindraw.document,type tree 包含 com.apple.package:PASS。
  • 安装版 active .mindraw 普通 Save As... 生成新 .mindraw 包:PASS。
  • 安装版 Open Mindraw Package... picker 可直接选择 .mindraw package 并返回主窗口打开:PASS。
  • DMG SHA256:8833797e7c00bbe7751e5745ce91e3bec0708ed980eab316364901ec1a4210be

未决问题

  • cargo fmt --manifest-path src-tauri/Cargo.toml -- --check 仍因本机 stable toolchain 未安装 rustfmt 未执行成功。
  • cargo test --locked --manifest-path src-tauri/Cargo.toml 因版本提升后本地 ignored Cargo.lock 需要更新而未执行成功,已用非 locked Rust 全量测试替代。
  • Finder 真实拖放 .mindraw 文档 smoke 仍只保留自动化覆盖,后续需要更稳定 UI 自动化或人工补证据。
  • release 包仍未 Developer ID 签名、公证,也未做 fresh machine 验证。
  • Windows / PC 文件关联、协议注册和安装器仍未开始。

后续建议

  • 下一阶段建议进入 Phase 3.7 Companion App Distribution:最低版本检测、安装引导、协议/文件关联诊断、m4c doctor 接口。
  • 若继续打磨 native 文件体验,优先补 Finder 真实拖放 smoke、签名公证 fresh machine 验证,以及 TCC 权限提示的首次使用说明。