Repository navigation
Record the onboarding and what's new videos from the app - #1199
JorimTheuns wants to merge 13 commits into
Conversation
|
Hi @claude! Thank you for contributing to Dembrane ECHO! Before we consider your Pull Request, we ask that you sign our Contributor License Agreement (CLA). This is only required for your first Pull Request. Please review the CLA, and sign it by adding your GitHub username to the contributors.yml file. Thanks! |
|
Generated by Claude Code |
0513250 to
3be34ab
Compare
A script drives a production build with Playwright, records each scene through Chrome's screencast, and joins the clips with ffmpeg into 1920x1080 MP4s with WebVTT captions, in English and Dutch. The what's new video is the release's own cards plus the onboarding scenes listed for it, so each release re-records both instead of re-editing them. - dembrane/frontend/videos: scenes, render step, README - apps/migrate/src/video-seed.ts: local seed for the recording user and the Millbrook sample, which also removes what the last recording created - test ids on the create project wizard, so scenes don't depend on copy - product-release skill points step 7 at `pnpm videos` Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYnJLB1pzSoRLExHKvqoV4
Takes are cleaned with DeepFilterNet 3, loudness-normalised and cut into lines; each shot holds until its line is spoken, and the lines are mixed into the videos. --script writes the narrator's script. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYnJLB1pzSoRLExHKvqoV4
… ids Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYnJLB1pzSoRLExHKvqoV4
The placeholder card becomes a scene that opens the seeded best practices project and its chat on how to set up a first project. The video seed seeds that sample in the same workspace and keeps it through cleanup. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYnJLB1pzSoRLExHKvqoV4
3be34ab to
6ab2c76
Compare
pnpm videos:measure signs in to each environment with a test account and times opening a project, so release cards can quote the same synthetic steps on both versions. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYnJLB1pzSoRLExHKvqoV4
v2 rotates its refresh token on use, so each run saves its cookies for the next. Runs now alternate between environments so network changes affect both alike. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011yTwhFVtLseJGteGEVdShK
Production v2.4.2 against staging v3.0.2, 20 alternating runs each with pnpm videos:measure. The placeholder warning now reads the cards' own text. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYnJLB1pzSoRLExHKvqoV4
v3 has not run in production long enough to compare uptime or failed uploads with v2. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYnJLB1pzSoRLExHKvqoV4
…cene Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYnJLB1pzSoRLExHKvqoV4
…ording per language The narrator can now record the whole script as <lang>/all.<ext>; it is split at pauses of 2 s or more into scenes, then into lines. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYnJLB1pzSoRLExHKvqoV4
…or said Whisper (faster-whisper) transcribes the cut lines, prompted with the scripted line, so ad libs get matching captions. The narration script keeps the scripted text. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYnJLB1pzSoRLExHKvqoV4
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYnJLB1pzSoRLExHKvqoV4
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYnJLB1pzSoRLExHKvqoV4
Requested by Jor · project thread
Stacked on #1200 (best practices sample). Merge that first; GitHub then retargets this PR to main.
Before: release videos had to be screen-recorded and edited by hand each release.
After:
pnpm videosrecords an onboarding video (a new user's first walk through dembrane, opening with the best practices sample project) and a what's new video (the release's cards plus the onboarding scenes that changed) from a production build, in English and Dutch, with WebVTT captions and an optional burned-in copy. A narrator's own recordings can be added: they are cleaned up, cut into lines and mixed in, and each shot waits for its line.How: Playwright drives the app against a seeded local database (
apps/migrate/src/video-seed.ts: Millbrook and best practices samples under an ordinary user). Frames come from Chrome's screencast and ffmpeg assembles the clips. Scenes live indembrane/frontend/videos/scenes, each tagged with the release that introduced it; a release file lists its what's new scenes. Voiceover takes go through DeepFilterNet 3 (pinned binary, checksum checked), a high-pass and loudness normalisation;--scriptwrites the narrator's script. Seedembrane/frontend/videos/README.md. The create project wizard gets four test ids.Open before merging: the v3 numbers in
releases/v3.0.0.tsare placeholders.🤖 Generated with Claude Code
https://claude.ai/code/session_01GYnJLB1pzSoRLExHKvqoV4