The static between channels is now a choice, and the README walks in by stages.
Features:
- Channel change setting -
tuner.cutpicks what covers a channel change:static(RF tuner snow, the default),black(the blanked raster of a later cable box), ornone(a hard cut). A "Channel change" select in the control room's Channels panel sets it; a note explains that static and black also give a video channel a beat to load its first frame. - README in natural stages - Quick start, then the control room, then channels, then channel 82, then the
config.jsonreference, then the CRT notes. A new Channels-panel screenshot shows three channels on the dial and the tuner settings.
Under the hood:
- The schema is the single authority for
tuner.cut; an unknown value falls back tostatic. tuneToIndexreads aCUTStable (cover before the swap, cover after so the new channel has its first frame up) with a try/finally so a throw never strands the tuner.- New
#tuner-blanklayer for the black cover, tinted with the theme's ink color. - Control room fix: the "on the dial" toggle label no longer wraps to three lines.
- Tests: 38 server + 53 browser-harness, still dependency-free Node 18+, no build step.