Merge pull request #713 from lokal-music/release/v12.8.0
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 artist logos/videos failing silently on Apple Music lookups (#712)
Details
Regression after #709
The artist header remained plain and static despite the port of the mobile editorial assets. The original implementation built an Apple URL as
/artist/-/IDbut setfetch(..., { redirect: 'error' }). That generic URL can redirect to an artist's canonical slug, meaning the request failed before editorial JSON was parsed. A second gap was that artist identity proof required a matching song from only the 25 popular songs or first 100 albums, leaving smaller local libraries unmatched.Fix
- Use the public iTunes catalogue result's canonical
artistLinkUrlwhen it resolves to the selected artist ID. - Support up to 3 explicitly validated same-provider HTTPS redirects. The response is size-limited by actual bytes read; requests never automatically follow redirects to arbitrary domains.
- If the popular-song and album lookups fail to overlap, validate up to 4 local titles against Apple iTunes song search, requiring the exact Apple artist ID + artist name + track title. Avoid guessing by name alone.
- Recognize video-only Apple artist headers even if there is no custom logo.
- Emit diagnostic log messages when an Apple page is unavailable or has no editorial assets instead of silently swallowing every result.
- Add regression tests for canonical artist links, redirect handling, untrusted redirects, oversized bodies, uncommon songs, and video-only assets.
Validation
The prior implementation's unit tests only supplied an already successful
/artist/-/IDfetch, so they missed redirection. This PR tests the full lookup with mocked network responses, on top of the existing UI/IPC implementation. Apple editorial content remains optional; an artist without an Apple-supplied logo/video will correctly retain its plain name/portrait.Summary by CodeRabbit
- Bug Fixes
- Improved artist artwork detection, including video artwork when no artist logo is available.
- Artist visual lookups can recover from page or artwork-loading failures and check additional Apple Music search results to verify a match.
- Improved handling of redirected artwork links and large downloads.
- Improved loading of artist logos and motion artwork from local file paths, including Windows and network paths.
- Use the public iTunes catalogue result's canonical
Contributors: @CHEYCKIT
Full Changelog: v12.7.8...v12.8.0
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-12.8.0-arm64-mac.zip:
[B2E17E9FB42159F6778D396CAB24387974C0C8BA01545B50FD966206BA5D5B6E]
Lokal-12.8.0-arm64-mac.zip.blockmap:[39BA789D9F1F06E2988F17E7598056A05DD2A42F619080D41128F71086E72695]
Lokal-12.8.0-arm64.AppImage:[50236ADAD28DD0D9C2C742F602611981C94D0AA2D0724032A98701E2C31E1C20]
Lokal-12.8.0-arm64.dmg:[9DFABCB9B3F8EA644FBDD99A13F6756E1D8F25907812CBAA3FB1F5AE900C15C9]
Lokal-12.8.0-arm64.dmg.blockmap:[CB72CC948243FF5177BC53B564CF5357FA41DE31B58ECDEA40078918A312FE5A]
Lokal-12.8.0-mac.zip:[94777B819FD8EAE24CD95DD1751BCF9E7C17D39AE2A1845AB4E3FE413D115460]
Lokal-12.8.0-mac.zip.blockmap:[F179B72ACB3BE060A30A29E828AC7D1F084ABDAB31BAD453B618E8710A925509]
Lokal-12.8.0.AppImage:[C8D6A16FFE8D82D106687D5B27BFEC39379F767FDA8004AC7B35B76FB8D343AE]
Lokal-12.8.0.dmg:[50D346699765249C16EC66CDE96EB7A98CD18E3772CCC81F290C071711F616BF]
Lokal-12.8.0.dmg.blockmap:[2552FC38975ADED78C9DAE3B66934D4FF3351F24D3CA08E3D54D0DC7899F534D]
Lokal-12.8.0.exe:[66FC178A02E57BE77BAE3CF6E14596CDEAFAA20DCE6B1E273D66FF3CA5BDF279]
Lokal-Setup-12.8.0.exe:[F70E67C6EFAB45A16C7637DDAB486B5298289A80B6D0C01F158EDFA233B3E437]
Lokal-Setup-12.8.0.exe.blockmap:[3386CC7474FFCE142C56886B0B3873951B19376A592E8739A26FD949D8D4B7FA]
builder-debug.yml:[E462E300C975703510821E1FEDDEE4873DCC1AABB83F5BF47A3B4A371808D3E2]
latest-linux-arm64.yml:[3AA64BD6A8E857517A989E09BF6E16458E83F3E326CD34AA7EE790ACA246B487]
latest-linux.yml:[8BC45E392A201B2D7E21CC453728700CE4FEEC23A6202925D73CF563290D314B]
latest-mac.yml:[B5D3B1E4FE65AB0335FBD8852D7B5B028535231BA6781880ACFDD2BF7F1B7C90]
latest.yml:[6B598BA9CAAAFAC6F6B566AD82EDC820710429F63F3DBE479E33B7E4B17D255E]
lokal-music_12.8.0_amd64.deb:[2F79CC1A487DA55F0C097CB7C5B5A2BF31157BE55D5B63B9E916C5A34780D96D]
lokal-music_12.8.0_arm64.deb:[986C4F689A550E3CFDAE7A7AE5E5A13011B2885DFE17B0636EAAC81B2BAAE060]
