Merge pull request #750 from lokal-music/release/v14.1.8
Changelog
Windows builds: free code signing provided by SignPath.io, certificate by SignPath Foundation (code signing policy).
FYI:
Lokal is 100% local; the library, history, anything in database, or any info that is used for API's such as yt-dlp, LRCLIB, is NOT seen by us.
What's Changed
-
Fix LastWave pixelated player covers with mobile-style full-resolution selection (#749)
Details
Diagnosis
The previous LastWave fix made broken image URLs recoverable, but desktop still accepted the first image that loaded (possibly only 150×150) and displayed it enlarged in fullscreen. Mobile's
DiscoveryPlaybackCache._coveractually downloads available cover renditions, checks decoded pixel dimensions, and keeps the largest image (target: 1,000px short side). Desktop was missing the pixel-quality step.Changes
- Port mobile's resolution-selection policy for HTTP add-on player artwork: probe decoded width/height of the original and safe CDN higher-size variants, compare actual pixel size/area, and select the best valid rendition.
- When the current cover is still below 1,000px, perform an independent Deezer/iTunes/YouTube metadata artwork lookup to find a larger album cover. Bypass the local ghost thumbnail for this player-only lookup; ordinary search stays local-first.
- Preserve the current thumbnail immediately while the high-resolution cover is fetched asynchronously. Playback, decoding and search never wait for the artwork request.
- Promote successfully loaded improved covers to the current track and queue and persist safe HTTPS replacements using the existing ghost-track compare-and-swap IPC.
- Share in-flight artwork resolution across fullscreen, mini-player and player bar, with bounded caches/deadlines. Only HTTP add-on streams trigger these additional lookups.
- Add regression tests showing that nominal 1,000px CDN URLs returning 150px placeholders are rejected in favour of actual 1,200px images, that resolution cannot regress, that ghost thumbnails do not block remote lookup, and that all player surfaces use the full-resolution selector.
Validation
The dedicated LastWave CI workflow runs the new unit tests, backend syntax checks and the Vite renderer build. A live authenticated LastWave account is still necessary to validate the final visual result; signed artwork URLs are not logged or embedded.
No changes to LastWave's now-working audio playback or HMAC logic.
Summary by CodeRabbit
- New Features
- Player artwork can now use a verified higher-resolution image when one is available, while showing the supplied artwork immediately.
- Artwork selection checks image dimensions and can fall back to a valid thumbnail when a larger image cannot be inspected.
- Resolved artwork can update the active track and queue when it meets the supported criteria.
Contributors: @CHEYCKIT
Full Changelog: v14.1.7...v14.1.8
Setup
See README.md for full setup instructions.
macOS: this build is ad-hoc signed, not notarized (no Developer ID certificate is configured). The first time, right-click Lokal in Applications and choose Open, or run xattr -dr com.apple.quarantine /Applications/Lokal.app.
Binary Checksums (SHA-256)
Lokal-14.1.8-arm64-mac.zip:
[AF602C7FB8EEADD728643BD51903075C25C05B2127F7F2AF461F02F283C374DC]
Lokal-14.1.8-arm64-mac.zip.blockmap:[F1B17416DF7DBD89C6419912CB4BB5CCDA4820172CE9D5D96F7BA15BE54380D7]
Lokal-14.1.8-arm64.AppImage:[F1C7CF56828D50571046D2ADAAAFD98CA8FDC968BD7E507C826DE0C2180A67A3]
Lokal-14.1.8-arm64.dmg:[38CE314A5C5378A652D46B7ACC54EFB5E4E6AE510B61B17D5D6D1D9BE77DC258]
Lokal-14.1.8-arm64.dmg.blockmap:[AD0786801B4F53DBE5214A343C5AB2C377D8BFB636880D01A7DA745788FA09FA]
Lokal-14.1.8-mac.zip:[BF2121AD42AE828B5A53E445D807FBCA52ED3EA53856580011FD9899DCD87CC3]
Lokal-14.1.8-mac.zip.blockmap:[C6AA844E1CB55F4452FA00609424A982040BB0418E2BFE86056CEF8F8E4E3E32]
Lokal-14.1.8.AppImage:[CAD0AFEFA513A2720D17F748E56D166AEB6B5E71A33D96D407A40A906F2BDD2D]
Lokal-14.1.8.dmg:[97A8BB7B49F411FC23FB9D8BBC16257D00A28E3E0565B8DFFD80E38AD6E0C065]
Lokal-14.1.8.dmg.blockmap:[F94397781F226F57C85616C89D996BCD61C1B353CBEF18A9EA7D5940289F2E6E]
Lokal-14.1.8.exe:[697E3966C21E0F011D7F787FB94996A26F59A8CA5F7393FC8BF1D013FCA9AE28]
Lokal-Setup-14.1.8.exe:[EECA41A403FEDE7EEBF06098123CC42B10583C184C38372B7084F68292B253D0]
Lokal-Setup-14.1.8.exe.blockmap:[8CC195FDC854C7EE25242046F94B663D83B739AB3C830C86F8BE989BB460F708]
builder-debug.yml:[DFA5EEA9921D67FA4B3B88943C1D64BBE706BCC5F7CE9F697F6431E0B075F7E7]
latest-linux-arm64.yml:[5E87B081EC2BC6EC004DC3ABD98F00C73ECEB501A4959C4F064C108BE39FE770]
latest-linux.yml:[EDD89724C72E8009EFB45E66B0876CEA2500C291EAEAF8039C66FB302BA5E44E]
latest-mac.yml:[593F4F80DF13A9950BE3F714DF7BF0A0B3D2BD2FB155CA6D65664E27C2509517]
latest.yml:[3B01113535B1E11391089B9D49FAEB582D3FECD64F2EB0CB484884940BB8F9D7]
lokal-music_14.1.8_amd64.deb:[E98C0DCFA19915A561915836F3713818CEE1841919FD445948A0254913A004DA]
lokal-music_14.1.8_arm64.deb:[D26951056CE1659D3F1CFDB7D744297B72BAC7E3DD6A0B8D24F8D02FBFB95408]
