Merge pull request #674 from lokal-music/release/v12.4.6
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
-
Keep SMB/WebDAV album artwork usable after NAS disconnects (#671)
Details
Problem
Desktop imports SMB and HTTPS WebDAV through OS-mounted shares. Unlike extracted embedded artwork, sibling
folder.jpg/cover.pngmay be stored directly as a UNC/WebDAV-mounted path; lists can lose these images when the NAS sleeps or the mount disconnects.Changes
- Read bounded (12 MiB max), named folder artwork from the mounted share once per album scan, cache a thumbnail into application-owned artwork storage, and use a stable content-version key shared across tracks.
- Preserve existing valid artwork during transient metadata/artwork failures rather than writing a blank pointer.
- Recognize numbered cover variants such as
cover.1.jpgto match mobile behavior. - Add tests for named image selection, cache conversion, failed network reads and oversized files.
Scope / caveats
- Desktop network access still uses the operating system's SMB/WebDAV mount and OS credentials. A server's
ACCESS_DENIEDcannot be overridden within the player. - Tests and real mounted-share validation are required before merge. Existing indexed tracks and library roots are not deleted.
Summary by CodeRabbit
- New Features
- Folder artwork can be saved as a durable local copy and reused across scans, including for tracks without embedded artwork.
- Artwork caching supports reuse of existing cached copies and skips invalid or oversized images.
- Bug Fixes
- Numbered cover image names, such as
cover.1.jpg, are now recognized when selecting folder artwork. - Artwork selection now prefers a cached folder cover, then an existing readable image, before falling back to the original folder artwork.
- Numbered cover image names, such as
-
Preserve desktop playback position when addon verification refreshes providers (#673)
Details
Fixes issue #672, item 1 only.
Root cause
Verification dispatches
lokal:addons-changed.App.jsxrefreshesaddonPlaybackPrefswith a new object, and the main audio-loading effect depended on the whole object. This re-ran audio source initialization, which pauses the existing track, removes its source and explicitly setscurrentTime = 0, even when only authentication/verification metadata changed.Fix
Use a stable key derived solely from the currently playing addon and its effective native/spatial output preference, instead of all refreshed addon metadata. Verification/login changes and unrelated addons no longer trigger audio reinitialization; intentionally changing the current addon's output mode still does.
Validation
scripts/addon-verification-playback.test.mjsasserts auth-state changes and unrelated provider updates preserve the key, while actual output-policy changes invalidate it.- Discovery shelf CI now runs that test and compiles the desktop app for this change.
The other two issue #672 reports (file mutations during playback, Amazon artwork) are deliberately not modified.
Contributors: @CHEYCKIT
Full Changelog: v12.4.5...v12.4.6
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.4.6-arm64-mac.zip:
[965C7AF48E5CB8337506605BBF1620427B82E5E82AF0688CEF0AAB37477D6558]
Lokal-12.4.6-arm64-mac.zip.blockmap:[B12BC29616EA7B8F3FFBE2742B1B2A9E38D4DA1577B7B6AF7870F7DFC2CD83C4]
Lokal-12.4.6-arm64.AppImage:[B05B26948E36B822FFB51D60F2652FF76F47D76E5EF142049C0758B658A285E2]
Lokal-12.4.6-arm64.dmg:[5E4093699A60F03FB18869573D09FD78BD4F6EC82310C38E938F32B8EEC55854]
Lokal-12.4.6-arm64.dmg.blockmap:[EB6F2A6CC853C6535A0B8D3A4D6593C7836945AFF4C0198B46045245BA97F4D4]
Lokal-12.4.6-mac.zip:[999498279E52EB055FE2547AF096BBB878F8E4F965E11C3CF966B402D0B32492]
Lokal-12.4.6-mac.zip.blockmap:[FE59BC650656EE665436CA382514B7AEB71892D87FB18D008FEEA366EF796611]
Lokal-12.4.6.AppImage:[419356339D7FFC5C71CC9804F34644B7DC716A8847EBB4F280DE7F2F350577CE]
Lokal-12.4.6.dmg:[132D20B3BBCE2764DD341F841BB2AB0645BB1DE810D4D0856EE1DA36E0409984]
Lokal-12.4.6.dmg.blockmap:[7B83D1F3CE69616E0802F4702A25475179E57DC92620B59EE7F539DFC0B05839]
Lokal-12.4.6.exe:[8DEDDDEA60190EFBD9AAE206E5B8325CAB6E351C710C30EFE5C8116C294F8132]
Lokal-Setup-12.4.6.exe:[8119B619ED20CC98C97869F9D6C2EC88953E2CB68F6DCA3340EB4577E2AA116C]
Lokal-Setup-12.4.6.exe.blockmap:[82BDD8ADAC9EB5C3F65A109E832D5F31612778D23875A06FA78C3A27E39BE2C9]
builder-debug.yml:[1350A21E822859034AE85F08CB00E2E68769D29A9BF5D3373B4AC70969C50E3E]
latest-linux-arm64.yml:[A4C1E2FE86A1B2B036ABCA7459FA32CE377A8856B7593CD796E6F00630529050]
latest-linux.yml:[3FC1E4E44BB888A42637DEB23988F061D9BC83EF12D6120F115C59331CB0FCE2]
latest-mac.yml:[74CC1927A76A07CA03C6ECCFBAD37F70423C3245069974A43090E7F0631C03F3]
latest.yml:[16026219A323910647EFA054F93834630AC3E7F96D3775BC4AAAFDFFAAFB2B21]
lokal-music_12.4.6_amd64.deb:[0F7CA6C2C8A00876DCEDD6ED34ACCAF0525FBB6BA0CC4127BDE3AF5B16F2250E]
lokal-music_12.4.6_arm64.deb:[C9D6FC2C2F3A4E81BB2CEFFD2F6EB3F47E8F1523438E8172B818BCC65587DC5B]
