# 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.md`、`CODEGRAPH.md`、`INDEX.md`、`02-P/plan-progress.markdown`、`03-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: `7d93c4d`,`Release 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 权限提示的首次使用说明。