v0.2.0-alpha: DOM capture, all three output slices, lead gates

- Extension DOM mode: auth-context serializer — inlines CSS + images as data
  URLs, freezes form state, masks [data-dp-mask], strips scripts (R3 client)
- API: extractDataUrls rewrites large inline resources into content-addressed
  assets (R3 server; verified 939KB inline -> 82-byte row + served asset)
- Lead-gate steps: config on step, player overlay form blocks advance,
  submits to leads endpoint (editor toggle + MCP set_lead_gate)
- Step-guide export (v2 slice): authed markdown + public HTML at /p/:token/guide
- Video export (v3 slice, v0): ffmpeg slideshow of image steps + optional
  narration mux; DOM rasterization deferred to Chromium service (R4)
- Editor: reorder arrows, embed-code copy, guide link, video export
- REST reorder endpoint; MCP surface now 13 tools (export_guide,
  set_lead_gate, render_video)
- ffmpeg added to runtime image

E2E verified incl. R3 extraction round-trip, lead_gate in public JSON,
guide renders, MCP agent exported guide + rendered video.
This commit is contained in:
Scot Thom 2026-07-18 05:27:58 +00:00
parent 9b09f14916
commit a535e15253
18 changed files with 541 additions and 22 deletions

View file

@ -12,6 +12,12 @@
<body>
<label>Platform URL <input id="base" placeholder="https://demo.example.com"></label>
<label>API key <input id="key" type="password" placeholder="dp_..."></label>
<label>Capture mode
<select id="mode" style="width:100%;margin:4px 0 8px;padding:6px 8px;border:1px solid #e2e8f0;border-radius:6px">
<option value="screenshot">Screenshot (works everywhere)</option>
<option value="dom">DOM (editable, web apps)</option>
</select>
</label>
<div id="status">Not recording.</div>
<button id="start" class="primary">Start recording this tab</button>
<button id="finish" hidden>Finish &amp; upload</button>