"Wallpaper" now behaves like a window that sees straight through to the
desktop: it always paints the part of the wallpaper that lies under the
window, wherever the window is moved, with a stronger blur so nothing in
the picture competes with the text. X11, macOS and Windows already told
Qt where the window is. Wayland does not, so on KDE Plasma a tracker
reads the window's geometry from org_kde_plasma_window_management on its
own client connection and thread (wayland-client + the plasma protocol
crate, pure Rust backend). It follows this process's windows only,
drops every other window's object after its initial state, and
republishes only when the geometry list changes; the field picks the
window by size and ignores updates while another background is showing.
Where the protocol is not offered the crop stays centred and one line is
logged.
KWin hands that protocol only to a binary whose desktop entry names it by
an absolute Exec and lists it in X-KDE-Wayland-Interfaces, so the Linux
desktop entries now carry both (the deb/rpm /usr/bin/qbz symlink resolves
to the same binary). The AppImage step restores the bare Exec name that
linuxdeploy resolves inside the AppDir, and the Nix package rewrites Exec
to its store path.
"Wallpaper, blurred" is Blurred art with the wallpaper in the cover's
place, so it now drifts while the transport plays and holds still when it
does not.
cc
The source build failed under Nix at cxx-qt / qt-build-utils with "Could not
find qmltyperegistrar": the Qt host tools live across several outputs and the
sandbox PATH did not carry qtdeclarative's. Rather than chase that, the flake
now repacks the published bare-binary tarball (the same asset AUR-bin / Gentoo
/ Flathub consume) — matching the project's binary-repack packaging doctrine and
dropping the whole Rust/Qt toolchain from the closure.
autoPatchelfHook rewrites the binary against nixpkgs and wrapQtAppsHook wires
the Qt plugin/QML paths; qt6-base/declarative/svg/wayland mirror the qbz-bin
depends. Per-arch tarball hashes for x86_64 and aarch64, computed from the
published v2.1.0 assets. Verified: nix build succeeds and the wrapped binary
launches against nixpkgs Qt 6.10.2. Bump version + hashes post-tag.
cc
The flake shipped with srcHash = lib.fakeHash, so consuming it with
inputs.qbz.url = "github:vicrodh/qbz" failed to evaluate. Set the
published v2.1.0 tag hash (verified with nix-prefetch-url --unpack).
Closes#744.
cc
Parse resilient SACD images, decode DST, scan ISO releases into the local library, and keep explicit opens ephemeral.
Ship decoder notices across distribution formats and align DSD album filtering and version selection.
cx
flake builds -p qbz-qt against nixpkgs qt6 with wrapQtAppsHook; the
AUR PKGBUILD and the Gentoo binary ebuild add qt6-base/qtdeclarative
>= 6.8 (both distros ship 6.9), since their tarball carries the bare
binary.
cc
The workspace pulls jack-sys through rodio -> cpal, which links libjack
at build time. Without libjack2 in buildInputs the sandboxed cargo build
fails to link the JACK audio backend. Add it so the flake builds.
Restores the ALSA layout binds in both snap recipes (bit-perfect hw:
access inside the snap), lets the build cache save on main as well as
slint-mvp, installs the desktop file as com.blitzfc.qbz.desktop so the
AppStream launchable and the MPRIS DesktopEntry resolve in deb/rpm,
clears the stale boot-restore error when a new browser sign-in starts,
and adds the X11 dlopen libraries to the flake's runtime set. The
flake version/rev/srcHash bump remains a tag-time step (documented in
the release checklist, which is rewritten for the 2.0 Slint flow).
cc
Flatpak manifest builds the crates/ workspace with rust-stable+llvm20
(node SDK and the intltool/libdbusmenu/ayatana chain removed). Root
snapcraft.yaml becomes a from-source Slint recipe (core24, rustup,
MIN memory tier) mirroring packaging/snap-slint runtime sections.
AUR/arch/gentoo swap webkit/gtk/appindicator runtime deps for the
measured Slint set and the source builders compile crates/ directly.
flake.nix: cargoRoot crates, no npm hooks, dlopen runtime libs wrapped.
cc
Version bump across Cargo/tauri/npm/snap/flake, metainfo release entry,
and TAG_DETAILS for 1.2.15. flake.nix hashes cleared (filled post-tag
via nix build once v1.2.15 exists).
cc
snapcraft.yaml: version: '1.2.14' AND source-tag: v1.2.14 (both fields —
updating only one leaves the Snap Store building the previous tag).
packaging/snap/snapcraft.yaml is a symlink to it, so both stay in sync
automatically.
flake.nix: qbzVersion -> 1.2.14; srcHash/npmHash cleared, to be refilled
via `nix build` after the v1.2.14 tag exists, in a follow-up commit as in
prior releases.
cc
Version bumped across Cargo.toml, tauri.conf.json, package.json, snapcraft.yaml (version + source-tag), flake.nix, and the lockfiles. metainfo.xml gains a 1.2.13 release entry, the About modal codename becomes "400+ stars", and the README contributors list adds @Vudgekek and @DoubleGate.
cc
Update qbzVersion + srcHash + npmHash for the v1.2.11 tag (commit
cc98b7f7). Hashes computed via 'nix-prefetch-url --unpack' and
'prefetch-npm-deps package-lock.json' against the tagged tree.
cc
Resolved via two `nix build` iterations against the v1.2.7 tag.
Users tracking main get a zero-friction build; users pinning to the
v1.2.7 git tag still need to substitute the hashes themselves since
the hashes were unknown at tag time (same as every prior release).
cc
Missed in the earlier bump pass. Confirmed every other version pin
reads 1.2.5: src-tauri/Cargo.toml, src-tauri/Cargo.lock,
src-tauri/tauri.conf.json, package.json, package-lock.json,
snapcraft.yaml, packaging/flatpak/com.blitzfc.qbz.metainfo.xml
(top <release> entry); the only remaining "1.2.4" string in the tree
is the historic release entry in metainfo.xml, which is correct.
cc
The package's `postInstall` wraps the installed `qbz` binary with
`LD_LIBRARY_PATH` so it can `dlopen(libayatana-appindicator3.so.1)` at
runtime. Inside `nix develop`, users run `target/debug/qbz` directly
without that wrapper, so the tray init panics at startup.
Add a `shellHook` that mirrors `postInstall`'s library path.
Same root cause as the previous LIBCLANG_PATH fix: `inputsFrom` makes
dependencies available at build time but does not set runtime/env vars
the way the installed wrapper does.
Refs #312.
cc
`inputsFrom` does not propagate the package's `env.*` attributes into
the dev shell, so running `npm run tauri dev` inside `nix develop`
failed at `mupdf-sys(build)` with "Unable to find libclang".
Re-export LIBCLANG_PATH on the shell itself.
Closes#312.
cc