com.blitzfc.qbz QBZ Hi-fi music player for Qobuz

QBZ is a native Qobuz client for Linux focused on reliable hi-res playback and desktop integration.

QBZ Contributors https://github.com/vicrodh/qbz https://github.com/vicrodh/qbz/issues https://github.com/vicrodh/qbz CC0-1.0 MIT #2b6cb0 #63b3ed com.blitzfc.qbz.desktop qbz Home and discovery view https://raw.githubusercontent.com/vicrodh/qbz/5f759514d35d4f07bec531c09a5384baea7fc073/packaging/flatpak/screenshots/home-discover.png Immersive cover flow mode https://raw.githubusercontent.com/vicrodh/qbz/5f759514d35d4f07bec531c09a5384baea7fc073/packaging/flatpak/screenshots/immersive-cover-flow.png Immersive line-bed playback view https://raw.githubusercontent.com/vicrodh/qbz/5f759514d35d4f07bec531c09a5384baea7fc073/packaging/flatpak/screenshots/immersive-line-bed.png Artist page with editorial enrichment https://raw.githubusercontent.com/vicrodh/qbz/5f759514d35d4f07bec531c09a5384baea7fc073/packaging/flatpak/screenshots/enriched-artist-page.png Local library view https://raw.githubusercontent.com/vicrodh/qbz/5f759514d35d4f07bec531c09a5384baea7fc073/packaging/flatpak/screenshots/local-library.png Hi-Fi DAC setup wizard https://raw.githubusercontent.com/vicrodh/qbz/5f759514d35d4f07bec531c09a5384baea7fc073/packaging/flatpak/screenshots/hifi-wizard.png Audio settings — backend, device, and quality https://raw.githubusercontent.com/vicrodh/qbz/5f759514d35d4f07bec531c09a5384baea7fc073/packaging/flatpak/screenshots/default-settings.png

