Skip to content

Station breaks on by default; signed-in listeners hear silence instead (0.46.0) - #302

Merged
ralyodio merged 1 commit into
mainfrom
feat/station-breaks-default-signed-in-quiet
Oct 20, 2026
Merged

ralyodio merged 1 commit into
mainfrom
feat/station-breaks-default-signed-in-quiet

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

Anthony: live.streaming isn't playing our ads every 10 minutes; on by default for free users; remove it for logged-in users.

  • New stations default to a spot every 600 s (--breaks 0 for none). Six public live.streaming stations on server1 had none (set by hand already).
  • src/listen-pass.ts: nixamp.com signs v1.<exp>.<hmac> for a signed-in account (GET /api/v1/me/pass, credentialed CORS for *.nixamp.com only); peers check it at /api/v1/listen-pass/check and remember the answer.
  • src/break-silence.ts: while the channel's playlistAt === -1 (a break), a pass holder's radio stream gets silent MPEG-1 L3 frames for the same duration. TV (fMP4) keeps breaks for everyone.
  • Station page fetches the pass before the first stream; CSP connect-src adds https://nixamp.com.
  • nixamp.com player: signed in = paid: true, no client breaks.

Tests: new test/listen-pass.test.ts; full suite 991 pass / 0 fail.

🤖 Generated with Claude Code

…e instead (0.46.0)

New stations get a spot every 600 s unless asked for none (--breaks 0).
nixamp.com signs a listen pass for a signed-in account (GET /api/v1/me/pass,
credentialed from *.nixamp.com); a station page adds it to its stream link and
the station checks it with nixamp.com (/api/v1/listen-pass/check, remembered).
While the channel says a break is on, a pass holder's copy of a radio stream is
silent MPEG Layer III frames lasting as long as the spot. TV keeps its breaks.
The nixamp.com player treats a signed-in listener as paid: no client breaks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ralyodio
ralyodio merged commit b4f1ab2 into main Oct 20, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant