From 8aa061f8d2046a3ab727f7ec39f17969cc3f8fdc Mon Sep 17 00:00:00 2001 From: codeonym Date: Tue, 10 Nov 2026 13:26:43 +0000 Subject: [PATCH 1/2] feat: preserve narration and write SRT/VTT captions (#3) --- README.md | 18 ++- .../decisions/001-one-caption-per-step.md | 15 +++ .../decisions/002-player-wraps-plain-text.md | 16 +++ .../003-skip-empty-or-zero-duration-cues.md | 14 +++ ...scape-text-with-srt-compatibility-limit.md | 26 +++++ .../draft.md | 23 +++- .../history/2026-11-10_1231_draft.md | 24 ++++ .../history/2026-11-10_1231_meta.md | 12 ++ .../history/2026-11-10_1246_meta.md | 12 ++ .../history/2026-11-10_1324_impl.md | 88 +++++++++++++++ .../history/CHANGES.md | 4 + .../impl.md | 103 ++++++++++++++++++ .../meta.md | 6 +- src/runner/captions.ts | 27 +++++ src/runner/run.ts | 8 +- test/e2e/player.ts | 50 +++++++++ test/e2e/record.test.ts | 42 ++++++- test/unit/captions.test.ts | 69 ++++++++++++ test/unit/schema.test.ts | 7 ++ 19 files changed, 546 insertions(+), 18 deletions(-) create mode 100644 planning/GH-1-narrated-reproducible-feature-demos/tickets/GH-3-narrated-transcript-and-captions/decisions/001-one-caption-per-step.md create mode 100644 planning/GH-1-narrated-reproducible-feature-demos/tickets/GH-3-narrated-transcript-and-captions/decisions/002-player-wraps-plain-text.md create mode 100644 planning/GH-1-narrated-reproducible-feature-demos/tickets/GH-3-narrated-transcript-and-captions/decisions/003-skip-empty-or-zero-duration-cues.md create mode 100644 planning/GH-1-narrated-reproducible-feature-demos/tickets/GH-3-narrated-transcript-and-captions/decisions/004-escape-text-with-srt-compatibility-limit.md create mode 100644 planning/GH-1-narrated-reproducible-feature-demos/tickets/GH-3-narrated-transcript-and-captions/history/2026-11-10_1231_draft.md create mode 100644 planning/GH-1-narrated-reproducible-feature-demos/tickets/GH-3-narrated-transcript-and-captions/history/2026-11-10_1231_meta.md create mode 100644 planning/GH-1-narrated-reproducible-feature-demos/tickets/GH-3-narrated-transcript-and-captions/history/2026-11-10_1246_meta.md create mode 100644 planning/GH-1-narrated-reproducible-feature-demos/tickets/GH-3-narrated-transcript-and-captions/history/2026-11-10_1324_impl.md create mode 100644 planning/GH-1-narrated-reproducible-feature-demos/tickets/GH-3-narrated-transcript-and-captions/impl.md create mode 100644 src/runner/captions.ts create mode 100644 test/e2e/player.ts create mode 100644 test/unit/captions.test.ts diff --git a/README.md b/README.md index 014f975..eb93935 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ Record reproducible feature demos from a short Playwright script. A coding agent writes the script, and `flow-reel` replays it in a sandbox on a virtual display while recording the screen. The same script gives the same video, step for step. -This release records **silent** video with step timings. Narration, captions, voice, cursor and zoom polish, and sound -effects come in later releases. +This release records **silent** video with narration text, captions and step timings. Voice, cursor and zoom polish, +and sound effects come in later releases. ## Requirements @@ -58,8 +58,18 @@ Next to the script: | File | What it is | |---|---| | `settings.mp4` | The silent demo, 1920×1080, 30 fps. | -| `settings.transcript.json` | Each step's `startMs`, `actionEndMs` and `endMs` on the video's timeline (schema version 1). | +| `settings.transcript.json` | Each step's original narration and `startMs`, `actionEndMs` and `endMs` on the video's timeline (schema version 1). | | `settings.events.json` | Every move, click, keystroke run and scroll the runner made, timed the same way (schema version 1). | +| `settings.srt` | Captions for a subtitle-capable video player. | +| `settings.vtt` | WebVTT captions for a browser's `