edit | blame | history | raw

2026-06-25 Phase 3.6 原生包与链接恢复

用户目标

用户认可新增小阶段 Phase 3.6:Native Package & Link Recovery,要求不要停在 Finder 显示为文件夹、全局链接找不到 documentId 的半成品状态,而是继续把 .mindraw 的 macOS 原生文件体验和链接恢复补上。

已完成事项

  • 将版本提升到 0.8.1,用于承载 Phase 3.6 修复。
  • 新增 src-tauri/Info.plist,补齐 .mindraw 的 macOS document type / UTI 声明:
  • com.mindraw.document
  • LSTypeIsPackage = true
  • conforms to com.apple.packagepublic.directory
  • 更新 src-tauri/tauri.conf.json.mindraw file association。
  • src-tauri/src/lib.rs 中补齐 package 打开链路:
  • RunEvent::Opened 与 macOS kAEOpenDocuments Apple Event 统一进入打开处理。
  • 归一化 macOS package file URL 的尾随 /
  • 增加 Foundation NSURL.filePathURL() 兜底解析。
  • 增加 deep link 选包恢复:
  • registry 缺失、陈旧或 documentId 不匹配时,前端提示用户选择 .mindraw 包。
  • 后端 resolve_mindraw_link_from_package 校验所选包 documentId 与链接匹配后重新登记并打开。
  • 新增 QA 文档 02-P/qa/mindraw-phase36-native-package-check.md
  • 更新 02-P/plan-progress.markdownCODEGRAPH.mdINDEX.md03-O/C2.builds/README.mdCHANGELOG.md
  • 创建源码冻结 commit:
  • 202fe6ccaacf799ecad74219075df3ffe2be757b
  • commit message: Implement Mindraw native package recovery
  • 创建 release tag:
  • v0.8.1-Build202606252311
  • 生成验收候选 DMG:
  • /Users/ar/Projects/ExcalidrawX/03-O/C2.builds/releases/Build202606252311/Mindraw_0.8.1_aarch64-Build202606252311.dmg
  • SHA256: f62ce9ce89665683a1207230d65f92453a5ddf36f771fe3e4ff60b42d5f571d5
  • 已将 /Applications/Mindraw.app 替换为 0.8.1 版本并做本机安装版 smoke。

验证结论

  • npm run test:run -- src/lib/imageDrop.test.ts src/hooks/useMenuHandler.test.ts src/hooks/useKeyboardShortcuts.test.tsx src/lib/documentFormat.test.ts src/lib/obsidianExcalidraw.test.ts src/lib/mindrawDeepLink.test.ts src/store/useStore.test.ts:7 个文件 / 87 个测试通过。
  • cargo test --locked --manifest-path src-tauri/Cargo.toml:37 个测试通过。
  • cargo check --manifest-path src-tauri/Cargo.toml:通过。
  • npm run build:通过,保留既有字体、dialog import 和 chunk size warning。
  • npm run tauri -- build --debug --bundles app:通过。
  • hdiutil verifyBuild202606252311 DMG 校验通过。
  • release app 和挂载后 app 的 codesign --verify --deep --strict --verbose=2:通过。
  • mdls 新建 .mindraw 包:返回 kMDItemContentType = com.mindraw.document,type tree 包含 com.apple.packagepublic.directorycom.mindraw.document
  • 正式安装版冷启动打开:open /tmp/mindraw-phase36-installed-cold.mindraw 登记对应 fixture documentId
  • 正式安装版运行中打开:open -a /Applications/Mindraw.app /tmp/mindraw-phase36-installed-open-a.mindraw 登记对应 fixture documentId
  • 测试 registry 记录已清理,只保留用户原有 mdoc_18bc569bd7821178_ea25

关键决策

  • 当前 Phase 3.6 定义为 .mindraw native package / link recovery,不再把 m4c companion app 分发就绪占用为 Phase 3.6;companion app 后移为 Phase 3.7 / backlog。
  • 0.8.1 是本轮小修版本,Build202606252311 是对应验收候选包。
  • release DMG 不是 Developer ID 签名或公证包;本轮只做本机 ad-hoc sign 以满足安装测试和回滚验证。
  • 用户补充授权:后续为测试可直接卸载、替换或重装 /Applications/Mindraw.app,无需再为这个可恢复的安装态单独确认;该授权不包含用户画布文件、registry 用户数据或源码删除。

未决问题

  • 普通 macOS Save As 面板直接创建 .mindraw 包仍未实现。
  • 原生 picker 直接选择 package document 仍未作为完成能力签收。
  • Finder 拖放 .mindraw 真实 smoke 的稳定自动化仍未补齐。
  • Windows / PC 文件关联、协议注册、安装器和 smoke 仍未开始。
  • Phase 4 AssetStore 外置资产权威化仍是后续任务。
  • 本机 stable-aarch64-apple-darwin 未安装 rustfmtcargo fmt --manifest-path src-tauri/Cargo.toml -- --check 未能执行。

后续建议

  • 用户体验验收重点:安装 Build202606252311,确认 Finder 里 .mindraw 表现为 package document,双击/open 可打开;旧链接找不到 registry 时选择原始 .mindraw 包恢复。
  • 下一轮不应直接跳 Phase 4;如果用户继续打磨文件体验,优先做普通 Save As package 创建、原生 picker package selection、Finder 拖放 smoke 和错误提示文案。