Playback reliability, mostly. YouTube is moving to SABR and several clients
stopped serving whole files, so the fallback chain was rebuilt around the
three identities that still work. Plus a normalization switch, podcast fixes
and two small Linux niceties.
New features
- A volume normalization switch under Settings ▸ Playback ▸ Audio, on by
default. Off clears mpv's filter chain entirely: no boost, no attenuation,
no limiter. (#298, #300) - Two-finger swipe to go back, on Linux. Windows already had it. (#302)
- Clicking the empty space around the artwork collapses the now-playing
view, the way a dialog backdrop does. (#302)
Improvements
- The stream fallback chain is now WEB_REMIX, VISIONOS, TVHTML5_SIMPLY, then
rustypipe. TVHTML5_SIMPLY gives signed-out playback a second leg in regions
where the web identity's bot check refuses. ANDROID_VR is gone: googlevideo
would only serve the first mebibyte of its URLs, so it cost two round trips
per resolve and could never have played anything. (#292) - Loudness defaults move with the switch: the boost cap drops from 6 dB to
3 dB, and the limiter ceiling goes to full scale so it only touches what
would genuinely clip. - Network errors read "No connection" instead of reqwest's raw
http: error sending request for url (...). - A nightly workflow checks that YouTube still streams a whole track on each
client and that the cipher registries know the player being served. It
never blocks a merge. - The Windows app-icon hint no longer promises the taskbar button, which
Windows 11 draws from the installed app and no running process can change.
(#299)
Bug fixes
- Gapless transitions popped or stuttered. A WebM track left one unwanted
sample at its end, and the next stream was not opened until the boundary
had already arrived. (#199) - Waking a PC from sleep walked the whole queue and scrobbled every track it
touched. A lost audio device is now told apart from a dead stream: playback
stops where it is and waits for you to press play. (#267) - Podcasts added to the library by RSS feed were skipped as unavailable.
(#294) - A podcast opened by its playlist id showed no title or artwork. (#294)
- A network outage skipped or dropped tracks instead of stopping.
- Signed-out users could get "Failed to recognize file format" on every
track. A capped stream URL is now refused before mpv sees it, and a resolve
that failed only for want of an account says to sign in. (#292) - Clients disabled in Settings were still used for music videos.
- A player.js rotation that landed before the community registries had a
config for it killed both cipher clients until a restart. (#292) - A cached stream URL was replayed with the wrong client's headers.
- A failed crossfade preload left its bad URL cached, so it failed again in
front of you. - A stalled music-video connection hung the player with no error.
- The cipher webview is kept alive on Windows, where rebuilding it has been
measured at two minutes on a cold machine. (#288) - Diagnostics read the disabled-clients setting under a key nothing writes,
so it reported none on every machine.
New contributors
macOS: the app is signed ad-hoc, so Gatekeeper says it "is damaged". Clear it with xattr -dr com.apple.quarantine /Applications/limusic.app.
On Linux only the AppImage self-updates. The .rpm is a normal package, so rpm users install a new rpm.