Files
qbz/docs/release-1.2.0/CHANGELOG_FULL.md
T
vicrodh 6245ac9633 docs: add 1.2.0 release documents
TAG_DETAILS.md, CHANGELOG_HIGHLIGHTS.md, CHANGELOG_FULL.md for the
Qobuz Connect release. 185 commits covering QConnect protocol, Linebed
visualizer, playlist follow/unfollow, audio settings sync overhaul, and
dozens of fixes.

cc
2026-03-19 15:21:22 -06:00

4.8 KiB

QBZ 1.2.0 Full Changelog

185 commits between v1.1.20 and v1.2.0.

New Features

Qobuz Connect

  • Full Qobuz Connect protocol implementation (renderer + controller)
  • 4 new crates: qconnect-protocol, qconnect-core, qconnect-app, qconnect-transport-ws
  • Native WebSocket transport with qcloud framing and protobuf encoding
  • Queue domain model, reducer, and pending lifecycle
  • Renderer domain state with server command contracts
  • App adapter with pending timeout, resync, and concurrency policy
  • Controller command API and session snapshots
  • Admission middleware with blocked events
  • QConnect toggle button beside cast in player bar
  • QConnect panel with runtime diagnostics
  • Renderer command routing through CoreBridge
  • Queue materialization and remote playback hydration
  • Active renderer state tracking for skip and seekbar
  • Volume/mute routing to peer renderer
  • Shuffle, repeat, queue play, and history play guards
  • Autoplay mode sync and load_tracks remote commands
  • QConnect badge as full-height badge in song card
  • Developer toggle for QConnect dev panel
  • Custom device name with hostname detection

Linebed Visualizer

  • New 3D terrain visualizer in Immersive mode
  • 4096-point FFT with 512 bands and linear scaling
  • 200 lines at 60fps with real 3D perspective projection
  • Power-law frequency redistribution and edge tapering
  • Isometric perspective matching musicvid.org camera angle
  • FPS control in settings (default 60fps)
  • Canvas viewport adjusted to not overflow player area

Playlist Follow/Unfollow

  • Qobuz API playlist/subscribe and playlist/unsubscribe endpoints
  • v2_qobuz_subscribe_playlist and v2_qobuz_unsubscribe_playlist commands
  • Bookmark toggle button in PlaylistDetailView
  • Favorites/Following sub-tabs in Favorites > Playlists

Other Features

  • Documentation link in sidebar gear menu
  • Help tooltips on bit-perfect audio settings (Exclusive Mode, DAC Passthrough, Force Bit-Perfect)
  • No-telemetry note on MusicBrainz integration description
  • Portuguese (pt-BR) translation
  • Artwork proxy through backend cache
  • Streaming playback with seekbar position tracking
  • True gapless playback for ALSA Direct mode

Audio Fixes

  • Audio settings sync to CoreBridge player on change and session activation
  • alsa_hardware_volume was hardcoded false in conversion function
  • v2_reset_audio_settings now syncs to CoreBridge player
  • Volume locked at 100% when ALSA Direct hw: is active
  • PipeWire rate switch delay increased from 300ms to 500ms
  • PipeWire rate verification after stream creation with automatic retry
  • HiFi Wizard reads real DAC sample rates from /proc/asound
  • Souvlaki MediaControlError formatting uses {:?} for cross-platform compatibility
  • ALSA device lock prevented on streaming failure
  • PipeWire suspension before ALSA Direct exclusive access
  • Clock.force-rate re-applied after stream creation on resume
  • HTTP auto-decompression disabled for audio downloads
  • 120s total timeout removed for large Hi-Res+ tracks
  • Quality fallback when CDN fails at current quality level
  • Retry with fresh URL on CDN premature EOF

Window / UI Fixes

  • KWin SSD window rule hack removed entirely (caused double titlebar + CPU spike)
  • Stale KWin rules from v1.1.14-v1.1.20 cleaned up on startup
  • Screen resolution clamping fixed (xdpyinfo returns combined multi-monitor)
  • Offline mode button added to network error screen
  • Artist album counts removed from Favorites and Search (misleading API data)
  • Playback error messages show actual details instead of [object Object]
  • Discover menu items navigate to correct home tab
  • Session restore hardened to prevent ghost CSS errors
  • Tray icon visibility improved across Linux DEs
  • Bit-perfect stream match rules corrected

Distribution / Build

  • MuPDF upgraded from 0.5 to 0.6 (fixes Arch Linux build)
  • Booklet feature gate removed — MuPDF always compiled
  • Snap MPRIS slot removed to unblock Snap Store review
  • Issue templates migrated to YAML forms
  • Dependency updates: devalue 5.6.4, SvelteKit 2.53.3
  • Credential tests skip correctly in Nix sandbox
  • Dependabot config and PR redirect workflow added
  • Local library disc/CD suffix no longer misidentified as disc folders

Qobuz Connect Protocol Details

  • Protobuf queue command and server event contracts
  • Android controller WebSocket message support
  • Outbound renderer reports (RNDR_SRVR)
  • Inbound server commands (SRVR_RNDR) decoding
  • Queue drift reporting and reorder/remove event resyncs
  • Authoritative queue mutations and shuffle order
  • Remote repeat mode with pending/ack lifecycle
  • Rapid transport control unblocking
  • Session cursor alignment and renderer handoff
  • Queue replacement through shared helper
  • Stale renderer drift suppression during queue loads

i18n

  • All new features localized in 5 languages (en, es, de, fr, pt)
  • Playlist follow/unfollow, sub-tabs, volume lock, help tooltips, documentation link, MusicBrainz privacy note