Skip to content

0.2.0 - The dial

Latest

Choose a tag to compare

@nothans nothans released this 01 Sep 15:08

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.js downloads 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.