You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The original storyboarding epic (#24 → #215–#218) deferred "MP4 / GIF video export of a Storyboard traversal" to phase 2. Video export is the natural shareable artefact for stakeholder briefings on networks where neither VS Code, the web-shell, nor even the air-gapped briefing zip (#264) are usable (read-only kiosk displays, email attachments, conference slide decks). However, the encoding pipeline involves real trade-offs (bundle size, offline-first guarantees, codec licensing, output quality, frame-rate fidelity) and the right approach is not obvious. Committing to an implementation before evaluating those trade-offs risks shipping the wrong shape.
Proposed Solution
Time-boxed research spike, not shipping code.
Evaluate at least the following encoding-pipeline candidates and produce a recommendation:
Client-side via MediaRecorder + ffmpeg.wasm
Encoding inside the webview / SPA, no service.
Pros: fully offline-by-default (Article I), no service round-trip, runs inside the briefing renderer zip too.
Cons: ~20 MB bundle bloat (ffmpeg.wasm); slow on long Storyboards; codec licensing varies.
Service-side via Python (services/export/ + system ffmpeg)
Frontend captures a PNG sequence, hands to a new Python service that shells out to ffmpeg.
Cons: introduces a system dependency (ffmpeg); doesn't ship inside the air-gapped briefing zip; harder to use from the web-shell.
Hybrid — PNG sequence captured client-side, encoded via WebCodecs API (modern browsers) with ffmpeg.wasm fallback only for unsupported browsers / GIF output.
Deliverables of the spike:
A research note at docs/project_notes/storyboard-video-export-research.md covering:
Bundle-size measurements for each option.
Encoding-time benchmarks against a representative 10-Scene Storyboard at 1080p.
Output-quality comparison (sample artefacts committed under evidence/).
Originally captured under epic item #229 in BACKLOG.md; promoted via /interview 229 (2026-05-19) — epic was split into three independent items. This one is a research spike, lower priority than #263 / #264.
Problem
The original storyboarding epic (#24 → #215–#218) deferred "MP4 / GIF video export of a Storyboard traversal" to phase 2. Video export is the natural shareable artefact for stakeholder briefings on networks where neither VS Code, the web-shell, nor even the air-gapped briefing zip (#264) are usable (read-only kiosk displays, email attachments, conference slide decks). However, the encoding pipeline involves real trade-offs (bundle size, offline-first guarantees, codec licensing, output quality, frame-rate fidelity) and the right approach is not obvious. Committing to an implementation before evaluating those trade-offs risks shipping the wrong shape.
Proposed Solution
Time-boxed research spike, not shipping code.
Evaluate at least the following encoding-pipeline candidates and produce a recommendation:
Client-side via
MediaRecorder+ffmpeg.wasmffmpeg.wasm); slow on long Storyboards; codec licensing varies.Service-side via Python (
services/export/+ systemffmpeg)ffmpeg); doesn't ship inside the air-gapped briefing zip; harder to use from the web-shell.Hybrid — PNG sequence captured client-side, encoded via WebCodecs API (modern browsers) with
ffmpeg.wasmfallback only for unsupported browsers / GIF output.Deliverables of the spike:
docs/project_notes/storyboard-video-export-research.mdcovering:evidence/).Success Criteria
Constraints
Out of Scope
Dependencies
Originally captured under epic item #229 in BACKLOG.md; promoted via
/interview 229(2026-05-19) — epic was split into three independent items. This one is a research spike, lower priority than #263 / #264.