LOSSLESS_ONLY (default true): follow-up tracks are only converted when
nothing is lost (MP3 into a FLAC stream). FLAC after MP3 or higher
resolution FLAC plays in original quality with a normal track change.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- OpenHome renderer (Product, Playlist, Time, Info, Volume): the app hands
the whole queue to the bridge, which plays it on its own
- Soft fades on pause, stop and user track changes (FADE_MS)
- Gapless: cover per track, ffmpeg conversion of mixed formats, resume at
the paused position after BluOS reconnects
- Monitoring: /api/health, /api/prtg, /metrics
- English web UI (UI_LANG=en|de)
- Multi-arch image build via Gitea Actions, image includes ffmpeg
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
BluOS freezes its counter once the sent audio runs out instead of
stopping; detect that, keep the stream open until played and refuse
reconnects to drained streams (no replay of the first track).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Follow-up tracks are sent to the player only 20 s before they start, so
queue changes in the app still take effect; emptied queue removes them
- Playlist end: pause before closing the stream and refuse reconnects to
finished sessions (first track briefly replayed before)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The content type of the first track is taken from getSong instead of a
short probe stream request, which the music server counted as a second
playback.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- SERVER_TYPE subsonic/opensubsonic: API key auth, password auth as fallback
for servers that store hashed passwords (Airsonic Pulse)
- SUBSONIC_ALIASES for public domain vs. internal server address
- Covers for the player served by the bridge (no credentials on the player)
- CLIENT_NAME: configurable client name shown by the music server
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Stream proxy: Subsonic streams served via the bridge with Content-Length and
byte ranges, so BluOS seeks natively and ends tracks cleanly (PROXY_STREAMS)
- Gapless playback (experimental, GAPLESS): MP3/FLAC tracks stitched into one
continuous stream, track changes mapped from the playback position, ICY titles
- Fix: tracks restarted at the end (BluOS reconnecting length-less streams)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>