VibeServer for macOS 3.1.20 — the same build the Pi runs, from the same source tree.
Two new things an owner can say about their receiver, and a run of faults where the server knew
the answer and never managed to tell anybody.
Say what the aerial is
A receiver has always published what the tuner can reach and never what the antenna can —
and the antenna is what decides whether tuning somewhere is worth a visitor's time. An unlocked
dongle will honestly tune to 1.7 GHz whether or not the aerial follows it up there, so somebody
who hears nothing concludes the receiver is broken.
- A description per radio, set on that radio's tab and shown under its range on the landing
screen. It cuts the other way too: a 300 MHz aerial pulling in a lot of ADS-B is a reason to
visit, and there was nowhere to say so. - Eleven aerial icons — vertical, ground plane, whip, discone, dipole, long wire, loop, delta
loop, QFH, Yagi, dish. A radio whose owner has not chosen shows none, rather than one guessed
for them. - Type it once. Radios on the same mast offer each other's aerial as you type, with no save in
between.
A standing message on the landing screen
House rules, a donation link, or an explanation of behaviour that looks wrong and is not — the
idle waterfall slowdown being the obvious one. This is not the temporary notice you post while
working on the server: that expires and can be dismissed, this stays up and sits on the landing
screen before anybody connects. Links are accepted as http:// or https:// only.
Refusals the server decided instantly and never sent
sendWs() queues a frame for a writer thread; closing the socket on the next line threw it away.
The server was right, immediate, and silent — the client saw a bare disconnect and waited for
something else to time out.
- "You are already listening on another radio" now arrives in about 5 ms, naming the radio.
It used to arrive never. - Being taken over by the owner is announced again. This matters more than it sounds: clients
auto-reconnect unless they are told it was deliberate, so a notice that never landed produced
exactly the reconnect war the feature was designed to avoid. - "Your turn is over" reaches the listener whose session limit expired, instead of leaving them
to retry into the cooldown and meet "please wait" having never been told why.
A phone in a pocket is still a listener
Backgrounding an app closes the spectrum socket and keeps the audio playing. Three separate rules
only ever looked at that socket:
- The session limit did not apply at all, so a backgrounded listener held a one-at-a-time radio
indefinitely — the countdown ran to zero and the radio sat "in use, 0 left" for ever. - The admin table showed no row for them, while the listener count and the door both agreed
they were there. They now appear, marked audio only so a row costing a quarter of a normal
listener explains itself.
Also
- The setup page's Server tab silently reverted everything you typed if you opened a radio tab
before saving — every field on it, not just the new ones. - The front door serves the radio picker on first paint instead of showing the single-radio
page and swapping once JavaScript had worked out what it was talking to. - A listener rate that could read
2147483647k.