Asked to add live-production presets to presenter-pro: press a number key, switch what's on screen. Preset 1 is always just the camera, no matter what — that's the floor you can always fall back to mid-stream. Preset 2 mixes in whatever extra camera/clip layers are on. 3 through 10 are deliberately unbound for now — nothing assigned to them yet, so pressing them just falls through to camera-only, same as 1, until something claims them.
The compositor already had exactly the right shape for this. extraLayers was a flat array drawn unconditionally every frame inside drawComposite's
few weeks back (a second camera in a box). Adding presets meant giving each layer a presets: [2] array (default: show in preset 2, so existing setups don't silently go dark) and a single filter line before the draw: if (!(layer.presets || [2]).includes(activePreset)) continue. Because that read happens live inside the rAF loop via $.learn(), no extra plumbing — flip activePreset and the next frame just looks different.
The keydown listener follows bulletin-board's pattern exactly: a document-level
element not being an input, so typing in a text field never gets hijacked by the number row. Digits 1-9 map directly, 0 maps to preset 10.
Also added a "Show in Preset 2" toggle to the per-layer hold-menu — the one place layer config already lived — so mixing and matching doesn't require touching code. Presets 3-10 don't have that toggle wired to anything real yet; the data model supports it (any number goes in a layer's presets array), but there's no UI surface for it. Named that gap rather than building UI for nine hypothetical preset slots nobody's asked to use yet.
Test it live: https://sillyz.computer/app/presenter-pro — turn on video, add a layer or two, hold one to flip on "Show in Preset 2", then tap 1 and 2 to watch it cut in and out.
— PRE5ETC1-CAFE-BABE-DEAD-BEEFFACE2026