From 28bb5737ba2a1251dd981cd755f42bba56ff095d Mon Sep 17 00:00:00 2001 From: vicrodh <103399283+vicrodh@users.noreply.github.com> Date: Mon, 25 May 2026 07:50:34 -0600 Subject: [PATCH] chore(release): bump to 1.2.14 "Just cleaning" - version: Cargo.toml, tauri.conf.json, package.json (+ Cargo.lock, package-lock.json) - metainfo.xml: add 1.2.14 release entry - About modal codename -> "Just cleaning" - docs/release-1.2.14: TAG_DETAILS.md + CHANGELOG_FULL.md Snap and Nix flake are intentionally left at 1.2.13: they pin a source tag, and this is a no-tag, build-only cycle (no distribution). cc --- docs/release-1.2.14/CHANGELOG_FULL.md | 65 +++++++++++++++++++ docs/release-1.2.14/TAG_DETAILS.md | 39 +++++++++++ package-lock.json | 4 +- package.json | 2 +- .../flatpak/com.blitzfc.qbz.metainfo.xml | 12 ++++ src-tauri/Cargo.lock | 2 +- src-tauri/Cargo.toml | 2 +- src-tauri/tauri.conf.json | 2 +- src/lib/components/AboutModal.svelte | 2 +- 9 files changed, 123 insertions(+), 7 deletions(-) create mode 100644 docs/release-1.2.14/CHANGELOG_FULL.md create mode 100644 docs/release-1.2.14/TAG_DETAILS.md diff --git a/docs/release-1.2.14/CHANGELOG_FULL.md b/docs/release-1.2.14/CHANGELOG_FULL.md new file mode 100644 index 000000000..c19c662d0 --- /dev/null +++ b/docs/release-1.2.14/CHANGELOG_FULL.md @@ -0,0 +1,65 @@ +# QBZ 1.2.14 — "Just cleaning" — Full changelog + +Maintenance release. Out-of-the-box audio that just works, a smarter backend +picker, a coordinated audio-dependency update, a round of bug fixes, and +continued app-core groundwork. Explicit PipeWire (DAC passthrough) and ALSA +Direct (exclusive) configurations are unchanged and remain bit-perfect. + +Compare: https://github.com/vicrodh/qbz/compare/v1.2.13...v1.2.14 + +--- + +## Audio + +- **System output, the new out-of-the-box default (#470).** Added a cross-platform + "System" backend that plays through the OS default output at its negotiated + rate (rodio resamples), shared with other apps and without requiring `pactl`. + It is the default for fresh installs and what "Reset Audio & Playback + Settings" lands on. Previously the Linux default assumed PipeWire, which + required `pactl` and froze playback (seekbar advancing, no audio) on hosts + without it. +- **"Auto" is now a resolve-and-set action (#470).** Choosing Auto picks the best + available backend — PipeWire if available, otherwise System — stores that + concrete choice and updates the dropdown and device picker. The audio backend + is never left in the ambiguous unset state that previously fell through to a + fragile legacy path and could leave a stuck audio handle until restart. +- **PipeWire detected without pactl (#466).** The PipeWire backend is detected via + its runtime socket, so it is no longer hidden on systems that do not ship + `pactl` (pulseaudio-utils). +- **Output stream rebuilt on sample-rate change (#449).** All backends rebuild the + output stream when the track sample rate changes. +- **Adaptive prefetch throttle.** Prefetch bandwidth is throttled based on observed + throughput and underrun signals. + +## Fixes + +- **Album hover overlay shows the full release date (#469).** Restored the + pre-AlbumCardLite "MMM D, YYYY" format in the discover/home card hover overlay + (it had been reduced to the year only). Falls back to the year when only a + year is available. +- **Queue drag-and-drop reordering on macOS (#453).** +- **Favorites edition/version on click-to-play (#452).** The remix/edition version + is preserved on the initial click-to-play from the favorites tracks view. +- **Favorite button on discovery browse / see-all pages (#468).** +- **Gapless and offline robustness (#467).** The gapless target is no longer + skipped when offline, the auto-skip cascade is bounded, transient fetch + failures retry with backoff instead of skipping, and offline detection gains + hysteresis plus a streaming-liveness override. + +## Security / privacy + +- **Hardened redaction of sensitive data in navigation logs.** Query-parameter + values and URL fragments are redacted before reaching log output, keeping + navigation traces useful without carrying values into log files or uploaded + reports. + +## Under the hood + +- **Audio dependency update.** cpal 0.17.1 → 0.17.3 and alsa 0.10 → 0.11 + (alsa-sys 0.4), coordinated to satisfy the shared `links = "alsa"` constraint; + smoother ALSA device enumeration and stream teardown. +- **App-core groundwork.** Shared image cache and credential store extracted into + crates; minimal session activation, shell facade, playback context, and + session store foundations added to `qbz-app`. No behavior change. +- **Dependency bumps.** @tauri-apps/cli, @sveltejs/kit, vite 8, vitest, @kawarp/core, + open, tauri-build, tokio, ashpd, tower-http (dependabot round). diff --git a/docs/release-1.2.14/TAG_DETAILS.md b/docs/release-1.2.14/TAG_DETAILS.md new file mode 100644 index 000000000..7d8f0a20b --- /dev/null +++ b/docs/release-1.2.14/TAG_DETAILS.md @@ -0,0 +1,39 @@ +# 1.2.14 — Just cleaning + +No new features this time. 1.2.14 is a maintenance release: the headline is that audio now **just works out of the box** for everyone, including people who never touched an audio setting. + +The new **System** output plays through your system's default device and mixes with other apps like any normal player — no DAC, no bit-perfect, no `pactl` required. Audiophiles keep their explicit PipeWire and ALSA Direct setups exactly as they were. + +The rest is a steady round of bug fixes, a coordinated audio-dependency update, and groundwork under the hood. + +--- + +## Audio + + - **System output (new default)** — shared system default that works out of the box and mixes with other apps. No bit-perfect, no `pactl` — ideal if you just want it to play. + - **Auto picks the best backend** — selecting Auto resolves to the best available backend (PipeWire when present, otherwise System) and shows what it chose, instead of leaving a silent, frozen state. + - **PipeWire without pactl** — the backend is detected via its runtime socket, so it is no longer hidden on minimal Debian/Ubuntu installs (#466). + - **Stream rebuild on rate change** — the output stream is rebuilt on a sample-rate change for all backends (#449). + +--- + +## Fixes + + - **Album release date** — the hover overlay shows the full date again ("MMM D, YYYY"), not just the year (#469). + - **Queue drag-and-drop on macOS** — reordering by drag is restored (#453). + - **Favorites click-to-play** — the remix/edition version is carried on the first click from the favorites view (#452). + - **Discovery favorite button** — wired up on the browse / see-all pages (#468). + - **Gapless & offline** — the gapless target is never skipped offline, the skip cascade is bounded, transient fetches retry with backoff (#467). + +--- + +## Under the hood + + - **Audio dependencies** — cpal 0.17.3 and alsa 0.11, for smoother ALSA device enumeration and stream teardown. + - **Log hygiene** — hardened redaction of sensitive data in navigation logs. + - **App-core groundwork** — playback context, session store, shell facade, and a shared image cache + credential store moved into framework-agnostic crates, with no change in behavior. + - **Dependency bumps** — the usual dependabot round. + +--- + +Full changelog: https://github.com/vicrodh/qbz/compare/v1.2.13...v1.2.14 diff --git a/package-lock.json b/package-lock.json index 8362b9bb1..946fbd683 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "qbz-nix", - "version": "1.2.13", + "version": "1.2.14", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "qbz-nix", - "version": "1.2.13", + "version": "1.2.14", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 6b3c6cef7..ad378116b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "qbz-nix", - "version": "1.2.13", + "version": "1.2.14", "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 95d50aee0..0321bf869 100644 --- a/packaging/flatpak/com.blitzfc.qbz.metainfo.xml +++ b/packaging/flatpak/com.blitzfc.qbz.metainfo.xml @@ -69,6 +69,18 @@ + + +

