Releases: nothans/cable-82
Releases · nothans/cable-82
Release list
0.2.1 - Channel change
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.
0.2.0 - The dial
CABLE 82 is now a cable network: a dial of channels, not just the board.
Features:
- Video channels - point a channel at a folder of video files and it airs on a real broadcast clock: tune away, tune back, and you land mid-program.
- Scheduled hours - dayparts like Saturday 8:00 to 11:30, overnight windows ("Saturday 20:00 to 01:00" is one window), and off-air test card, color bars, or static with the resume time on screen.
- The tuner - keyboard, USB gamepad or joystick, or
POST /api/tune; anything that can press a key, close a GPIO pin, or make an HTTP request can change the channel. Every change cuts through a beat of tuner static with a channel banner. - RETRO TV demo channel -
node channels/fetch-demo-channel.jsdownloads eight public-domain films from the Internet Archive's Prelinger collection; a working channel in one command. - Control room Channels panel - folder picker, schedule editor with day chips, and a week grid of the on-air windows.
- Seamless playback - a double-buffered player cues the next program while the current one airs, so a file boundary is a cut, not a load.
- External channels - any URL in a frame; ws4kp makes a fine weather channel.
- The Community Bulletin Board is bundled as channel 82 and runs the dial by itself out of the box.
Under the hood:
- New APIs:
GET /api/channels,POST /api/tune,GET /api/events(server-sent events), and HTTP Range serving for video seeking - documented in the README. - The tuner bus carries events with rising sequence numbers, not state, so a remote never fights the buttons.
- Only the visible channel does work: the board fully suspends (crawl, music, page loop) behind a video channel.
- Tests: 38 server + 52 browser-harness, still dependency-free Node 18+, no build step.