edit | blame | history | raw

2026-06-25 Mindraw 深链收口

用户目标

  • 继续 Phase 3.5 Global Link / Deep Link 工作。
  • 用户确认允许直接处理 /Applications/Mindraw.app,且不要求恢复旧安装版。
  • 目标是让 .mindraw 的全局链接在本机基本可用,尤其是系统入口、浏览器、Finder 和 Markdown 文档入口。

已完成事项

  • Copy link to object 的规范输出从 mindraw://open?documentId=...&element=... 改为 mindraw://localhost?documentId=...&elementId=...
  • 保留后端对旧 mindraw://open?... 格式的兼容解析。
  • 重新构建 debug .app 并覆盖 /Applications/Mindraw.app,bundle id 为 com.mindraw.desktop,scheme 为 mindraw
  • 验证正式安装版 /Applications/Mindraw.app 可通过 mindraw://localhost?... 冷启动并打开目标 .mindraw 包,定位并选中目标元素。
  • 验证 Arc 浏览器点击 mindraw:// 链接后,经外部 App 确认可打开 Mindraw。
  • 验证 Finder 中 .inetloc Internet Location 文件可作为自定义 scheme 文件载体;.webloc 对自定义 scheme 返回 -10400,不适合作为 Finder 入口。
  • 验证 Typora Markdown 文档中 mindraw://localhost?... 可保留为链接,并可通过右键 打开链接 冷启动 Mindraw。
  • 验证 VMark / Typora 对旧无 host 格式 mindraw://open?... 存在清洗行为,记录为兼容性发现。
  • 保存正式安装版 smoke 截图:02-P/qa/mindraw-phase35-formal-handler-smoke.png
  • 清理临时测试包和临时 registry;保留 /Applications/Mindraw.app 为当前 debug 测试版。

关键决策

  • 规范全局对象链接使用带 host 的 mindraw://localhost?documentId=...&elementId=...,提高 Markdown 渲染器兼容性。
  • 旧格式 mindraw://open?documentId=...&element=... 不作为新复制链接输出,但继续可解析,避免早期链接失效。
  • Finder 文件入口使用 .inetloc,不使用 .webloc
  • 包移动重定位只在原目录、last directory 和 recent directories 中做有限搜索,不做全盘扫描。

文件变更

  • src/lib/mindrawDeepLink.ts
  • src/lib/mindrawDeepLink.test.ts
  • 02-P/qa/mindraw-phase35-deeplink-check.md
  • 02-P/qa/mindraw-phase35-formal-handler-smoke.png
  • 02-P/plan-progress.markdown
  • CODEGRAPH.md
  • INDEX.md

验证结果

  • npm run test:run -- src/lib/mindrawDeepLink.test.ts src/hooks/useMenuHandler.test.ts src/lib/obsidianExcalidraw.test.ts:33 个测试通过。
  • 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:84 个测试通过。
  • cargo test --locked --manifest-path src-tauri/Cargo.toml mindraw_deep_link_tests:7 个测试通过。
  • cargo test --locked --manifest-path src-tauri/Cargo.toml:33 个测试通过。
  • cargo check --manifest-path src-tauri/Cargo.toml:通过。
  • npm run tauri -- build --debug --bundles app:通过。
  • git diff --check:通过。

未决问题

  • Typora 的 Markdown 点击路径需要右键 打开链接;普通点击只是编辑/选择文本。
  • VMark 对旧无 host 链接存在清洗行为;新 localhost 格式尚未作为 VMark 正式 PASS 入口签收。
  • /Applications/Mindraw.app 当前是 debug 测试版,不是正式可分发 DMG。
  • Phase 2 仍保留普通目录包在 Finder / 原生 picker 中不能直接作为 package 选择打开的问题。

后续建议

  • 下一轮如果继续 Phase 2,应优先处理 Finder package 体验或真实 Finder 拖放 smoke 的剩余证据。
  • 如果准备对外分发,需要按 release-versioning 规则单独做版本号、Build 号、DMG 和发布验收。