Merge pull request #741 from lokal-music/release/v14.1.4
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 desktop search artwork and stream URL parity with mobile (#740)
Details
Diagnosis
The mobile HTTP add-on path already handles missing cover metadata and
streamURLinline media from search; desktop did not. Desktop only acceptedstreamUrl(lowercaseu) in the /stream decoder and MPD manifest detection. LastWave search can omit artworkURL altogether, so desktop showed placeholders, although it already has a Deezer/Apple/YouTube artwork resolver. The uploaded user log contains no LastWave request-specific failure, so these are verified code mismatches, not yet a verified cause of every reported playback failure.Changes
- Recognize
streamURL,downloadURL,mediaURLaliases in nested /stream responses and DASH manifest extraction. - Cache a clearly progressive HTTPS
streamURLfrom a search result privately in the Electron process, using it for playback when no explicit quality preference is configured. Reject previews, encrypted/DRM links, header-dependent links, suspicious media hosts and opaque URLs; fallback to the regular /stream flow. Force retry and downloads continue through /stream. - Match mobile's cover fallback for HTTP search results: backfill missing images asynchronously in bounded groups using Lokal's existing artwork resolver, protect against stale search/provider changes, and preserve the artwork in result metadata for queue/save.
- Add redacted
[online-addon-search]and[online-stream]prepare diagnostics so subsequent failures can be identified without revealing account tokens or signed media URLs. - Regression fixtures cover missing search artwork, inline streamURL, nested uppercase /stream URLs, MPD streamURL and explicit quality settings.
Validation and remaining uncertainty
Reviewed source parity against
lokal-music/mobile/lib/features/discovery/discovery_sources.dartanddiscovery_artwork.dart. Backend JavaScript parses successfully. CI workflowDesktop LastWave and background lyricsruns the expandedlastwave-desktop-port.test.mjs, related signing/hybrid tests, and compiles Vite frontend.No authenticated live LastWave endpoint test has been performed: the supplied application log has no LastWave request-specific event and does not establish whether the user's configured HMAC signing key or CDN availability is correct. Do not claim live playback success before retesting the actual account on the built app. This change does not alter unsigned HTTP add-ons' signing rules or embed any signing key.
Summary by CodeRabbit
-
New Features
- Add-on search results can now use eligible direct recording links for playback, while playback settings that specify quality or format continue to use the provider’s stream resolution.
- Missing artwork can be filled in for add-on search results when matching artwork is available.
- More add-on playback links and artwork fields are recognized.
-
Bug Fixes
- Improved handling of add-on search results that include playback links, helping tracks play and display artwork more reliably.
- Recognize
Contributors: @CHEYCKIT
Full Changelog: v14.1.3...v14.1.4
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.4-arm64-mac.zip:
[13210845C230984B6B5C9159C7077A7A7F481B185A191935169B3BED1AD91C7B]
Lokal-14.1.4-arm64-mac.zip.blockmap:[D7B3B64897FB662C5BF451E81C5E2D75CE24D03D12F7AB44E38F5D4CDF324300]
Lokal-14.1.4-arm64.AppImage:[CFB24D56AC514D99C09592C1E143E9B77E9B4F9A100789C46609AA864EA713B4]
Lokal-14.1.4-arm64.dmg:[C3A857BBEAA91F57B390DB15AA01F3B296C059C9F76262F8A8FB81D8E3352D9D]
Lokal-14.1.4-arm64.dmg.blockmap:[44A239778215D7DD5FB96F1FB9AFF36ABA696BB0F35902CCB5FF4B1E06A3D743]
Lokal-14.1.4-mac.zip:[B488B43289C198CC3CE59A66F88ADEDF618568A61A24E41A15F77B99CC774A57]
Lokal-14.1.4-mac.zip.blockmap:[F082F9AF9C0CB6B184DC933C5AB8B79763F04147F31CC8B5BBAECAFFC2B3F736]
Lokal-14.1.4.AppImage:[690C0DC124FA2177030AAF745A695A1AA67069C10B04259475818366432B0E2B]
Lokal-14.1.4.dmg:[2786F20CF5A61E3CEA81B4ECEA2FD8F761D99E34C2FFF43DA82CBBDEA5880E27]
Lokal-14.1.4.dmg.blockmap:[6501AC4F909A8291A26C0623E1B8BF0DED537FA2760A52908C9F884D3699793F]
Lokal-14.1.4.exe:[32890FF4464BC5FDF8945CBB1DAD1825F876F4604CFCA19F95F46D38E5992334]
Lokal-Setup-14.1.4.exe:[6F928BA945E1BF51747B5247A7438EB3A0034706BDF98F8BD9F582BBF1CDE963]
Lokal-Setup-14.1.4.exe.blockmap:[FB2470E1AD52527483B17B33D579029E9DEB9E80ECD00549408431679C700E42]
builder-debug.yml:[0815839BDDE2EA9C51271AB8CF80AE42B94F1CE071CCBAA9105AA5041B5429FF]
latest-linux-arm64.yml:[37B63A3AB37EF039A035E5025F06CCE32F2279182C62D04F49C71E11ABEC3776]
latest-linux.yml:[D1B7CD66061D43EE4DAC6012A5659E01186FD7F2BA32E94EEAFB53917DD5513C]
latest-mac.yml:[CD3E2DEA724138D147657F21E5C9BDBA59A2580283C4E83039EFF3CC97BA500D]
latest.yml:[87E2C1058BB8E907D174EF8AB658C537A2843619C01637F01B9BF5F31CA3479C]
lokal-music_14.1.4_amd64.deb:[E1368B06CB70611491771286AB01E3EEE941ED756FFF22D756495B390827F9D2]
lokal-music_14.1.4_arm64.deb:[F12F039D2FE47BE8EE4E1A165FEC38AC1B3A42D499C5043BC14AFFF4649ECCB0]
