1.4.4-14.dev-gae3cf3737
No content.
No content.
No content.
Stop AirPlay audio at once on pause, and resume from what was heard On pause, an AirPlay receiver played out the audio it had queued, about 1.5 s of the stream's latency and a little of its own, so a Mac kept playing for a couple of seconds after its Now Playing showed it paused. An iPhone flushes the receiver when it pauses. Now pausing flushes the receiver, so it stops at once, and takes the pip…
Resend missed AirPlay 2 packets on the audio channel A Mac asks for about 35 packets again at the start of a session. They went back as RAOP's retransmit, wrapped on the control channel, and the Mac couldn't decrypt one of them (kAuthenticationErr in its log), so each was lost and the start of a song glitched. Sent again as they were, on the audio channel, as OwnTone sends them to AirPlay 2 receiv…
Send AirPlay 2 receivers what's playing as Apple's senders do A Mac showed the title, artist and album that SET_PARAMETER sends, but kept the first song's cover for the whole session and showed the stream as paused, so its clock didn't run (src/airplay/TESTING.md). Apple's AirPlay 2 senders say what's playing another way: MediaRemote's now-playing info in POST /command, an "updateMRNowPlayingInfo"…
No content.
Audio CDs can be opened, played and ripped on Windows.
"Search for artist" and "Search for album" in the playlist's menu show their results in the Search tab again. Audio CDs are named from MusicBrainz reliably, including their track titles.
Bump pyasn1 from 0.6.4 to 0.6.5 in /tools/mac-update Bumps [pyasn1](https://github.com/pyasn1/pyasn1) from 0.6.4 to 0.6.5. - [Release notes](https://github.com/pyasn1/pyasn1/releases) - [Changelog](https://github.com/pyasn1/pyasn1/blob/main/CHANGES.rst) - [Commits](pyasn1/pyasn1@v0.6.4...v0.6.5) --- updated-dependencies: - dependency-name: pyasn1 dependency-version: 0.6.5 dependency-type: indirect…
Run the release notes tests with uv, as the tools' are dist/pyproject.toml makes release_notes.py and its tests a uv project, with pytest, ruff and ty pinned as in tools/, and the same ruff and ty settings, applied to those two files only. The tests move to pytest, and a "Python (release notes)" job runs the checks and tests from dist, as the tools' jobs do from theirs, in place of the step in Lin…
Clementine no longer crashes when playing on a Chromecast that isn't on a network the network remote listens on. Linux software centres now show what's new in each release. The menu for choosing where to play shows whether each device is a speaker, a TV or a speaker group. Fixed a crash when double-clicking a track to play it. The Mac and Windows versions print their log when run from a terminal,…
Clementine 1.4.4
No content.
Play with AirPlay 1 to AirPlay 2 receivers that refuse NTP timing shairport-sync's AirPlay 2 builds only take an AirPlay 2 session with PTP timing. They answer the session's SETUP, which asks for NTP, with 501 ("ntp stream handling is not implemented"), so nothing played to them. They also advertise _raop._tcp, whose AirPlay 1 plays fine. So the renderer registry now gives an AirPlay 2 receiver's…
The Windows installer is no longer blurry on high-resolution displays.
Show what's playing on AirPlay receivers behind --airplay The receiver now shows the song's title, artist and album, its cover and its progress, as iTunes and OwnTone send them, with AirPlay 1 and 2 alike: each is a SET_PARAMETER on the RTSP connection, with RTP-Info saying the timestamp it applies from. The title, artist and album go as a DMAP listing item, with a persistent id for each song, and…
Play to AirPlay 1 receivers behind --airplay Receivers are now also looked for as _raop._tcp, which every AirPlay receiver advertises and AirPlay 1 ones only that. Its instance name is the receiver's MAC address and name, which is matched with _airplay._tcp's device id, so an AirPlay 2 receiver is still offered once, and played to with AirPlay 2. AirPlay 1 is RAOP: ANNOUNCE with an SDP of ALAC, SE…
Ask for AirPlay passwords and PINs, and pair with long-term keys A receiver that wants a password says so in GET /info (status flag 0x200), or refuses pairing with an authentication error, which a Mac also does without the flag. Clementine then asks for the password, keeps it for that receiver, and pairs with it as transient pairing's PIN; a wrong one is asked for again. Receivers that show a PIN…
Play to AirPlay 2 receivers behind --airplay Choosing an AirPlay receiver as the output now plays on it, rather than saying it can't yet. AirPlayEngine is now a GstEngine whose pipelines end in a new GStreamer sink, clementineairplaysink, so the equalizer, ReplayGain and gapless playback work as they do locally. GstEngine gains SetOutput() for an engine that always plays through one sink, whatever…
Find AirPlay receivers and pair with them behind --airplay With the undocumented --airplay flag, AirPlay receivers found on the network become outputs, alongside Cast devices and UPnP renderers. Choosing one connects to it, pairs and sets up a session, then says Clementine can't play on AirPlay receivers yet, and falls back to this computer: playing comes next. AirPlayDiscovery browses for _airpla…
Clementine Remote can list the library's smart playlists and play them.
Use C++20 where it makes the code simpler - NewClosure picks between its overloads with requires clauses rather than enable_if_t default template arguments. - C++20 derives != from ==, so the hand-written operator!= are gone, and the operator== that compared every member are defaulted. - std::numbers::pi replaces the POSIX M_PI macro. - qScopeGuard replaces BOOST_SCOPE_EXIT. Co-Authored-By: Claude…
No content.
No content.
The library has a new "Added in the last 30 days" smart playlist.
Build with C++20 Every compiler CI builds with supports C++20's core language and library features such as concepts and std::bit_cast: the oldest is GCC 11.4 on Ubuntu Jammy, then GCC 12.2 on Debian Bookworm, with Apple Clang 17 on macOS and MSYS2's clang64 on Windows. C++20 deprecates capturing `this` implicitly with `[=]`, which GCC warns about and -Werror turns into an error on Linux, so the 16…
No content.
Clementine can keep the computer awake during playback, while playing on another device, while a remote downloads or syncs songs, or whenever it's open, with an option for each under "Keep the computer awake".
Full screen visualizations keep the screen from turning off on Linux again, and a new "Keep the computer awake" setting can turn this off.
Serve sync downloads and tell remotes they can sync With --media-sync, the network remote's HTTP server now serves the /d/ URLs in sync manifests: the original file, to the remote it was offered to, while it's connected. Each download has an ETag of the song's item key and version, so a remote resumes an interrupted download with Range and If-Range only when the file is still the same, and otherwi…