This release adds two major data systems: a brand-new SoundCloud streaming backend and a full SQLite storage rewrite with a reactive data layer, plus a native YouTube Music streaming path, a desktop tray icon and mini-player, richer lyrics, and a long tail of fixes and translations.
(Flatpak may not work this time, sorry for the inconsistency i will fix it next release)
Highlights
SoundCloud is now a streaming backend. You can add SoundCloud as a server option, sign in through your browser, and browse it like any other source: favorites, playlists, home menu, search, and track playback. Public tracks work, and your liked/favorite tracks sync in.
New SQLite storage + reactive data layer. The whole library now lives in a SQLite database (crates/db, compile-checked queries via sqlx) behind a reactive data layer, alongside a MediaSource refactor and a unified "client wall" for backends. Large libraries load and update faster, and views react to data changes instead of re-fetching.
YouTube Music plays natively, with no yt-dlp and no botguard. YouTube Music now deciphers streams natively with a built-in solver and a cross-platform PoToken minter, so the old yt-dlp + botguard path is gone for playback. Anonymous mode works with a webview-minted token (browse, search, Discover, mix radio, public tracks), and signed-in accounts stream Premium-tier audio. Stream tier is now routed by itag (141/256/258/774 handled correctly), free to Premium is re-verified, and 0 kbps readouts are hidden.
Features
- Tray icon for the desktop app. Click to hide/show the window.
- Mini-player integration.
- Local file type tag so local tracks are clearly marked.
- Libre.fm scrobbling support (alongside existing Last.fm).
- Progressive remote lyrics: Apple syllable-synced lyrics UI, enhanced word-synced lyrics, a new Paxsenix NetEase provider, and smarter fallback selection that fetches lyrics chunk-by-chunk.
- Metadata viewer and editor for inspecting and editing track tags.
- Fullscreen view: artist/album navigation buttons, a permanent bitrate readout, plus accessibility and localization for the tab buttons.
- Album artist header is now a clickable link to the artist page.
- In-app logging & observability: a tracing toggle, per-session log rotation, crash reports, and export / open-log-folder, with a Chrome-trace mode for performance debugging. Runtime
println!/eprintln!is gone in favor oftracing. - Radio: added Turkish stations (Radyo 7, Nostalji).
- Translations: localized messages across many languages, a new Vietnamese locale, and a Turkish README.
- CI:
fmt+clippylinting added.
Fixes
- ytmusic: suppress the flashing cmd window on Windows process spawn.
- Now-playing cover artwork is stored in the app cache dir instead of system temp, with an Android-writable cache path.
- SoundCloud: fixed playlists, home-menu/album-menu integration, and offline + track covers.
- Fullscreen: fixed the multimedia-side and hero layout.
- player: dropped a duplicate resolve in
play_queue_linear. - Flatpak: host-browser sign-in via
flatpak-spawnplus soname/portal fixes. - Linux: tray and button fixes.
- lyrics: corrected active-line focus timing, short-gap bridging, and remote-provider fallback.
What's Changed
- feat(soundcloud): add soundcloud as a server option by @temidaradev in #413
- fix(ytmusic): suppress cmd window on windows process spawn by @lilsemihboi in #418
- fix: store now-playing cover artwork in app cache dir instead of system temp by @mvanhorn in #419
- feat(local): add local file type tag by @temidaradev in #420
- feat(mp): mini-player integration by @temidaradev in #421
- feat(tray-icon): implement tray icon for kopuz by @temidaradev in #422
- SQLite storage + reactive data layer, MediaSource refactor, client wall, and SoundCloud (#347) by @UMCEKO in #424
New Contributors
- @lilsemihboi made their first contribution in #418
- @mvanhorn made their first contribution in #419
Full Changelog: v0.6.7...v0.7.0