edit | blame | history | raw

MSPP 侧栏预览收口

日期:2026-07-02

用户目标

继续未完成的 M4C-MSPP-01,不要重启任务,从 checkpoint 收口:

  • 完成 ~/plugins/mindraw Codex sidebar preview polish。
  • 验证默认 fit-to-view、清晰非空、pan / zoom / reset、编辑 / double-click 打开同一 .mindraw、loading / unavailable / blocked 状态脱敏。
  • 完成 installed cache 更新 / 验证 / smoke、SkillSpector、敏感扫描、m4c 03-O QA 证据、CODEGRAPH / INDEX / 台账回写。

已完成事项

  • 修改 ~/plugins/mindraw/scripts/mindraw-canvas-service.mjs
  • sidebar preview 默认 fit-to-view。
  • 增加稳定 pan / zoom / Fit reset。
  • 增加 loading state。
  • 编辑 与 preview double-click 继续共用 /api/open-edit
  • 增加 smoke-sidebar 浏览器自动化入口。
  • 修改 ~/plugins/mindraw/lib/project-canvas.mjs
  • latest canvas 排序先使用规范名 YY.MMDD-NN sort key,再使用 createdAt,修复 Asia/UTC 边界下 L11 lifecycle smoke 失败。
  • 更新 ~/plugins/mindraw/.codex-plugin/plugin.json cachebuster:
  • 0.1.0+codex.20260701145454 -> 0.1.0+codex.20260701174929
  • 重新安装 mindraw@personal
  • installed cache:/Users/ar/.codex/plugins/cache/personal/mindraw/0.1.0+codex.20260701174929
  • 产出正式 QA:
  • /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/K2.项目管理/联调QA/2026-07-01-M4C-MSPP-01SidebarPreviewPolish.md
  • 更新 m4c 索引:
  • /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C1.source/CODEGRAPH.md
  • /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/K2.项目管理/README.md
  • /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/INDEX.md
  • 回写主台账:
  • /Users/ar/Projects/ExcalidrawX/02-P/plan-progress.markdown
  • M4C-MSPP-01 标为 Complete / PASS_FOR_M4C_MSPP_01 / PM_NOTIFY_READY=yes
  • PM-MSPP-GATE 仍归 PM。
  • m4c 03-O commit:
  • c706e7cd850522005297193f51f4e452001c0c66
  • message:docs: record M4C MSPP sidebar polish

核心事实 / 变更快照

  • 变更对象:~/plugins/mindraw Codex plugin sidebar preview。
  • 变更前:
  • installed cache:0.1.0+codex.20260701145454
  • sidebar preview 已能显示,但未完成 MEXP12 级别的 browser / screenshot / pixel / installed cache polish QA。
  • MEXP11 lifecycle smoke 在 sequence conflict 用例中可能受 createdAt 与规范名排序冲突影响。
  • 变更后:
  • installed cache:0.1.0+codex.20260701174929
  • source / installed cache 的 checksmoke-lifecyclesmoke-httpsmoke-mcp 均 PASS。
  • source / installed SkillSpector 均 SAFE,score 0,issues 0
  • Safari 真实窗口截图覆盖 360x720480x800、zoom、pan;pan 前后 changed pixel ratio 0.2221
  • QA 产物敏感扫描无 token、endpoint、runtime capability path、dataURL、private key、.p12 命中。
  • 范围边界:
  • 未改 Mindraw 主项目源码。
  • 未做 release / DMG / installer。
  • 未替换 /Applications/Mindraw.app
  • 未把 p.mindrawforcodex/02-P 纳入 m4c Git。
  • ~/plugins/mindraw 是外部 plugin source,不属于 m4c 03-O Git;正式追踪通过 QA、installed cache、主台账和会话记录。
  • 环境限制:
  • Playwright 包可用,但本机 Chromium executable 缺失,下载失败。
  • Safari WebDriver 存在,但系统未启用 Remote Automation。
  • 因此浏览器级证据使用 Safari 真实窗口 + Computer Use accessibility tree + cliclick 鼠标拖拽 + HTTP smoke 组合替代。

文件变更

  • 外部 plugin source:
  • /Users/ar/plugins/mindraw/scripts/mindraw-canvas-service.mjs
  • /Users/ar/plugins/mindraw/lib/project-canvas.mjs
  • /Users/ar/plugins/mindraw/.codex-plugin/plugin.json
  • m4c 03-O 正式输出:
  • /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/K2.项目管理/联调QA/2026-07-01-M4C-MSPP-01SidebarPreviewPolish.md
  • /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C1.source/CODEGRAPH.md
  • /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/K2.项目管理/README.md
  • m4c Git 外协调文件:
  • /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/INDEX.md
  • /Users/ar/Projects/ExcalidrawX/02-P/plan-progress.markdown
  • 过程 QA:
  • /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/MEXP12-SidebarPreviewPolish/qa/

