From f17a1733f7f03a8099aa16a021ff73a0187883cb Mon Sep 17 00:00:00 2001 From: vicrodh <103399283+vicrodh@users.noreply.github.com> Date: Tue, 28 Apr 2026 20:29:59 -0600 Subject: [PATCH] chore(release): bump version to 1.2.9 + tag notes Quiet Polish: QConnect cleanup (#316) and a long round of Linux tray polish. Sticky-header gap fix (no more padding-top on scroll containers), Edit folder shortcut from the playlist sidebar (#364), shift-range + Ctrl/Cmd+A multi-select across the remaining views, opt-in resume of seek position (#317), and Qobuz subtitle/edition propagated through queue / MPRIS / scrobbling (#360). Bumped: - src-tauri/Cargo.toml + Cargo.lock - src-tauri/tauri.conf.json - package.json + package-lock.json - snapcraft.yaml (version + source-tag) - packaging/flatpak/com.blitzfc.qbz.metainfo.xml (new release entry) packaging/snap/snapcraft.yaml is a symlink to the root snapcraft.yaml so it tracks automatically. cc --- docs/release-1.2.9/TAG_DETAILS.md | 65 +++++++++++++++++++ package-lock.json | 4 +- package.json | 2 +- .../flatpak/com.blitzfc.qbz.metainfo.xml | 14 ++++ snapcraft.yaml | 4 +- src-tauri/Cargo.lock | 2 +- src-tauri/Cargo.toml | 2 +- src-tauri/tauri.conf.json | 2 +- 8 files changed, 87 insertions(+), 8 deletions(-) create mode 100644 docs/release-1.2.9/TAG_DETAILS.md diff --git a/docs/release-1.2.9/TAG_DETAILS.md b/docs/release-1.2.9/TAG_DETAILS.md new file mode 100644 index 000000000..5de26b28f --- /dev/null +++ b/docs/release-1.2.9/TAG_DETAILS.md @@ -0,0 +1,65 @@ +# 1.2.9 — Quiet Polish (QConnect cleanup + tray for everyone) + +Two main threads of work since 1.2.8: splitting the single-file +QConnect service into a proper module so the History duplicates and +missing-tracks regression could finally be untangled, and a long +overdue round of tray polish on Linux. Details on each below. + +A handful of smaller fixes and conveniences round it out: sticky +headers no longer leave a gap at the titlebar, an Edit folder +shortcut finally lives in the playlist sidebar context menu, and +shift-range + Ctrl/Cmd+A multi-select now reaches the remaining +views. + +If you're upgrading from 1.2.4 or earlier, everything from 1.2.5 +through 1.2.8 (Accolade Watch + Mixtapes & Collections) is still in +here. + +--- + +## QConnect (#316) + + - **Service split into a module** — `qconnect_service.rs` is now twelve focused files (transport, session, queue resolution, CoreBridge bridging, event sink, track loading, types, commands, tests…) + - **History duplicates + gaps fixed** — cursor-align skipped when local is the active renderer; `set_queue` remaps history by track id instead of clearing it on every echoed reorder + - **First-track hiccup, prev/next bouncing, shuffle drift** — single pass through the cursor-resolution path + +--- + +## Linux tray + + - **Live tooltip** — track title / "by Artist" / album on hover, plus inline hints (Middle-click to pause, Scroll to adjust volume) that flip with state + - **Middle-click + scroll wired** — middle-click toggles play/pause and vertical scroll adjusts volume in 5 % steps, mirroring the Plasma media plasmoid + - **Icon variant picker** — Auto / Mono light / Mono dark / Color dropdown in Settings → Appearance → System Tray, for desktops where auto-detection picks the wrong glyph (e.g. GNOME's permanently dark top bar) + - **Updates from a dedicated thread** — ksni 0.3's blocking handle panics from a tokio context; the new worker thread sidesteps that entirely + +--- + +## UI polish + + - **Sticky headers pin flush** — the gap that opened at the titlebar was caused by `padding-top` on the scroll container shifting the scrollport's inset edge; padding moved onto the first child instead + - **Edit folder from the sidebar** (#364) — playlist-folder right-click menu opens the folder editor; pencil button mirrored on the Playlist Manager breadcrumb + - **Multi-select** — shift-click range + Ctrl/Cmd+A across the remaining views; `BulkActionBar` floats above the player and docks at list end via IntersectionObserver + - **Stop-after / remove-after** — queue context menu gets a one-shot stop marker and a tail-drop from a pivot + - **Stratego theme** — imperial crimson + bone white with AAA contrast on every text level + +--- + +## Streaming & playback + + - **Track version** (#360) — Qobuz's subtitle/edition flows through queue builders, MPRIS, immersive views, and the Last.fm + ListenBrainz scrobble payload + - **Session resume position** (#317) — opt-in restore of the seek position on next launch + - **Gapless one-shot guard** — prefetch-attempted bit now gates the gapless transition so a stray late-cancel can't trip the next-track hand-off + - **Audio enumeration** — virtual ALSA PCMs are skipped during the CPAL probe; libasound's verbose enumeration errors route to `log::debug` + +--- + +## Internal + + - **Legacy V2 wrappers removed** — library, network, offline_cache, reco, cast/dlna and api_server playback no longer carry placeholder commands that just delegated to V2 + - **Mixtape shuffle internals** — `shuffle` module with normalize + token_set_ratio, `dedup_by_similarity`, `hybrid_sample` with per-album cap; new `v2_collection_unique_track_count` / `v2_collection_shuffle_tracks` commands + - **x86 baseline relaxed** — release builds drop the x86-64-v3 baseline so pre-Haswell CPUs no longer SIGILL on launch + - **Dependency bumps** — typescript 6.0.3, ashpd 0.13.10, notify-rust 4.16.0, rustls-webpki 0.103.13, plus the usual minor/patch swarm + +--- + +Full changelog: https://github.com/vicrodh/qbz/compare/v1.2.8...v1.2.9 diff --git a/package-lock.json b/package-lock.json index 7cc5b6948..e3c8a6436 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "qbz-nix", - "version": "1.2.8", + "version": "1.2.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "qbz-nix", - "version": "1.2.8", + "version": "1.2.9", "license": "MIT", "dependencies": { "@icons-pack/svelte-simple-icons": "^7.2.0", diff --git a/package.json b/package.json index 29e88f79b..c3f32e94f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "qbz-nix", - "version": "1.2.8", + "version": "1.2.9", "description": "Native high-fidelity client for Qobuz™ subscribers on Linux with Hi-Fi audio support (uses the Qobuz API; not certified by Qobuz)", "type": "module", "scripts": { diff --git a/packaging/flatpak/com.blitzfc.qbz.metainfo.xml b/packaging/flatpak/com.blitzfc.qbz.metainfo.xml index 6f5295d8a..503e1b544 100644 --- a/packaging/flatpak/com.blitzfc.qbz.metainfo.xml +++ b/packaging/flatpak/com.blitzfc.qbz.metainfo.xml @@ -69,6 +69,20 @@ + + +

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.

diff --git a/snapcraft.yaml b/snapcraft.yaml index 27cd9bbed..7ac06542a 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -3,7 +3,7 @@ name: qbz-player title: "QBZ — Native Qobuz Client for Linux" -version: '1.2.8' +version: '1.2.9' summary: Native Qobuz player for Linux with bit-perfect audio and DAC control description: | QBZ is a native Linux desktop client for Qobuz™, designed for high-fidelity playback. @@ -97,7 +97,7 @@ parts: qbz: plugin: rust source: https://github.com/vicrodh/qbz.git - source-tag: v1.2.8 + source-tag: v1.2.9 build-packages: - libwebkit2gtk-4.1-dev - libgtk-3-dev diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 8aa3b656b..a960f9e28 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -4911,7 +4911,7 @@ dependencies = [ [[package]] name = "qbz-nix" -version = "1.2.8" +version = "1.2.9" dependencies = [ "aes-gcm", "anyhow", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 19faf561c..4a90623c8 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "qbz-nix" -version = "1.2.8" +version = "1.2.9" description = "Native high-fidelity client for Qobuz™ subscribers on Linux with Hi-Fi audio support (uses the Qobuz API; not certified by Qobuz)" authors = ["blitzkriegfc"] edition = "2021" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index b8bf9e830..1eb9d6d58 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "QBZ", - "version": "1.2.8", + "version": "1.2.9", "identifier": "com.blitzfc.qbz", "build": { "beforeDevCommand": "npm run dev",