Skip to content

Building from Source

Zach Hubbard edited this page Oct 13, 2026 · 1 revision

Building from Source

Requirements

  • Node.js v22.12 or newer (required to install Electron 43)
  • Optional: ffmpeg on your system PATH, for codec transcode

Run it

npm install
npm start

On first launch you'll land on the Channel Setup screen.

  1. Click + ADD CHANNEL for each channel you want.
  2. Give it a number and a name (e.g. 07 / "CARTOON CHANNEL"). Channels 1 and 2 are reserved for the built-in virtual channels.
  3. Click CHOOSE FOLDER and pick a folder from your media library. The app scans it recursively and reads each file's duration — this takes a moment on large folders. Click + ADD FOLDER to merge in more folders on the same channel — everything plays from one combined loop. Open FOLDERS (N) to see what's assigned and remove one.
  4. Repeat as desired, then click START WATCHING.

Setup is saved to Electron's app-data folder. Press S any time to go back.

Tests

npm test runs the unit and contract tests (about 470 of them). It must pass before you open a pull request. CI runs it on every push and pull request.

A separate suite drives the real Electron window over the Chrome DevTools Protocol (the tests/ui/ folder, with its own README). Read that README first: the app keeps its data in a userData folder next to the app, so any automated run must back up and restore that folder.

Server mode

See Headless, LAN and Remotes.

Packaging

npm run pack    # reproducible unpacked release build from the tracked plugin allowlist
npm run pack:personal # local build that also includes ignored plugins in this checkout
npm run dist    # installer (nsis / dmg / AppImage)

npm test runs tracked release-gating tests plus the plugin contract validator and fails if no tests are discovered. The larger real-Electron/CDP suite lives under the tracked tests/ui/ working directory; run it with powershell -ExecutionPolicy Bypass -File tests\ui\run-ui-tests.ps1. (The repo's .gitignore ignores *.mjs, so new harness files there need git add -f; see tests/ui/README.md.)

Release plugin contents are explicit in build/bundled-plugins.json; machine-local integrations cannot silently change the default artifact.

No ffmpeg binary is bundled or downloaded — see "About RerunTV" above.

Versioning. Releases are MAJOR.MINOR.PATCH-beta.N: the base comes from package.json and N is the CI build number, so every release is a pre-release and each is newer than the last (0.2.0-beta.7 > 0.2.0-beta.6). Bump the base by hand for a new minor or major. The in-app update check follows the beta series.

Pre-built beta installers (Windows) are published automatically as GitHub Releases from the deploy branch — see the Releases page. They're unsigned (see Download and install for how to verify one), so Windows SmartScreen and your browser will likely warn you before running one. SmartScreen: "More info" → "Run anyway". Chrome's download bar: the dropdown arrow → "Keep".

Next: Development

Clone this wiki locally