🎬 v0.23.2 — Inline MP4 Component Demos
This release upgrades the component demo recordings so they play inline. bin/record now re-encodes captures to a web-friendly H.264 MP4 — GitHub and Safari can play the videos directly instead of forcing a download — and records in a tighter square frame that keeps file sizes small. Every component's demo video has been refreshed, and a handful of recording scenarios were tightened for more reliable capture. No component APIs changed.
What's New
Inline-playable MP4 demos
Component demo recordings are now H.264 MP4 (yuv420p + faststart) instead of VP9 WebM. That combination is what lets GitHub and Safari play the clips inline rather than downloading them, so the demos work everywhere the docs and README are viewed. Every element in the catalog was re-recorded to the new format.
What Changed
bin/record — MP4 output & square framing
The recorder was reworked to produce inline-friendly video:
- MP4 by default — captures are re-encoded with
libx264/yuv420p/+faststart. Ifffmpegis unavailable it now falls back to the raw.webm(and warns that GitHub may not play it). - Tighter default framing — the default recording viewport is now
750×750(square) instead of1400×900, captured at 2× for crispness with output width capped at1000. Components that genuinely need more room can still opt in by adding aviewportblock to their scenario.
# Re-record a single component to MP4bin/record --only elements/rating_componentRefined demo scenarios
Several recording scenarios were tightened for more reliable, better-framed capture (the components themselves are unchanged — only their demo scripts were):
RatingComponent— hover/click now target stars bydata-valuefor stable capture.
TableComponent— row and select-all interactions use stable element selectors.
VideoComponent— steps target the.midwest-videowrapper.
ImageComponent— the lightbox scene was simplified for a cleaner clip.
What Was Removed
- Legacy
.webmdemo videos — replaced by the new.mp4recordings. - The VP9 /
libvpx-vp9encoding path inbin/record, superseded by H.264 MP4. - Hardcoded per-scenario
viewportblocks — recordings now default to750×750, with the override left as opt-in per component.
Dev Process
scripts/record-component.mjs— default capture viewport aligned to750×750to match the recorder.- Coverage badge — README updated from 96% to 95%.