Just cleaning: a maintenance release — audio that works out of the box, a smarter backend picker, and a round of fixes and dependency updates.

+
    +
  • New "System" audio output: the shared system default that works out of the box and mixes with other apps like any normal player; "Auto" now picks the best available backend for your machine
  • +
  • PipeWire is detected via its runtime socket, so its backend is no longer hidden on systems without pactl
  • +
  • The album hover overlay shows the full release date again, not just the year
  • +
  • Fixes: queue drag-and-drop on macOS, favorites edition/version on click-to-play, the favorite button on browse pages, and gapless/offline robustness
  • +
  • Hardened redaction of sensitive data in logs, cpal/alsa and dependency updates, and continued app-core groundwork
  • +
+
+

400+ stars: a polish and stability release led by macOS fixes, with the usual round of bug fixes and groundwork under the hood.

diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 02bd035a8..4541c967b 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -5165,7 +5165,7 @@ dependencies = [ [[package]] name = "qbz-nix" -version = "1.2.13" +version = "1.2.14" dependencies = [ "aes-gcm", "anyhow", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index a547bfe73..bb99eca19 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "qbz-nix" -version = "1.2.13" +version = "1.2.14" 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 954a6380c..d5a64f19e 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.13", + "version": "1.2.14", "identifier": "com.blitzfc.qbz", "build": { "beforeDevCommand": "npm run dev", diff --git a/src/lib/components/AboutModal.svelte b/src/lib/components/AboutModal.svelte index 31fda50bd..3db39505c 100644 --- a/src/lib/components/AboutModal.svelte +++ b/src/lib/components/AboutModal.svelte @@ -99,7 +99,7 @@ {$t('about.buildInfo.version')} {appVersion} {$t('about.buildInfo.codename')} - 400+ stars + Just cleaning {$t('about.buildInfo.license')} MIT {$t('about.buildInfo.platform')}