Merge pull request #756 from lokal-music/release/v14.2.1
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 desktop artwork parity across Search and the player (#755)
Details
Diagnosis
Desktop and mobile did not use equivalent fallback rules when a LastWave add-on omitted artwork or returned a dead/low-resolution URL. Desktop still matched exact title/artist strings, queried only the default Apple storefront, and its Search image component abandoned recovery when the first replacement also failed. Full-player artwork likewise inspected at most one independent catalogue result before giving up.
Mobile already canonicalizes remaster/explicit/featured credits without conflating remixes or live recordings, searches US and GB iTunes storefronts, and uses additional verified metadata fallbacks.
Fix
- Port mobile-style canonical title/primary-artist matching and conservative artwork confidence checks to the desktop discovery resolver. Reject wrong artists and incompatible live/remix/edit versions.
- Follow Deezer → US/GB iTunes → verified YouTube Music, with confidence-checked broader queries only when necessary. Retain the same source/recording selected for audio.
- Accept a bounded list of previously failed HTTPS/local cover URLs so a dead image never gets selected again; preserve caching, deduplication and per-request deadline.
- Search's shared
DiscoveryImagecan now request further valid alternatives after a failed replacement (up to four rejected URLs) and promotes only images that actually load. Local-library art retains priority when usable. - Full-player's decoded-pixel selector now tries up to three independent metadata candidates, restoring the best already decoded artwork on failure. Exact album-level lookup is available to LastWave as well as Amazon when track-level matching fails.
- Add targeted regressions for featured/remastered titles, distinguishing live editions, alternate Apple storefronts, excluded dead images, YouTube fallback, player retries, and UI wiring. Add those tests and existing discovery regressions to desktop LastWave CI.
Validation
- Verified backend syntax and several resolver scenarios using isolated mocked responses: correct featured/remastered title, GB fallback after excluded US art, later Deezer candidate, YouTube fallback, and rejection of wrong-artist artwork.
- The full Electron/Vite build and real authenticated LastWave account have not been tested locally. The CI workflow will perform the runnable tests/build; live visual verification is needed before claiming every missing cover is resolved.
- No media playback, signing key, or authentication changes.
Summary by CodeRabbit
- New Features
- Artwork lookup now checks additional music catalogs and regional sources when an initial search doesn’t find a suitable image.
- Discovery and player artwork can retry with other images when a cover is missing, fails to load, or is too small.
- Album artwork lookup now applies to streams with album information from any add-on provider.
- Bug Fixes
- Improved matching helps avoid artwork for the wrong artist, track, or recording version, and skips images that have already failed.
Contributors: @CHEYCKIT
Full Changelog: v14.2.0...v14.2.1
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.2.1-arm64-mac.zip:
[BFDAEE870E906EE3C2E9E009CD5EE2F3563F0C7450E8971E99324A15F7423193]
Lokal-14.2.1-arm64-mac.zip.blockmap:[2D50160CC8A0ECCD7F69A36597AA6A27621A8DDF23D64D025A1D9841F878D294]
Lokal-14.2.1-arm64.AppImage:[8A6A14D1E57BCB91D6170A7ECACA32EBEC4F74F9CBB405DE87CC921201764648]
Lokal-14.2.1-arm64.dmg:[9D252C3FE92D1CE0A7E9CC7E7C160FCC081F2ACFD0F4483947EB955AC93DC3F5]
Lokal-14.2.1-arm64.dmg.blockmap:[047E37BF04A07DD1D8AF3A5E39C7DAE84D22B9B1572A743E3BB4A975B0BB8454]
Lokal-14.2.1-mac.zip:[57B1E417C07F2D08AAE2F10DC0D63888A654E5678D6F7A858AA8035DB2E953ED]
Lokal-14.2.1-mac.zip.blockmap:[3CFC224EF7C15D5E9AE91A32825F2ABD378D1E7D105D000BE6675069B200DB1F]
Lokal-14.2.1.AppImage:[36846D4648FD4FBB91CB86F0C67D0A5F453A43642304E8E771CDDC1F5A994B98]
Lokal-14.2.1.dmg:[C396CE308453A94AA4648E79FA2AA1F8081DC5C880E0168DC7761E9972C95ACD]
Lokal-14.2.1.dmg.blockmap:[2D072F3D9B2EDDF88302E3381966B3D38DE7D6EC32F4B68DF3347F63E52EFF72]
Lokal-14.2.1.exe:[11A8D1E5F4453F062B56F487D54F8EE574FBD6BBAE7560C469EDE97E9B61A708]
Lokal-Setup-14.2.1.exe:[5FA25A08F345DC96E3B179DCE3437D82E88CAE586ABD906A2658A3932C5D3200]
Lokal-Setup-14.2.1.exe.blockmap:[B621F96A8EA4D3A90D87A190E66960D747DC13521BA70DC82938793316F1C4F7]
builder-debug.yml:[6A7836CAAE310FD0DB3F66B3CB54DA8947B1B05D9767A7AC7339CCCD648B9043]
latest-linux-arm64.yml:[FCD4794DF68BD46C4EA97EA28A54D0355744AD2CF560E34249D1F77EB60A075C]
latest-linux.yml:[DC342BF8600BE32CA5675B2186B83A9A377B52B19C4D9CB16025E581954C6CDA]
latest-mac.yml:[4688E0FC1E2FE2D6C8A926E317E39E24E77F1A8D3D813B1541EE25A5386F1422]
latest.yml:[E01543864245C15F03753972E1CD04C6FF4939ABD8D7B67ED95659A911E80D4D]
lokal-music_14.2.1_amd64.deb:[5196F7D338095CC7EF39C4CFF21DBC6CA171EA5627A8EEFB6D05D20687E87BE9]
lokal-music_14.2.1_arm64.deb:[F98ED7C6A8FAC8533578A24668CE7C4611C0937F693B88FF9F70F786EEE10C04]