QA 结论

结论:PASS_FOR_M4C_MSPP_01

可交 PM 进入 PM-MSPP-GATE,但本轮不自行宣布 Gate PASS。

暂不需要新增 MD-MSPP-*。没有发现 Mindraw App API preview 语义不足。

可复用命令 / Runbook

用途:复跑 MEXP12 / MSPP sidebar preview polish 的 source 和 installed cache 验证。

前置条件:

  • ~/plugins/mindraw 存在。
  • mindraw@personal marketplace 可用。
  • 需要 skillspectorcodex pluginpython3、Node。
  • 浏览器截图若要完全复现,需要 Safari;WebDriver 若未启用,可用真实窗口截图 + Computer Use / cliclick 替代。

设置 / source 验证:

npm run --prefix /Users/ar/plugins/mindraw check
node /Users/ar/plugins/mindraw/scripts/mindraw-canvas-service.mjs smoke-lifecycle --report /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/MEXP12-SidebarPreviewPolish/qa/source-lifecycle-smoke.json
node /Users/ar/plugins/mindraw/scripts/mindraw-canvas-service.mjs smoke-http --report /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/MEXP12-SidebarPreviewPolish/qa/source-http-sidebar-smoke.json
node /Users/ar/plugins/mindraw/scripts/mindraw-canvas-service.mjs smoke-mcp --report /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/MEXP12-SidebarPreviewPolish/qa/source-mcp-smoke.json
python3 /Users/ar/.codex/skills/.system/plugin-creator/scripts/validate_plugin.py /Users/ar/plugins/mindraw
skillspector scan /Users/ar/plugins/mindraw/skills/mindraw-open-canvas --no-llm --format json --output /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/MEXP12-SidebarPreviewPolish/qa/source-skillspector.json

cachebuster / install:

python3 /Users/ar/.codex/skills/.system/plugin-creator/scripts/update_plugin_cachebuster.py /Users/ar/plugins/mindraw
python3 /Users/ar/.codex/skills/.system/plugin-creator/scripts/validate_plugin.py /Users/ar/plugins/mindraw
codex plugin add mindraw@personal
codex plugin list

installed cache 验证:

INSTALLED=/Users/ar/.codex/plugins/cache/personal/mindraw/0.1.0+codex.20260701174929
python3 /Users/ar/.codex/skills/.system/plugin-creator/scripts/validate_plugin.py "$INSTALLED"
npm run --prefix "$INSTALLED" check
node "$INSTALLED/scripts/mindraw-canvas-service.mjs" smoke-lifecycle --report /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/MEXP12-SidebarPreviewPolish/qa/installed-lifecycle-smoke.json
node "$INSTALLED/scripts/mindraw-canvas-service.mjs" smoke-http --report /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/MEXP12-SidebarPreviewPolish/qa/installed-http-sidebar-smoke.json
node "$INSTALLED/scripts/mindraw-canvas-service.mjs" smoke-mcp --report /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/MEXP12-SidebarPreviewPolish/qa/installed-mcp-smoke.json
skillspector scan "$INSTALLED/skills/mindraw-open-canvas" --no-llm --format json --output /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/MEXP12-SidebarPreviewPolish/qa/installed-skillspector.json

敏感扫描:

rg -n "Bearer|Authorization|m4c-[a-z0-9-]*token|write-api\\.json|127\\.0\\.0\\.1:[0-9]+|data:image|base64,|BEGIN (RSA |OPENSSH |PRIVATE )?KEY|app-specific|\\.p12" /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/MEXP12-SidebarPreviewPolish/qa || true

验证结果摘要:

  • source lifecycle / HTTP / MCP:ok=true
  • installed lifecycle / HTTP / MCP:ok=true
  • source SkillSpector:SAFE
  • installed SkillSpector:SAFE
  • browser evidence:ok=true
  • m4c 03-O clean after commit:yes

清理 / 恢复:

  • 临时 browser smoke 服务已停止。
  • 若需要重装上一个 plugin cache,只能按 plugin source 的当前 commit / manifest 重新生成 cachebuster 并 codex plugin add mindraw@personal,不要手改 cache 目录。

搜索关键词:

M4C-MSPP-01MEXP12Sidebar Preview Polishsmoke-lifecyclesmoke-httpsmoke-mcpsource-safari-browser-evidencemindraw@personal0.1.0+codex.20260701174929

未决问题 / 后续建议

  • 由 PM 复核 PM-MSPP-GATE
  • 后续若需要完全自动化浏览器 DOM 断言,可以在本机开启 Safari Remote Automation,或修复 Playwright Chromium 下载 / cache。