Repository navigation
v1.6.0
Listening
- Data saver — a new profile switch. Streams everything as 128k Opus, including the high-bitrate lossy sources that used to be sent as-is. Roughly half the bytes, and on a weak mobile signal it is the difference between a track starting in a few seconds and stalling for the better part of a minute. It only re-encodes when the encode is meaningfully smaller than the original, so a 96k MP3 is left alone rather than "shrunk" into something bigger.
- Transcode audio — a new profile switch, on by default. Turn it off to receive the original file untouched: better quality, far more data, and some browsers stall on large FLACs. Data saver has nothing to reach for while it is off.
- ReplayGain follows whichever path a track actually took — baked into the encode when the track is served as Opus, applied by the player when it streams from the source, never both.
Playback
- Crossfade now rides an equal-power (sin/cos) curve instead of two linear ramps. Complementary linear ramps sum to about -6 dB at the midpoint, so every handoff dipped in the middle and was heard as one track stopping and another starting; the perceived level now stays flat across the whole overlap.
- Each side of a fade peaks at its own ReplayGain target, so the crossfade rides on top of normalisation instead of flattening it.
- An end-of-track advance now names the track it is leaving, so the server can tell a retried advance from a genuinely new one. Before this, a retry that landed late advanced the queue for real and silently skipped a track.
- The hidden-tab pre-advance handoff added in v1.5.0 has been withdrawn. The tagged advance retries cover the same lost-advance case without parking a second audio element mid-queue.
Admin dashboard
Rebuilt around one time window and the listening data.
- One range selector at the top — 24 hours, 7 days, 30 days, 90 days, all time — drives every widget, and the choice is sticky per session. The four separate requests charts that all showed the same metric are gone. KPIs carry a delta against the previous equal-length window, suppressed for all-time rather than compared against a partial period.
- New headline strip: listening time, plays, completion, listeners, library and reach, each with a sparkline.
- New widgets: listening over time, listening clock, plays by source, source quality, top tracks, top artists, top albums, library growth, listeners, and visitors by country.
- The eight operations cards that each duplicated an admin module collapse into a single Operations strip, with every cell linking through to the module that owns the detail.
- Widgets declare their own band and position, so the layout is fixed regardless of registration order.
Interface
- The Admin link in the sidebar and account menu is now shown only to clients flagged
is_admin, instead of pointing every listener at a login wall they have no account for. The flag appears in no form or settings payload — granting it takes an UPDATE against the database.
Full changelog: v1.5.0...v1.6.0