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
112 lines
4.8 KiB
Markdown
112 lines
4.8 KiB
Markdown
# 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
|