Caldera Music Headless v1.1.0
New
- The equalizer you set up from Plexamp can have any number of bands from 1 to 10, instead of always ten. A fresh EQ opens with five bands spread across the range (60 Hz, 250 Hz, 1 kHz, 4 kHz, 12 kHz); an EQ you already saved keeps all ten, and a band you remove stops affecting the sound.
- Multi-room speakers can find each other on networks where multicast is blocked (some mesh APs, AP isolation, multi-VLAN setups). New
snapjack.useDiscoveryHintssetting (default on) lets you disable the probe. - New DAC Settling Delay option in Settings → Audio (Off, then 0.5 s steps from 0.5 s through 5.0 s). It pads every device open with silence so PLL-lock-sensitive DACs don’t clip the start of the first track. Multi-room speakers receive the same silence and stay in sync.
- The daemon reports its own version and update state over HTTP, and can be told to install an update:
GET /api/update/statusreturns the running version, the latest one, the channel and whether an update is waiting, andPOST /api/update/startbegins the install. - The log now reports each track’s download speed when its cache fills (e.g. “Download complete: 8123456 bytes at 34.2 MB/s”), noting the cap when a precache speed limit is in effect.
Fixed
- Speakers in other rooms no longer sit noticeably behind the room doing the streaming. The gap grew over the first couple of minutes of playback and only a stop and start cleared it.
- Albums whose files carry cover art in an ID3 tag play again instead of skipping straight through every track. Once a track had been cached, it was mistaken for an MP3 and reported as having no audio.
- Rooms playing your music no longer drift slowly late and then jump back with a skip, roughly once every three quarters of an hour.
- Turning on repeat while the last track is already playing now wraps back to the start; the album used to end anyway.
- A room playing another room’s music no longer stutters and jumps out of step while it finds sync, or after a network hiccup.
- The room you start the music from no longer drifts out of step with the other rooms it is playing to. A brief hiccup used to leave its own speakers running early for good, and only a pause and resume put it back.
- A speaker playing someone else’s stream no longer stays permanently behind after a rough patch on the network. Short glitches used to each push it a little later with no way back, until the room was half a second out and only a pause and resume would fix it.
- Seeking through an MP3 no longer sometimes jumps straight to the next song. Variable bitrate tracks were the ones affected, and the further into the track you seeked the more likely it was.
- Caldera Amp and the headless daemon come back after a long suspend on Linux: the player reappears in the remote players list and rejoins the speaker mesh, instead of staying silent until you restart it.
- Changing the streaming quality cap now applies to the next track you play, instead of only taking effect once the queue happens to reload.
- Tracks whose server metadata leaves out the bitrate now buffer for their real size instead of the smallest allowed, so they are less likely to stutter on a slow connection.
- Quitting the player no longer sometimes ends in a crash after it has already said goodbye.
- Tapping Previous while one track is crossfading into the next now restarts the track you are still hearing, instead of doing nothing and jumping back to the incoming track.
- Resampler Quality is now called Balanced, High and Maximum everywhere. Remote settings panels labelled the same three options fast, balanced and high, one step out of step with the player’s own screens.
- Casting a paused queue from the Plex app now starts where it left off. The player showed the previous track’s elapsed time and then began the new track from the beginning.
- Multi-room players now show plain addresses like 10.0.0.133 instead of the IPv6 form 0000:0000:0000:0000:0000:ffff:0a00:0085, and are matched to the right server connection again.
- The player you are connected to now appears in the multi-room list with a reachable address, so its settings open instead of failing to load.
- A speaker you select before it has appeared on the network now starts playing once it shows up, instead of staying silent until you deselect and re-select it.
- Starting a playlist right after a paused handoff no longer shows the progress bar stuck at the handed-off position; remotes now follow the new track from the beginning.
- Unselecting the last speaker a player was sending to now pauses it, instead of switching the music to the player’s own speakers and playing it out loud in that room.
- A speaker you remove from a multi-room group comes back on Home as its own player, instead of disappearing until you connect to it and re-select it.
- Starting playback from a different media server now validates its connection before sending the play request, instead of waiting on a stale saved address.
- Resuming a paused multi-room stream now plays again instead of staying silent until you disconnect and reconnect the speaker by hand.
- A player you deselect as a multi-room speaker now stops receiving audio, instead of being streamed to indefinitely.
- Multi-room speaker lists no longer accumulate duplicate ghost players after a player restarts at the same network address.
- Playback now retries an output device that is temporarily unavailable instead of remaining stuck on Playing with no sound.
- Streaming tracks no longer skip to the next song when a redirect or connection times out before the audio download begins; Caldera retries the request first.
- The equalizer’s gain and Q now cover a narrower range in Plexamp (gain 12 dB either way, Q up to 6), so ordinary settings are easier to dial in.
- Skipping through tracks now stops downloading the ones you’ve skipped past.
- Background precaching now waits for the current and next track to finish caching instead of downloading alongside them, so it no longer competes with what you’re listening to.
- Paused cast handoffs now resume from their saved position instead of restarting near the beginning.
- Loud crossfades and gapless handovers no longer produce an audible click.
- Reconfiguring audio during playback no longer lets the old audio path interfere with the new one.
- When an unavailable output device falls back to System Default, settings now select that fallback and remove the stale raw device identifier.
- Leaving Repeat One after a track looped no longer starts the next track over the track already playing.
- An expired or revoked Plex token is recognised as expired again, so you’re prompted to sign in instead of being told the server is unreachable. Refreshing the server list with a stale token reported a connection failure and left the old servers in place.
- Multi-room clients can now reach a room whose remote-control port isn’t the default 32500. Each player in the mesh list now advertises the port it actually listens on.
- Playback position now stays tied to the audio you actually hear through seeks, fades, pauses, underruns, track transitions, and output-device changes instead of jumping, drifting, or briefly showing another track’s time.
- Gapless MP3 transitions no longer intermittently insert a 20 ms silent period at the track boundary.
- Playing to a DAC clocked at 176.4 kHz produced loud static instead of music, whether the source was DSD or ordinary FLAC; every output rate now plays cleanly.
- Plex servers that renewed their certificate under Let’s Encrypt’s new roots became unreachable; connecting failed with a certificate error, and the server could not be browsed or played from at all.
- Playback could come back silent after a stop; the player showed a track playing with no sound until it was restarted.
- Switching output device, sample rate, or channel layout during playback could crash the player or emit bursts of garbled audio.
- Caldera could crash on quit while a track was still playing.
- Playback could freeze, or the player crash, unexpectedly during a listening session.
- Debug logs record how a Plex server was chosen again: each connection tried, whether it answered, how long it took, why it failed, and which one won. Reports of “could not connect to server” were previously undiagnosable.
- Caching a track now does a fraction of the disk work it used to, keeping playback and the interface smooth on players with slow storage.
- Playback no longer stops dead partway through a listening session, frozen on a track that never started and unreachable from remotes, when a Plex server becomes slow or unreachable.
- Clicks on the first track after Match Source switched the output to a higher sample rate.
- The volume shown by a Plex remote and by a multi-room (Snapjack) speaker controller now stay in sync, instead of one reporting a stale level (most visible while playing a stream received from another Caldera speaker).
- Starting multi-room networking no longer intermittently crashes during startup.
- When your Plex sign-in expires or is revoked, Caldera Amp now signs you out and returns to the sign-in screen instead of silently failing to play. A captive portal or a brief network blip won’t sign you out. (Headless daemon: logs the rejection and exits so it can be re-run with
--login.) - Multi-room speakers no longer log a flurry of “removing stale peer” lines on every multicast tick. Requires all multi-room peers to be on this build; older peers will mishandle the new probe format.
- Multi-room speakers no longer churn through repeated “peer connected” events and stale-peer evictions a few seconds after each player joins the mesh.
- When this player is receiving audio from another room and the sending player restarts or crashes, audio resumes on its own within about a second once the source comes back, without toggling the speaker in Plexamp.
- Mid-session sample-rate changes no longer interrupt audio at the remote speakers this player is casting to; local output and remote speakers stay in sync across the change.
- Multi-room routing now survives a player restart: audio reaches the speakers it was sending to before, without having to toggle them in Plexamp.
- Multi-room speakers no longer show up nameless in this player’s Speakers menu or in remote Plex apps after a cold start.
- The player still registers with plex.tv when its LAN-discovery port (UDP 32412) is already taken by another Plex client on the same host, so it stays visible to remote Plex Web and to Plexamp on mobile data.
- The player no longer hangs at the first track transition after resuming from a saved-position pause, freezing the now-playing display and progress reports on the previous track while audio keeps playing.
- During track transitions, Plex’s now-playing indicator no longer briefly shows the wrong track before correcting itself.
- Match Source now opens the mixer at the source’s channel count on a multichannel device (HDMI display, multi-output USB DAC, pro interface) instead of pinning to stereo. It applies on the first track of a new playback session; gapless transitions within an album are not interrupted.
- A failed save no longer destroys the file it was replacing. On a full disk this wiped the saved session, losing the current track, its position, and the server address.
- Resuming after the audio device had been released while idle could play loud distorted noise instead of music, on DACs whose format the app renegotiates on re-open.
- After a crossfade, the new track’s time counter ran several seconds ahead of the music, so a track could report a time past its own length.
- Seeking or resuming near the end of a track could silently skip the rest of the queue, jumping each following track to its own final moment so nothing played while the player still showed a track as playing.
- Quitting could hang for two seconds before the player exited, and occasionally crash on the way out.
- Playback could stall on a track that had already ended, still showing playing at 0:00, when an upcoming track failed to load and the queue had scrolled past it. The track that never loaded is now dropped so playback carries on.
- The daemon could freeze, with playback stuck and unreachable from remotes, when a multi-room speaker dropped off the network.
- The album-art and loudness/waveform caches no longer grow without bound after an unclean shutdown; files orphaned from the cache index were invisible to size-based eviction and never cleaned up.
- Opus albums dropped a short silence at every track change; Opus is now gapless like FLAC and MP3.
- AAC tracks clicked at the boundary between one track and the next.
- Audio could turn to noise when several tracks were sounding at once, such as a crossfade running into a queued track change.
- Fixed crashes when stopping playback or quitting the player.
- Fixed rare crashes when quitting while a track was still downloading, and after a network change.
- Fixed crashes when adding a track to the play queue, or when the queue refreshed, while playback was starting or changing tracks.
- Fixed a crash when switching servers or reloading the queue while a track was playing.
- With Repeat One, the progress bar could run past the end of the track and stay there; and stayed stuck there while paused.
- The app could freeze when skipping tracks while one was still downloading.
- After a crossfade the next track’s timer started over from 0:00 a few seconds in; it now counts on from where the track actually is.
- Picking a Plex server no longer hangs for 15 seconds when one of the addresses it advertises silently swallows traffic (a VPN address this machine isn’t on, or a stale one from another network). An unreachable server is now reported in about five seconds, and a reachable one is picked as soon as it answers.
- The settings schema uses consistent capitalisation, sends readable group headings instead of internal ids, and no longer hides settings behind an Advanced flag. Secret settings such as the Plex auth token are left out of the schema entirely rather than sent as an empty entry.
--loginsetup now offers “System Default” as the first output-device choice, and picks it when you press Enter. It used to pin whichever device was default at install time.- The device list served to remote settings UIs names the device System Default currently uses, for example “System Default (USB Audio DAC)”, and no longer tags a second row “(default)”.
- Remote settings UIs can now pick PipeWire’s default sink on Linux. That entry was previously dropped from the list, leaving it selectable only in the local settings window.
- Choosing System Default as the output device now stays System Default, instead of the daemon pinning the device that happened to be default and no longer following the system output.
- DSD and other high sample rates no longer risk clicks or a crash when the output rate changes mid-session, and Linux (ALSA) now picks the closest rate the DAC can actually clock, preferring the same clock family (e.g. DSD64’s 352.8 kHz to 176.4 kHz).