Files
LynkedUpPro_CRM/marketing/product-film
Satyam Rastogi ba52200d08 fix(film): capture resilience + scene fixes; finalize 20-clip durations
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).
2026-05-31 00:07:44 +05:30
..

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

  1. Capture the app (dark mode). From the repo root, start the CRM:
    npm run dev          # serves http://localhost:5173
    
    Then in this folder:
    npm install
    npx playwright install chromium   # first time only
    npm run capture                    # writes public/captures/*.png
    
  2. Preview in Remotion Studio:
    npm run dev
    
  3. Render:
    npm run render        # -> out/lynkedup-pro-film.mp4
    

Notes

  • public/captures/ and out/ are gitignored (local artifacts). Re-run npm run capture to 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.mp3 and set HAS_MUSIC = true in src/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.