v0.16.0 #652
temidaradev
announced in
Announcements
v0.16.0
#652
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Android is back and shippable, two new sources (Apple Music, Nextcloud), lyrics grew depth blur and instrumental breaks, and remote tracks start faster. The app identity finished its move to
moe.kopuz.kopuz, so your data directory moves with it on macOS and Windows.Highlights
Android builds again. arm64 APK on the releases page (API 24+), signed release job that fails a tagged build rather than shipping unsigned, F-Droid recipe,
just android-release. Phone UI too: two line track rows, swipe gestures (up for fullscreen, left/right for next/prev), notification shuffle and repeat buttons, media permission flow, a keepalive waker so the player task keeps turning while hidden, WebView based YouTube deciphering, and an AMOLED theme (#634).(I wanted mention android again .d)
Apple Music. Browser sign in, catalog and library browsing, favorites, playlists, downloads, word timed lyrics, per server storefront and language. Playback is hand rolled Widevine using a CDM borrowed from a browser you already have installed (never shipped with Kopuz); Android goes through
MediaDrm. Streams decrypt progressively instead of pulling the whole file first (#455, closes #404).Nextcloud over WebDAV. App password auth. No music API there, so the library is read off the tree: folder is album, level above is artist. Listings carry no duration, so the scanner range requests the file head. Per server library folders with a PROPFIND picker and autodetect. Covers go embedded, then sidecar, then the preview endpoint. Use the Subsonic source if your instance runs the Music app (#629).
Lyrics. Depth of field blur with a strength slider, synthesized instrumental breaks that fill left to right, the active line stays centered, changing songs no longer reads as a scroll, tab switches no longer desync, and a manual offset that auto fills from the backend's reported output latency (#643, #647, #648).
Remote tracks start faster. HTTP clients are pooled across tracks instead of one handshake per song, and the next 512 KiB window prefetches once reading passes the middle of the current one (#634).
Radio uses the server's analysis. OpenSubsonic
sonicSimilarity(AudioMuse on Navidrome) when advertised, song seededgetSimilarSongsotherwise, seed at the head of the queue, and a 90s budget since cold metadata agent lookups were timing out silently (#647, 15615f3).Untrusted paths. Offline filenames are SHA-256 derived, extensions restricted, downloads staged before publication. Deletion only touches direct children of the offline cache or canonical files under a configured library root. Cancellation tombstones close the race where a worker finishing after a cancel re-registered the track (#650).
Fixes
json_eachinsert per page; in-memory search stopped cloning rows and re-lowercasing (various: stop treating persisted and remote paths as trusted #650).What's Changed
Full Changelog: v0.15.1...v0.16.0
This discussion was created from the release v0.16.0.
All reactions