feat(media): plugin tour videos with burned-in captions (#188)#210
Closed
srsholmes wants to merge 2 commits into
Closed
feat(media): plugin tour videos with burned-in captions (#188)#210srsholmes wants to merge 2 commits into
srsholmes wants to merge 2 commits into
Conversation
Add scripts/capture-videos.ts — drives the running overlay over CDP (Page.startScreencast → ffmpeg → animated WebP) to record captioned, per-plugin tours defined by plugins/<id>/tour.json. Any step (or the tour title) may carry a caption, burned in as a lower-third via ffmpeg drawtext, timed to the real frame durations. Tours are opt-in (a plugin without a tour.json is skipped) and network-info / playtime are hard blacklisted (TOUR_SKIP) so personal data is never recorded. Flow: `capture:videos --tours` records to a gitignored review folder; `--promote=<id>` copies the approved clip into plugins/<id>/assets/demo.webp and inserts a `## Demo` section. A `--target=steam` mode records Steam's Big Picture CEF for theme-loader / Store Bridge features. Shared CDP + navigation + recipe machinery is extracted to scripts/lib/overlay-cdp.ts; capture-screenshots.ts is refactored onto it, and scaffold-plugin-readmes.ts renders a Demo section from assets/demo.webp. Ships the TDP Control tour (plugins/tdp-control/tour.json) as the first demo, embedded in the root README and the plugin README as a tester. Co-Authored-By: Claude Opus 4.8 <[email protected]>
Add a plugins/<id>/tour.json for every remaining plugin and capture each as a captioned WebP demo, promoted into plugins/<id>/assets/demo.webp with a `## Demo` section in the plugin README: apex, wifi, storage, input-plumber, disable-controller-input, rgb-control, battery-tracker, lsfg-vk, protondb-badges, quick-links, hltb, steamgriddb, theme-loader, sound-loader, flatpak-manager, store-bridge, launch-options, fan-control Blacklisted from tours via TOUR_SKIP (no tour.json + hard skip): network-info, playtime, bluetooth, storage-cleaner, display-settings, recomp. capture-videos.ts gains a per-tour `width` so art-heavy library grids (hltb, protondb-badges, store-bridge, …) drop to a smaller width — every clip lands in the ~2-4 MB range while the burned-in captions stay legible. Co-Authored-By: Claude Opus 4.8 <[email protected]>
Owner
Author
|
Parking this as an experiment — the captured tour videos don't look good enough in this format to ship. The tooling works end-to-end (CDP screencast → ffmpeg → captioned WebP, per-plugin |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #188 (video capture tooling) and adds captioned demo tours for the whole plugin lineup.
Tooling —
scripts/capture-videos.tsDrives the running overlay over CDP (
Page.startScreencast→ ffmpeg → animated WebP):plugins/<id>/tour.json— a scripted tour with captions burned in as a lower-third (ffmpegdrawtext, timed to real frame durations). Opt-in: notour.json→ no tour. Per-tourfps/widthso art-heavy library grids stay small.capture:videos --toursrecords to a gitignored review folder;--promote=<id>copies the clip intoplugins/<id>/assets/demo.webpand inserts a## Demosection.--target=steam: records Steam's Big Picture CEF (theme-loader recolor, Store Bridge Epic collection) — run from Gaming Mode.Shared CDP/nav machinery extracted to
scripts/lib/overlay-cdp.ts;scaffold-plugin-readmes.tsrenders a## Demosection fromassets/demo.webp.Privacy / exclusions (
TOUR_SKIP)Never toured (no
tour.json+ hard skip): network-info, playtime, bluetooth, storage-cleaner, display-settings, recomp.Demos in this PR (19 plugins)
tdp-control (hero, in root README) + apex, wifi, storage, input-plumber, disable-controller-input, rgb-control, battery-tracker, lsfg-vk, protondb-badges, quick-links, hltb, steamgriddb, theme-loader, sound-loader, flatpak-manager, store-bridge, launch-options, fan-control — each embedded in its plugin README via
## Demo.Notes for review
wifiandstorageare included — they're the "stop WiFi power-saving dropouts" and "mount a lost game drive" fixes, not the privacy-sensitivenetwork-info/storage-cleaneryou excluded. Say if you'd rather drop them.Reproduce
🤖 Generated with Claude Code