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 和发布验收。