# 2026-06-25 Mindraw 导出保存面板 smoke ## 用户目标 继续推进 `.mindraw` 基本可用;在 Phase 3.5 推进过程中,顺手补齐 Phase 3 里此前因本机安装版 bundle id 冲突而未签 PASS 的完整保存面板导出 smoke。 ## 已完成事项 - 使用 debug `.app` 复制生成临时唯一 bundle id QA app:`/Applications/MindrawExportQA-*.app`,未覆盖正式 `/Applications/Mindraw.app`。 - 使用 `single-image.mindraw` fixture 生成临时测试包 `/tmp/mindraw-phase3-export-smoke/ExportBoard.mindraw`。 - 用临时 registry 和 `mindraw://open?documentId=mdoc_fxt_single_image_2V8C5N1Q9L4B7S6D` 打开测试包;首次冷启动 URL 未被前端接到,第二次热启动投递成功。 - 通过 `File > Export as Excalidraw...` 真实系统保存面板导出标准 `.excalidraw`。 - 通过 `File > Export as Obsidian Excalidraw...` 真实系统保存面板导出 `.excalidraw.md`。 - 更新 `02-P/qa/mindraw-phase3-export-check.md`、`02-P/plan-progress.markdown`、`CODEGRAPH.md`、`INDEX.md`。 - 新增 QA 截图 `02-P/qa/mindraw-phase3-export-smoke.png`。 ## 关键决策 - 不覆盖正式安装版;仍采用临时唯一 bundle id QA app 避免 LaunchServices / Accessibility 解析到旧安装版。 - 导出 smoke 只验证导出内容、保存面板、active tab 不被接管;不生成可分发 DMG,不做版本发布。 ## 文件变更 - `02-P/qa/mindraw-phase3-export-check.md` - `02-P/qa/mindraw-phase3-export-smoke.png` - `02-P/plan-progress.markdown` - `CODEGRAPH.md` - `INDEX.md` ## 验证结果 - `.excalidraw` 保存面板导出 PASS:生成 `/private/tmp/mindraw-phase3-export-smoke/ExportBoard.excalidraw`;JSON `type` 为 `excalidraw`,包含 1 个元素、1 个 `files` 条目,且 file 带 `dataURL`。 - Obsidian `.excalidraw.md` 保存面板导出 PASS:生成 `/private/tmp/mindraw-phase3-export-smoke/ExportBoard.excalidraw.md`;`compressed-json` 可解压为 Excalidraw JSON,包含 1 个元素、1 个带 `dataURL` 的 file,并包含 Excalidraw plugin marker。 - 导出后 active 文档仍显示为 `.mindraw` tab;导出文件只出现在文件树中,不接管当前 active tab。 - 清理 PASS:临时 QA bundle、临时测试包、临时 registry 和备份目录已删除;preferences 已恢复到 smoke 前记录的 Desktop 状态;当前无 `mindraw` 进程。 ## 未决问题 - 首次冷启动 URL 在该临时 export QA app 中未被前端接到,第二次热启动投递成功;Phase 3 保存面板 smoke 不依赖该项。Phase 3.5 已另有冷/热启动真实 smoke 通过证据。 ## 后续建议 - Phase 3 已可从计划状态收口为 `Done`。 - 后续若要验证正式安装版 handler,需进入安装/发布流程或明确同意临时替换 `/Applications/Mindraw.app`。