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.