Merge pull request #635 from lokal-music/release/v12.3.2
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
-
refactor(desktop): unify provider acquisition and eliminate playback-only resolution stalls (#634)
Details
What changed
A core Morneye playback rework across Qobuz, Tidal, Deezer, Amazon and other installed download providers:
- Play and Save now use the same provider availability→download path. A successful availability check begins acquisition directly; a negative result retries once after optional enrichment for every provider, including native Tidal. No Tidal-specific bypass remains.
- Only Qobuz may hand a verified growing direct-file transfer to the player. Other Morneye sources use completed, codec-checked download files, without speculative live probes.
- Completed non-live audio moves into playback cache instead of incurring a second full-file copy when on the same volume (cross-volume copy remains).
- Provider authorization and failed availability retries are bounded. Download requests abort after 90 seconds of no real transfer/progress; this watchdog is only active during download, not interactive verification.
- Logs expose initialization, availability, retry, first byte, download completion, Qobuz live readiness and final playback readiness without track IDs, tokens, signed URLs or credentials.
Coverage
Added a desktop Morneye integration regression verifying both Play and Save for a native Tidal track: availability → enrichment → availability → download, plus provider parity/header tests. Native YouTube/SoundCloud/Monochrome and HTTP sources were not changed.
Validation still needed
node --test scripts/provider-progressive-parity.test.mjs scripts/mornye-packages.test.mjsand desktop build. Real authenticated provider tests must compare click→first byte, click→playable, buffering and seek behavior. No measured timing parity or passing CI is asserted here. For segmented/DRM sources playback cannot start before the usable file has been assembled.Summary by CodeRabbit
-
New Features
- Qobuz playback can now begin while media is still downloading, with readiness updates.
- Downloads show transfer progress when supported.
-
Bug Fixes
- Track availability is rechecked after enrichment when needed, improving acquisition when initial metadata is incomplete.
- Downloads that stop receiving audio for 90 seconds now fail with a retryable error.
- Completed downloads are staged more reliably, including when moving files across storage locations.
Contributors: @CHEYCKIT
Full Changelog: v12.3.1...v12.3.2
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.3.2-arm64-mac.zip:
[AC340266405E1F95524453083E3CB2C1B969D6825D6E7DF0A9C235173331D598]
Lokal-12.3.2-arm64-mac.zip.blockmap:[6D5CCCAAC2808D793F394EBBE18838B0A3DA0D6B2385DAD9E100BA7FED2B057D]
Lokal-12.3.2-arm64.AppImage:[CE428F9E1CF0FDF720F12958A1519E2F118CD7AAF92A0DA98F749E39BEA2E7EF]
Lokal-12.3.2-arm64.dmg:[957BF45F0E620F34E09B1F3629187D0325F116DAD3D24EBC47AC6207D7E36874]
Lokal-12.3.2-arm64.dmg.blockmap:[6DD4388598952F15796662E5EB4AD317DD6E7F3BE522B20D96A8349A2332115B]
Lokal-12.3.2-mac.zip:[7FCB76BBB4DFD42C345D611878F6150C5B50AEDF97E3D7CE86548A4A5EE5A76E]
Lokal-12.3.2-mac.zip.blockmap:[31ECDDC570D34CDA23AED2D636EFF86F713DE76A36239ADD99532BE81612421D]
Lokal-12.3.2.AppImage:[5FB3522AC2233E70CB84E6D17F492BBA0E48D3DDA1C374BE793F9555BE29702C]
Lokal-12.3.2.dmg:[8F90C8CEAFD981144AEE8626C719BC5B708A59B68A3A63043ED43A536ECACF01]
Lokal-12.3.2.dmg.blockmap:[4D887D145E0017B8EFEAB81EFD6A121ABB4EF9598092316B5BDE5606A9954A32]
Lokal-12.3.2.exe:[FEE25C7D0CE150917FE7502564A1CA4DB32F81A5ED80B052FCBEDA82BBA5ECE5]
Lokal-Setup-12.3.2.exe:[B49CD2CC8B922873BFE5E98BC614929AB459B1AC229233562E746DEEEFBFAE50]
Lokal-Setup-12.3.2.exe.blockmap:[3B07928357644B7EDB762435F9526236374879D8C481AAC4B16AF0CA760CCB7E]
builder-debug.yml:[CF7ADD70790736A4ACA33177A719D5FD3221300E98ACF45EC49CED673EE8E1E3]
latest-linux-arm64.yml:[26127DF2966276DF543AFD8023BB5A4E0066554F5D8C57401DFB9DA82D56251A]
latest-linux.yml:[DA9297DCCF062E5590F5AFD4F8CC8780EA5574DE277987CD0007DAC66BEB5172]
latest-mac.yml:[AF8025DD152899ADD0E6CE2645AF5D41B5BC711DCF6CE4343504CAB18EA5C8B0]
latest.yml:[9C6704E029BEC27A5944224D71192CC351781180D4DD39DD17F2265556169B8D]
lokal-music_12.3.2_amd64.deb:[25AE56C19B1E5BD31B3C88F17626BF278CD0AAAEF3A9DA1E64E0828DF5EDDE6B]
lokal-music_12.3.2_arm64.deb:[02693C37D24689938D4560F2FD8C48350B4CE3FAB83A09D9BB5D9EAE3571968C]
