github lokal-music/lokal v12.5.1
Release v12.5.1

latest release: v12.5.2
3 hours ago

Release Banner

Merge pull request #682 from lokal-music/release/v12.5.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 HTTP add-on fallback delays and unintended 15-minute prep window (#679)

    Details

    Desktop has the same automatic-playback fallback problem as mobile, including a separate backend timeout defect.

    Confirmed root causes

    • HTTP addon /search and /stream calls allow 10s and 15s respectively; recommendation playback checks sources sequentially and can multiply those waits.
    • Renderer playbackAvailability previously allowed all a-... addons up to 15 minutes even though this extended window is needed only by Morneye packages.
    • Simply timing out in the renderer would still leave Electron's HTTP requests running. The new automatic flag propagates a bounded timeout to the real /search and /stream network operations, which abort the underlying request.

    Fix

    • Automatic HTTP fallback searches up to 3 eligible add-ons concurrently for metadata, then chooses playback strictly in the user's saved priority.
    • Applies a shared 3-second budget per active HTTP source's search + stream preparation when alternatives exist. The same request deadline is passed through renderer API → Electron preload → IPC → source resolver → abortable HTTP request.
    • Temporarily cools down an HTTP addon for 45 seconds after a transient network/timeout/HTTP 502–504 error, without changing saved settings, hiding manual retries, or skipping every source when all are unhealthy.
    • Morneye packages (identified by package: true) keep their existing extended processing/download allowance. An explicitly retried provider or only available source retains the normal lookup deadline.
    • No untrusted source can bypass URL/redirect validation or receive another origin's credentials.

    Tests / validation

    • New regression suites exercise aggregate timeout, concurrency/fallback order, HTTP 502 cooldown, recovery, only-source behavior, package isolation and direct underlying AbortSignal cancellation.
    • Discovery shelf CI executes both new suites, runs backend syntax checks and compiles Vite.
    • PR requires passing CI and device verification before merge. A remote HTTP 502, expired addon credentials or an endpoint that returns no playable rendition still requires provider-side correction.

    Scope: automatic desktop fallback and HTTP transport. Quality tag extraction from addon stream responses and unrelated Morneye network behavior are separate from this PR.

  • Search: restore combined All source scope (#680)

    Details

    Changes

    • Restore All alongside Local and Online in the source selector.
    • In All, perform local library and online catalogue/provider searches; keep exclusive modes isolated to avoid unnecessary work.
    • Retain the selected scope in preferences and update scope regression tests.

    Validation

    • Updated scripts/search-source-scope.test.mjs for the combined scope. CI has not been verified yet.

    Summary by CodeRabbit

    • New Features
      • Added an “All” search option to search both the local library and online catalogues.
      • The selected “All” search scope is now restored when returning to search.
      • Search options display “Local” for library-only searches, “Online” for online-only searches, and “All” for combined searches.
  • Fix: restore full-quality local folder artwork after network cache regression (#681)

    Details

    Root cause

    The SMB/WebDAV scanner refactor invoked cacheFolderArtwork() for every song folder, including local disks. This converted folder.jpg/cover.png into a shared 150×150 WebP and made large desktop artwork blurry.

    Fix

    • Keep the original full-resolution JPG/PNG/GIF/WebP path for ordinary local folders; never run them through the network thumbnail cache.
    • Detect UNC shares and persist roots explicitly connected as mounted SMB/WebDAV shares so their artwork can still be cached for offline use.
    • On a normal library rescan, repair existing local track DB references from nas-folder-*.webp/.jpg back to the original image without re-parsing the audio file.
    • For network tracks, preserve the source image byte-for-byte alongside its 150px list thumbnail. Full cover lookup serves the original on large surfaces, with thumbnail fallback if offline.
    • Add regression coverage distinguishing local paths, UNC and mounted network roots, and validating preservation of original JPG/PNG bytes.

    Testing

    • The Desktop network library regression PR workflow should validate syntax, network tests and renderer build. Physical Windows SMB/WebDAV behavior requires separate device verification.

    Local folder covers are no longer downsampled by the WebDAV feature.

    Summary by CodeRabbit

    • Bug Fixes
      • Folder artwork from network shares is now preserved in app storage, helping album covers remain available when the share is unreachable.
      • Cached thumbnails can retain or recover their full-resolution cover images, and full covers can be loaded from cached artwork without rereading the track’s audio file.
      • Connecting a network share now makes its folder available to the library scan; if the scan fails, the previous network folder settings are restored.
  • Add high-resolution moving covers from Apple (#678)

    Details

    Summary by CodeRabbit

    • New Features
      • Added a High-resolution Moving Covers option in Settings. When enabled, moving covers prefer 2160p when available; HEVC versions are selected only when supported by the system.
    • Documentation
      • Clarified how the high-resolution setting affects moving-cover quality and codec selection.

Contributors: @CHEYCKIT, @Zachhambo

Full Changelog: v12.5.0...v12.5.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-12.5.1-arm64-mac.zip: [F3E211E751BDC9A5F3A8B5E8F468672F31752CD44659C6B8002F8C0E55DE4E8E]
Lokal-12.5.1-arm64-mac.zip.blockmap: [8A599B695D4D718802C25279F6D4947388ADC61B0CB3540185FFD17C9BB1573D]
Lokal-12.5.1-arm64.AppImage: [356B02C04225A113C4D127467FFDBCEC6782D240BEC444E0E5E596A245E2B82B]
Lokal-12.5.1-arm64.dmg: [DFE6B8084591476E688A6F9A265E38C5130E9D34F90D1C9E10490D7F45DE3EAA]
Lokal-12.5.1-arm64.dmg.blockmap: [870E9258406D8B7F55E03D43EB5D77905A9CBA72991607436DF51B40BD456799]
Lokal-12.5.1-mac.zip: [584D062C49184B2BCC991117B29B66416C9CC0ACFFC4F01A4F3ED20880B50A22]
Lokal-12.5.1-mac.zip.blockmap: [100A5783418BB1AC6C591CCDB0EDFB3D42424BCDE0C178F9ACF205283F48EFCA]
Lokal-12.5.1.AppImage: [1F7A4242C91C4AC671ADB1A107D512E0831A093E26D11E0BCB5E574F8B66FF09]
Lokal-12.5.1.dmg: [F6A25448AE6E33FE616C55ACD074D9DC75F67BCFA4C00BFD9C4319C091567C10]
Lokal-12.5.1.dmg.blockmap: [A92CF238BC7AC7D2323810EF9C11B722A1A7E34CAD6D5942AA74861D4B518800]
Lokal-12.5.1.exe: [3EC34222990908A74E9E64AE58C73B43EEDBF994AF158BE4CE85556C8BD4D9F8]
Lokal-Setup-12.5.1.exe: [A1723E9C7A4A19F88389D793CF940934548E4203F6A4F198FC69524A9A97667B]
Lokal-Setup-12.5.1.exe.blockmap: [3FD9A063727EBAE7A13418B7EC083EF7DCC7518AB176A2C9293C614E83193D12]
builder-debug.yml: [43E115708F565EAB6E2B6D2AB447A5ADD935BDBE1062319482438BC8FA10EC19]
latest-linux-arm64.yml: [A3E54A9C557862509252E9F54194AA3B2D3624F76B5458C2526B19046F867E12]
latest-linux.yml: [A8299220201EFD39E6FFF4398C67819A808484C7B4CCE8235E83A5081376CB06]
latest-mac.yml: [38E5EA9D99521A52D810DEE1BA45051E07B15338868351C89166801699F4E5AC]
latest.yml: [4BFCA7D33A5F1A636DCB9770DAAA2211B9155CE04AB9C6B8F8B846B459DCBB76]
lokal-music_12.5.1_amd64.deb: [DC9EE76060AB1894DA151F0F23DED06D6C7902994A720D8C510FF7102E3238FB]
lokal-music_12.5.1_arm64.deb: [650CC5BC156E9772FFFE033AE75642A5DB05F4DFE78CC787A4C4886EFDC6BED3]

Don't miss a new lokal release

NewReleases is sending notifications on new releases.