Releases
Changelog
Tags are cut when something is ready, not on a schedule. Anything that changes an environment variable or the on-disk index is called out.
Cache eviction, Safari gapless
- Transcode cache now evicts least-recently-used instead of oldest-first, which stops a single large rescan from clearing everything.
- Gapless playback works on desktop Safari 17 and later.
- Fixed a scan hang on libraries with symlink loops.
- Opus transcodes are about 12% faster on ARM64 after switching to the newer ffmpeg build.
Per-device transcode profiles
- Each browser or app now remembers its own bitrate ceiling. Previously the setting was per account, which was wrong for anyone using a phone and a desktop.
- Added
SEQ_CACHE_SIZE. The cache was previously unbounded. - Search now matches on album artist as well as track artist.
- Removed the unused
SEQ_ENABLE_LEGACY_SCANvariable.
Index rebuild
- Moved search to SQLite FTS5. The index is rebuilt automatically on first start after the upgrade; expect one slow scan.
- Cut index size by roughly 40% by storing artwork out of line.
- Fixed multi-disc albums splitting into separate entries when disc totals disagreed between files.
- Scrobbles are queued and retried when Last.fm is unreachable rather than dropped.
Fixes
- Session cookie was not marked
Securebehind a proxy that terminated TLS. Everyone should upgrade. - Stopped following
.stversionsand@eaDirduring scans. - Corrected the reported duration on VBR MP3 files without an Xing header.
Multi-user
- Accounts, per-user queues, play position, ratings, and history.
- App passwords for Subsonic clients, so the sign-in password is not reused.
- New player layout with the queue in a side panel instead of a modal.
- ListenBrainz scrobbling alongside Last.fm.
Playback fixes
- Fixed the click between gapless tracks caused by not accounting for encoder delay on AAC.
- Seeking inside a transcoded stream no longer restarts the segment from zero.
- Reduced idle memory from 71 MB to 48 MB.
Subsonic API
- Browsing, search, streaming, playlists, and scrobbling under
/rest/. - WavPack and DSF support. DSF is always transcoded.
- ARM64 images, tested on a Raspberry Pi 4 and an Oracle Ampere instance.
Watcher
- inotify watching on top of the interval scan, so new files appear within seconds on local disks.
- Added
SEQ_BASE_URLfor subpath installs. - Artwork extraction moved off the request path.
First public build
- Scanner, browser player, FLAC and MP3, single user, no transcoding.