VibeServer for macOS 3.1.23 — the same build the Pi runs, from the same source tree.
Time limits, largely rewritten — and one of these is a hole rather than a bug.
A page reload used to buy a fresh turn
The session limit was keyed on a session id, and a session id is born with the page.
Reload the tab and the clock restarted, so anyone could refresh with a minute left and
get the full time again. The limit was never enforcing a turn; it was enforcing an
uninterrupted page. It is now keyed on the address — already what identity means for
the cooldown, for blocks, and for one-radio-per-listener. A turn lapses after an absence
longer than the limit itself, so somebody returning an hour later gets a fresh one.
The limit on a shared radio never worked
A receiver with several slots had one clock for the whole radio, taken over by each new
arrival. So it disconnected whoever joined most recently and could never touch the person
who had been sitting there all afternoon — the exact opposite of what sharing needs. Every
listener now has their own clock, and where somebody has to move it is the one who has been
connected longest.
Soft limits: the limit as a guarantee, not a deadline
New per-radio setting, under the time limit on the setup page.
- Hard (the default, and unchanged for every existing receiver) — disconnected at the
limit, always. - Soft — nobody can take the radio from you inside your time, and afterwards you simply
keep listening until somebody else arrives. Then the longest-connected listener gets a few
seconds' notice and the slot passes on. If the waiter gives up first, you keep the radio
and are told so.
While a listener is over their time the radio advertises itself as free, so a visitor is
never put off by an "in use" sign when the rule is on their side. The admin page still shows
exactly who is connected, for how long, and who is over.
Listeners are told the rule when they arrive, and the countdown no longer runs down to
"0:00" and then leave them connected wondering what happened.
An aerial, and a message on the landing screen
- Say what the antenna is, per radio — a receiver has always published what the tuner
can reach and never what the aerial can, and the aerial is what decides whether tuning
somewhere is worth your time. Eleven icons to pick from. Radios on the same mast offer each
other's description as you type. - A standing message on the landing screen — house rules, a donation link, or an
explanation of behaviour that looks wrong and is not. Separate from the temporary notice
you post while working on the server: this one stays up.
Also
- Refusals the server decided instantly and never actually sent: "you are already listening
on another radio", being taken over by the owner, and "your turn is over" all reach the
listener now instead of appearing as a bare disconnect. - A backgrounded phone is still a listener — it holds its slot, appears in the admin table
marked audio only, and is subject to the time limit, none of which was true before. - The setup page's Server tab no longer reverts what you typed if you visit a radio tab
before saving.