ba52200d08
Orchestrator: bind ctx.spaNavigate to the page (fixes breadth-flash/role-perspective doing nothing) and wrap each clip in try/catch so one bad scene can't abort the run or lose the manifest. Cursor: guard page.evaluate against navigation-mid-move (fixes storm-intel 'execution context destroyed'). territory-map now leads with an existing Hot-Lead parcel (full populated detail); crane-close shows the full crane (mast+cable) then pans to the swinging card. Manifest holds real ffprobe durations for all 20 clips (film = 14m56s).
LynkedUp Pro — Product Film (Remotion)
Flagship ~5-min marketing film, composed from real app screenshots + animated brand beats.
See docs/superpowers/specs/2026-05-30-product-film-design.md for the design.
Workflow
- Capture the app (dark mode). From the repo root, start the CRM:
Then in this folder:
npm run dev # serves http://localhost:5173npm install npx playwright install chromium # first time only npm run capture # writes public/captures/*.png - Preview in Remotion Studio:
npm run dev - Render:
npm run render # -> out/lynkedup-pro-film.mp4
Notes
public/captures/andout/are gitignored (local artifacts). Re-runnpm run captureto refresh.- The capture script navigates within the SPA (history pushState) rather than reloading per route, because the CRM keeps auth in memory only — a full reload would log out and redirect to /login.
- Music: drop a royalty-free track at
public/audio/music.mp3and setHAS_MUSIC = trueinsrc/components/AudioTrack.tsx. - Voiceover: captions ship now; the VO script lives in the design spec §5 (record later, drop onto the same timeline).
- Does not modify any CRM code — it only screenshots the running app.