Quiet Polish: QConnect cleanup, Linux tray for everyone, sticky and sidebar fixes.

  • QConnect (#316): qconnect_service.rs split into a 12-file module; History duplicates fixed (cursor-align skipped when local is the active renderer); History gaps fixed (set_queue remaps by track id instead of clearing); first-track hiccup, prev/next bouncing, and shuffle drift resolved
  • Linux tray: live tooltip with track title and "by Artist" plus inline hints, middle-click play/pause, vertical scroll adjusts volume in 5 percent steps; new Auto / Light / Dark icon override for GNOME's permanently dark top bar
  • UI polish: sticky headers no longer leave a gap at the titlebar (padding-top moved off the scroll container); Edit folder shortcut in the playlist sidebar context menu and on the Playlist Manager breadcrumb (#364); shift-range and Ctrl/Cmd+A multi-select across the remaining views
  • Streaming and playback: Qobuz subtitle/edition propagated through queue, MPRIS, and Last.fm + ListenBrainz scrobbles (#360); opt-in resume of seek position on session restore (#317); audio device enumeration skips virtual ALSA PCMs and routes libasound's verbose errors to log::debug
  • Build and packaging: x86-64-v3 baseline dropped so pre-Haswell CPUs no longer SIGILL on launch; legacy V2 wrappers removed across library, network, offline_cache, reco, cast/dlna, and api_server playback
  • Stratego theme: imperial crimson and bone white, AAA contrast on every text level
  • Stop-after / remove-after: queue context menu adds a one-shot stop marker and a tail-drop from a pivot

Mixtapes & Collections: two new first-class container types for curating your listening, independent from Qobuz's own playlists.

  • Mixtape: private, ordered, cross-source listening session. Add whole albums, single tracks, or nested Qobuz playlists in any order — a Qobuz album next to a local FLAC next to a Plex album. Never leaves the machine, never syncs
  • Collection: private themed album shelf. Album-only, grows as large as you want, supports album-shuffle (random album from the shelf, tracks still play in order)
  • Discography Builder on every artist page: fans out across Qobuz + local library + Plex cache, groups identical titles, lets you override release type, stamps the result as an Artist Collection in one click
  • Add to Mixtape/Collection wired into every context menu (Local Library, Artist, Search, Label, Playlist detail, Album detail, queue rows) with explicit duplicate handling (Add anyway / Skip / Cancel)
  • Plex queue resolver routes plex: album keys to the Plex cache so a Collection starting with a Plex album plays end-to-end, including auto-advance
  • Defaults polish: immersive panels default to 30 FPS; titlebar navs (Discover, Library, Local Library, My QBZ, Search) default ON; offline-cache tracks visible in local library by default — all respecting persisted user preferences
  • Security: rustls-webpki bumped to 0.103.13 for GHSA-965h-392x-2mh5 / GHSA-xgp8-3hg3-c2mh

Follow-up to 1.2.5 and 1.2.6: a defensive fix and a diagnostics expansion.

  • Defensive fix for the Discover carousel click-through regression in 1.2.6: mouse-drag scrolling no longer captures the pointer until a real drag is in progress, so clicks on album/artist/playlist cards reach the card's onClick across every WebKitGTK + compositor combo
  • System Diagnostics expansion: one-shot snapshot now reports OS / distro / install method / key library versions (WebKitGTK, GTK, glibc, ALSA, PipeWire, PulseAudio), live playback state, Qobuz Connect role (controller / local renderer / observer), and — opt-out toggle in View Logs — an optional 10s Chromecast + DLNA scan, all bundled into the same paste upload
  • Favorites sidebar backfill: users whose persisted tab order predated the Labels tab were missing the Labels entry; order is now diffed against the canonical default and repaired on load
  • Misc: dependency bumps (svelte 5.55.4, vitest 4.1.4, rand 0.10.1 for GHSA-cq8v-f236-94qc)

Accessibility, polish, and a couple of regression fixes.

  • Four new WCAG-compliant themes: WCAG Light, WCAG Dark, High Contrast (pure white on pure black with yellow accent — 21:1 contrast for severely vision-impaired users), and Colorblind (deuteranopia-safe palette)
  • Horizontal album rows on Home, For You, Award and Label views now support mouse drag scrolling — click and drag sideways like on iPad or in a browser
  • Qobuz Connect badge in the player bar is now always visible, even when the queue is empty — connect to a remote renderer without having to start playing something first (#318)
  • Restore Infinite Play: the "∞" toggle in the queue panel now correctly persists across restarts and refills the queue with related tracks (Qobuz /radio/artist) when the queue ends, instead of stopping (#319)
  • App icon: bigger inside the canvas (matches Steam/Chrome/Papirus footprint), with a subtle blue rim and inner highlight so the matte-vinyl disc doesn't disappear on dark backgrounds; new 512x512 PNG export added
  • Gentoo: qbz-bin ebuild now correctly inherits xdg-utils so the hicolor icon cache and the desktop database are refreshed on install/uninstall (was the cause of stale icons after upgrade)

"Accolade Watch" — a polish release focused on desktop integration, visual identity and small quality-of-life fixes.

  • New matte-vinyl app icon applied across every size (Tauri, Windows Store, Android, Flatpak, tray) plus a monochrome symbolic variant for system trays
  • Window controls can now auto-detect KDE Plasma / Klassy and mirror the system decoration colors and button shape; new full-height-rounded button style added for Klassy's most common look
  • Opt-in "Match system window chrome": QBZ rounds its own corners to the detected desktop's radius (requires app restart — the window is rebuilt transparent so the corners don't show white)
  • Login screen refresh: larger logo, subtle shadow using the theme's muted color, and QBZ / Qobuz™ Player branding under the mark
  • Editor's Picks tab cleanup: removed redundant "Album of the Week" and "Qobuzissime" ribbons on cards inside their own eponymous sections
  • Playlist context menu in the sidebar now flips above the cursor when it would otherwise fall below the window
  • Sort submenu in the sidebar playlists menu no longer gets clipped by its parent dropdown
  • Genre filter popup uses its CSS max-height for collision detection so it flips above the trigger or clamps to the viewport instead of overflowing the bottom of the window
  • DAC Setup Wizard icon contrast fixed for light accent themes
  • Hardening to audio request signing (internal)

Quick-fix release: fixes tracks ending ~9 seconds early when streamed via CMAF, and improves credential security with encrypted keyring storage and XDG portal secret integration.

  • Fixed CMAF segment off-by-one: last audio segment was skipped, cutting ~9 seconds from every track
  • OAuth tokens now encrypted (AES-256-GCM) before storing in system keyring
  • Key derivation uses XDG Desktop Portal secret when available (DE-agnostic, Flatpak-safe)
  • Logout now properly clears stored credentials from keyring and file
  • Reduced log noise: device enumeration, playlist fetches, and zbus internals moved to debug level

Qobuz has been migrating their audio delivery infrastructure to encrypted segmented streaming. This was silently breaking playback for certain tracks. This release implements the new streaming pipeline end-to-end, making QBZ compatible with Qobuz's current and future audio delivery.

  • New CMAF streaming pipeline: encrypted segments fetched from Akamai CDN, decrypted on the fly, playback starts in under 1 second
  • Smart quality negotiation: requests the track's actual quality instead of always maximum, eliminating unnecessary API fallback cascades
  • ALSA progressive backoff on device busy: faster track skipping without "device busy" errors
  • Offline playback controls now work without internet connection (#173)
  • OAuth tokens stored in system keyring (GNOME Keyring, KDE Wallet) when available (#215)
  • Ghost track skip prevention: stale auto-advance commands discarded after context switch
  • Logout now stops active playback
  • Vite 8.0.5 security update (3 dev server vulnerabilities)
  • 60+ components translated across all 5 locales

About a month and a half ago, Qobuz began making changes to their authentication system. This was the reason we introduced OAuth login early on — and fortunately, doing so ahead of time meant no one was truly locked out of the app. This release simply removes direct credential login, making OAuth the sole authentication method. There is also some bugfixing for issues reported on GitHub.

We are considering requesting official API access again, and looking for ways to coordinate with the community to support this request to Qobuz — so that a more severe change in the future does not leave us out. Thank you all for the continued support for QBZ.

  • OAuth is now the only login method; username/password authentication has been removed
  • Fixed "Go to Album" and "Go to Artist" navigation failing until starting new playback (#252)
  • Fixed MPRIS metadata not populating on session restore (#240)
  • Fixed incorrect artist birth/formation location display in Artist Network (#235)
  • Added Playlists to the favorites quick access menu and titlebar dropdown (#233)
  • Added bulk "make available offline" action to track selection bar (#231)
  • System sleep is now prevented during active playback via XDG portal (#229)
  • Sensitive IDs and UUIDs are now sanitized from logs (#213)
  • F11 fullscreen toggle and ESC exit now work globally (#202)
  • Added streaming buffer progress indicator to the seekbar (#194)
  • Initial macOS support: CoreAudio device probing, deep links, rich notifications, platform-aware settings
  • Dependency updates: coreaudio-rs, notify-rust, axum, lofty, rand, souvlaki, lucide-svelte, vite

Resilience: exponential backoff retry (1s/2s/4s) with quality fallback when Qobuz servers return 504s. User preference modal for retry behavior (ask/always fallback/always skip), persisted in settings. Degraded service indicator with 5-minute auto-clear. Manual network check button. macOS port foundation (gated backends, native title bar, CI workflow). Offline mode improvements (last known profile restore, dismissible banner, network folders). WebKitGTK 2.50+ image flicker fix. Hybrid Intel+NVIDIA compositing fix. QConnect fixes for queue_version tolerance and ALSA volume control. i18n: hardcoded strings replaced in SearchView and PlaylistDetailView. Security: aws-lc-sys 0.39.0, rustls-webpki 0.103.10.

Qobuz Connect: multi-device playback with renderer and controller mode, server-authoritative queue sync, and bidirectional transport controls. Linebed 3D terrain visualizer with 4096-point FFT. Qobuz playlist follow/unfollow with native API sync. Audio settings sync overhaul fixing exclusive mode with QConnect. Volume lock for ALSA Direct hw:. HiFi Wizard real DAC sample rate detection. MuPDF 0.6 restoring booklet viewer. Offline mode button on network error screen. KWin SSD hack removed. PipeWire rate switch verification with retry. Help tooltips on bit-perfect settings. 185 commits.

Fix startup crash on Debian sid and Fedora (missing libjpeg). Fix partial cover art in AppImage. Fix track number display for compilations and box sets. Fix PipeWire bit-perfect stream match rule in Hi-Fi Wizard. Security update for quinn-proto. Test fixes for cross-distro builds.

Scene Discovery: explore artists from the same city or musical scene. Redesigned Home with 3 Discovery Tabs (Home, Editor's Picks, For You) with personalized radio stations, spotlight artist, and genre filtering. Neon visualizers (Laser, Tunnel, Comet) with album art color extraction. In-app PDF booklet viewer. Audio engine upgrade to rodio 0.22 with ALSA gapless playback. Security hardening and stability fixes.

Miniplayer window with compact and micro surfaces. OAuth browser login for new Qobuz auth flow. Window size persistence, HiDPI scaling fix, and artist image context menus.

OAuth browser authentication, window size persistence, HiDPI scaling fix for all backends, and login flow improvements.

Multi-select tracks across all views with bulk queue and playlist actions. Scroll position now scoped per item and expires after one hour.

Discover browse pages for albums and playlists, localized playlist tags, preserved Qobuz artwork on playlist copy, and UI fixes.

Maintenance release: faster Home view, playback auto-resume after settings change, playlist import improvements, and bug fixes.

Major release: genre filtering, playlist suggestions, immersive player, DAC wizard, key bindings, artist blacklist.