日期:2026-07-02
完成统一台账 P-20260701-app-codex-plugin-acceptance-bundle 的 MD-BUNDLE-04:排查并修复 Mindraw App mindraw.app.get_preview_snapshot / project canvas preview 可能返回旧图、错图或错目标内容的问题,针对用户报告的 我是 / 我说 sentinel 做回归证据。
src/lib/mindrawProjectCanvasApi.ts:elementId 时返回 TARGET_PREVIEW_UNSUPPORTED。documentId 与 package 实际 documentId 不一致时返回 DOCUMENT_ID_MISMATCH。PREVIEW_REQUIRES_SAVED_DOCUMENT。sourceContentSha256。src-tauri/src/lib.rs:write_mindraw_preview_snapshot 重读 package 后校验 source hash,不一致返回 PREVIEW_SOURCE_STALE。previewScope、sourceDocumentId、sourceContentSha256、sourceByteLength、sourceModifiedAt。src/lib/mindrawAppApiTransport.test.ts 回归:我说 -> 我是 同路径内容变化会重新进入 exporter,且 source hash 变化。elementId 请求不被误当 full-canvas preview 成功。02-P/MEXP13-AcceptanceBundle/qa/md-bundle-04-preview-freshness-check-20260702.md02-P/MEXP13-AcceptanceBundle/qa/md-bundle-04-preview-freshness-check-20260702.json02-P/MEXP13-AcceptanceBundle/qa/preview-freshness-20260702/26.0702-02-safe-copy.mindraw/CODEGRAPH.md、INDEX.md、CHANGELOG.md 和 02-P/plan-progress.markdown。src/lib/mindrawProjectCanvasApi.tssrc-tauri/src/lib.rssrc/lib/mindrawAppApiTransport.test.ts02-P/MEXP13-AcceptanceBundle/qa/md-bundle-04-preview-freshness-check-20260702.mdget_preview_snapshot 是 full-canvas preview,但返回 / manifest 不记录 source document/content hash/mtime。elementId 的 preview 语义未 fail closed。previewScope、sourceDocumentId、sourceContentSha256、sourceByteLength、sourceModifiedAt。PREVIEW_SOURCE_STALE。PREVIEW_REQUIRES_SAVED_DOCUMENT。elementId 返回 TARGET_PREVIEW_UNSUPPORTED。DOCUMENT_ID_MISMATCH。/Users/ar/Documents/技术实验室/MindrawCanvas/26.0702-02.mindraw/drawing.excalidraw 当前磁盘文本为 我是第2个画布,不含 我说。documentId=mdoc_18be648b9f452660_165e4,与用户 link mdoc_18be6514f9ceff78_165e4 不匹配。BnZJU5WLUd4tHklxPLaxg 未在只读检查的磁盘包中找到。get_preview_snapshot 仍只支持 previewScope="full-canvas"。targetPreviewSnapshot / elementScopedPreview API。1.2.1 / Build202607021050 DMG 不含本修复;需后续新 DMG 才能用户复验 App 侧修复。用途:复查 MD-BUNDLE-04 preview freshness / target guard。
前置条件:在 /Users/ar/Projects/ExcalidrawX 执行;无需运行真实 App;不修改用户原始 /Users/ar/Documents/技术实验室/MindrawCanvas。
npm run test:run -- src/lib/mindrawProjectCanvasPreview.test.ts src/lib/mindrawAppApiTransport.test.ts src/lib/mindrawAppReadApi.test.ts
cargo test --manifest-path src-tauri/Cargo.toml preview
cargo test --manifest-path src-tauri/Cargo.toml app_api_transport
npm run build
git diff --check
验证步骤:
preview 应通过 3 tests,其中包含 rejects_png_preview_when_source_hash_is_stale。app_api_transport 应通过 5 tests。npm run build 通过;既有 Vite 字体和大 chunk warning 非阻塞。git diff --check 通过。M4C-BUNDLE-05 需要消费 App 新错误 / metadata,不得 READY / blockers=[] 时展示旧图。1.2.2 或按当时版本规则处理。mindraw://...documentId...elementId... 直接生成 sidebar target preview,需要另拆 Mindraw API:mindraw.app.get_target_preview_snapshot。