Build & Push Docker Image / Build & push image (push) Successful in 6m49s
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>
4.9 KiB
4.9 KiB
Changelog
0.7.1 – 2026-10-26
- Gapless:
LOSSLESS_ONLY(defaulttrue) – follow-up tracks are only converted if no quality is lost (MP3 into a FLAC stream). A FLAC after an MP3 or a higher-resolution FLAC is played in original quality with a normal track change instead of being converted to MP3 / resampled
0.7.0 – 2026-10-26
- OpenHome renderer (Product, Playlist, Time, Info, Volume): the app hands the whole queue to the bridge, which plays it on its own – gapless mode included
- Soft fades (
FADE_MS) on pause, stop and track changes by the user - Gapless: cover per track in the BluOS app (ICY
StreamUrlwith an image URL) - Gapless: mixed formats – follow-up tracks in another format/sample rate are converted with ffmpeg
- Gapless: resume after long pauses continues at the paused position (BluOS reconnects after ~2 min)
- Monitoring:
/api/health(Uptime Kuma),/api/prtg(PRTG HTTP Data Advanced),/metrics(Prometheus) - English web UI (
UI_LANG=en|de) - Docker image with ffmpeg, multi-arch build via Gitea Actions (
git.techniverse.net/scriptos/bluos-upnp-bridge) - Fix: stale player status right after pause/play no longer flips the state back
- Fix: upstream connections are closed when the player disconnects mid-stream
0.6.1 – 2026-10-26
- Gapless: detect the end of the sent audio when BluOS freezes its counter or reports "connecting" (playlist end, follow-up track that can't be stitched) and react immediately
- Gapless: keep the stream open until the sent audio has been played; refuse reconnects to drained streams
0.6.0 – 2026-10-26
- Gapless: follow-up tracks are sent to the player only 20 s before they start, so queue changes in the app (reordering, removing, adding tracks) take effect until then
- Gapless: an emptied queue removes the queued follow-up track
- Fix: at the end of a playlist the first track of the gapless stream briefly played again – BluOS reconnected to the finished stream; the bridge now pauses before closing it and refuses reconnects
0.5.2 – 2026-10-25
- Fix: gapless mode showed every track twice as playing on the server – the content type is now taken
from
getSonginstead of a probe stream request
0.5.1 – 2026-10-25
CLIENT_NAME: configurable client name towards the music server ({player}= BluOS player name)
0.5.0 – 2026-10-25
- Server types:
subsonic(token auth) andopensubsonic(Airsonic Pulse, Navidrome, …) with API key authentication or password authentication as fallback SUBSONIC_ALIASES: further hostnames of the music server (public domain vs. internal address)- Covers for the player are served by the bridge – no server credentials in the player's image URL
- Playback refused if password authentication is used without the stream proxy
- Connection test shows server type and version
0.4.0 – 2026-10-24
- Gapless playback (experimental,
GAPLESS=true): the bridge serves one continuous stream and appends the next track's audio directly – perfect for live albums, DJ mixes and audio plays- MP3: ID3 tags and Xing/Info frames of follow-up tracks are dropped, frames are concatenated
- FLAC: STREAMINFO of the first track is marked open-ended, follow-up tracks are appended without metadata blocks (same sample rate / channels / bit depth required)
- Tracks that can't be stitched fall back to a normal track change
- The bridge maps the playback position to the audible track and reports track changes to the app
- ICY titles: the BluOS app shows the current track in its second line
- Track length from Subsonic
getSongif the app doesn't send it
0.3.0 – 2026-10-24
- Stream proxy: Subsonic streams are served through the bridge (
/stream/<random token>) withContent-Lengthand byte-range support. BluOS now treats them as files: seeking works natively and the title stays visible after seeking. The service account token never reaches the player. - New setting
PROXY_STREAMS(defaulttrue) - Track end detection by known track length – BluOS reconnects length-less HTTP streams like internet radio
0.2.1 – 2026-10-24
- Fix: songs restarted at the end instead of advancing (BluOS reconnecting the stream)
0.2.0 – 2026-10-24
- Web UI: live status page (now playing, player and bridge status, event log) and settings page with basic auth
- Settings persisted in
data/settings.json, runtime changes for Subsonic, repeat and log level - Tools: test player connection, test Subsonic login, pause/resume, restart
0.1.x – 2026-10-24
- UPnP/DLNA MediaRenderer for BluOS players (SSDP, AVTransport, RenderingControl, ConnectionManager, GENA)
- Subsonic credential rewriting to a stream-only service account;
download.view→stream.view - URLs with foreign credentials are refused instead of being passed to the player
- Track end detection incl. BluOS queue fallback and "repeat one" loops; BluOS repeat switched off on playback