Commit Graph
118 Commits
Author SHA1 Message Date
vicrodh f98d92d8b6 build(flatpak): --device=all for direct /dev/snd access
Mirror the Flathub manifest: replace --device=dri with --device=all so the
sandbox can reach /dev/snd directly, enabling bit-perfect / exclusive ALSA
output like native installs. Flatpak has no granular --device=snd; /dev/snd
is only exposed via --device=all (same as Strawberry, mpv, and other
bit-perfect audio apps), which already includes --device=dri (GPU) — so the
separate dri entry is dropped. Reduces PipeWire/audio friction in the
Flatpak build.

cc
2026-05-31 17:42:10 -06:00
vicrodh 28bb5737ba 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
2026-05-25 07:50:34 -06:00
vicrodh c747c72e9d chore(release): bump version to 1.2.13 "400+ stars"
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
2026-05-16 14:40:09 -06:00
vicrodh 0c9e4ee5fc chore(release): bump version to 1.2.12
Hotfix release. Reverts titlebar-mode-selector and PR #406 (broken
window chrome on Linux); preserves PR #407 (sticky home header) and
adds PR #408 (macOS native icon and tray variants by @Vudgekek).

cc
2026-05-09 18:11:24 -06:00
vicrodh fd7a6e2f89 docs(release): add 1.2.11 TAG_DETAILS and metainfo entry
cc
2026-05-09 14:33:11 -06:00
vicrodh e2e4fb8cab feat(discord-rpc): lazy Flatpak socket bridge keeps the integration opt-in
Discord-Flatpak writes its IPC socket to
\$XDG_RUNTIME_DIR/app/com.discordapp.Discord/discord-ipc-N rather than
the \$XDG_RUNTIME_DIR/discord-ipc-N path the discord-rich-presence crate
searches by default. The naive way to bridge that gap — a startup
wrapper that unconditionally symlinks every iteration before the binary
launches — works, but it pulls the integration off-script: every other
optional integration in QBZ (Last.fm, ListenBrainz, MusicBrainz, Plex)
is opt-in, with zero telemetry and zero filesystem reach until the user
flips the toggle. A startup wrapper would silently turn Discord RPC
into opt-out at the sandbox layer; the symlinks would exist for users
who never touched the integrations panel.

Move the bridge into the lazy connect path instead. The first time the
user actually connects — i.e. the first track plays after they enabled
the toggle — prepare_flatpak_discord_socket_links runs:

* No-op outside Flatpak (no FLATPAK_ID env var)
* No-op when \$XDG_RUNTIME_DIR/discord-ipc-N already exists (native
  Discord, or a previous lazy run in this Flatpak instance)
* No-op when the Discord-Flatpak source path doesn't exist (Discord
  not running)
* Otherwise, symlinks 0..9 from \$XDG_RUNTIME_DIR/discord-ipc-N to
  \$XDG_RUNTIME_DIR/app/com.discordapp.Discord/discord-ipc-N

Symlinks die with the Flatpak instance — \$XDG_RUNTIME_DIR is per-
instance, so there's no cross-session pollution. Users who never enable
Discord RPC keep the same sandbox surface as before.

Manifest: keep the static xdg-run/discord-ipc-0 permission for native
Discord, add xdg-run/app/com.discordapp.Discord:create so the lazy
symlink path is allowed when the user opts in. The two coexist; the
crate's default search path covers Discord-native, the symlinks cover
Discord-Flatpak.

cc
2026-05-09 12:38:25 -06:00
vicrodh 3a0c2ab6ce build(flatpak): expose discord-ipc-0 socket for RPC
Adds --filesystem=xdg-run/discord-ipc-0 to the self-hosted Flatpak manifest
so Discord Rich Presence can reach the IPC socket from inside the sandbox.
The Flathub manifest is updated separately at release time.

Refs #336.

cc
2026-05-07 01:47:54 -06:00
vicrodh a912ced3d0 build: bump Node 20 to Node 24 across CI workflows and Flatpak manifest
Cherry-picked from PR #377 (thanks @Mar0xy) — Node-only portion, no
Discord IPC additions:

- 4 workflows (release-{linux,linux-aarch64,macos,flatpak}.yml) now
  install Node 24
- packaging/flatpak/com.blitzfc.qbz.yml: SDK extension node20 → node24,
  build append-path and npm_config_nodedir aligned

Forcing function: @icons-pack/svelte-simple-icons@7.x already in use
declares engines.node >=24, so Node 20 produces an EBADENGINE warning
in CI. Node 20 also reached EOL on 2026-04-30. Node 24 has been LTS
since October 2025 (~7 months of maturity).

Discord IPC permissions and qbz-wrapper script from #377 were
intentionally NOT cherry-picked — there's no Discord RPC feature in
QBZ today (#336 is still planned but not implemented), so adding the
sandbox permission and the launch wrapper now would expand the
attack surface for nothing. They'll land together with the actual
feature when it ships.

cc
2026-05-05 12:10:07 -06:00
vicrodh e0fd0584fa chore(release): bump version to 1.2.10 + tag notes
Hotfix on top of 1.2.9 to address the gapless-play regression
introduced by dee987c1a's tightened isGaplessTransition gate combined
with a long-standing race in the player's transition-swap atomics.

Bumped:
- src-tauri/Cargo.toml + Cargo.lock
- src-tauri/tauri.conf.json
- package.json + package-lock.json
- snapcraft.yaml (version + source-tag) — packaging/snap/snapcraft.yaml
  follows automatically via symlink
- packaging/flatpak/com.blitzfc.qbz.metainfo.xml (new release entry)

cc
2026-04-29 00:19:32 -06:00
vicrodh f17a1733f7 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
2026-04-28 20:29:59 -06:00
vicrodh 0b481e5332 chore(release): bump version to 1.2.8 "My QBZ"
Mixtapes & Collections release. Bumps all version references
(Cargo.toml, tauri.conf.json, package.json, snapcraft.yaml, both
Cargo.lock, package-lock.json), adds the 1.2.8 entry to the Flatpak
metainfo, and sets the About modal codename to "My QBZ".

cc
2026-04-21 19:25:24 -06:00
vicrodh 2a870e619a chore(release): bump version to 1.2.7 + release notes
Bumped:
- src-tauri/Cargo.toml + Cargo.lock
- src-tauri/tauri.conf.json
- package.json + package-lock.json
- snapcraft.yaml
- flake.nix (qbzVersion, hashes cleared for nix users to regenerate)

Added:
- packaging/flatpak/com.blitzfc.qbz.metainfo.xml (1.2.7 entry)
- docs/release-1.2.7/TAG_DETAILS.md (release notes — 1.2.7 preamble
  on top of the full 1.2.6 + 1.2.5 content)

cc
2026-04-16 12:03:18 -06:00
vicrodh 570532ce90 fix(branding): refresh tray icons + snap icon to match new vinyl Q
Tray icons (tray.png, tray-light.png, tray-dark.png) and the Snap
launcher icon were left at the v1.2.4 hand-drawn outline Q during the
v1.2.5 branding refresh. Regenerate them from the canonical
icon-symbolic.svg / 256x256.png so the system tray, KSNI panel and
Snap launcher show the matte-vinyl Q.

Also drop the drop-shadow filter on the login screen logo: with the
new icon's edge rim and inner highlight, the extra ambient shadow is
redundant and visually muddies the artwork.

cc
2026-04-15 21:49:25 -06:00
vicrodh f6377d5df9 chore(release): bump version to 1.2.6 + release notes
Bumped:
- src-tauri/Cargo.toml + Cargo.lock
- src-tauri/tauri.conf.json
- package.json + package-lock.json
- snapcraft.yaml
- flake.nix (qbzVersion, hashes cleared for nix users to regenerate)

Added:
- packaging/flatpak/com.blitzfc.qbz.metainfo.xml (1.2.6 entry)
- docs/release-1.2.6/TAG_DETAILS.md (release notes)

cc
2026-04-15 21:36:11 -06:00
vicrodh 931512fed3 fix(gentoo): add inherit xdg-utils to qbz-bin ebuild template
pkg_postinst and pkg_postrm in the binary ebuild call
xdg_icon_cache_update and xdg_desktop_database_update, which
come from the xdg-utils eclass. Without `inherit xdg-utils`
those helpers are undefined and the hicolor icon cache never
refreshes on upgrade.

The source ebuild template (qbz.ebuild.template) already
inherits xdg, so this only affects users installing via
qbz-bin (the prebuilt binary path). The qbz-overlay has a
direct patch for v1.2.5; this ensures v1.2.6+ release-gentoo
runs emit correct ebuilds.

cc
2026-04-15 18:59:09 -06:00
vicrodh be63d6b3d3 chore(flatpak): point metainfo screenshots at the 1.2.5 commit
Bump the SHA in every <screenshot> URL to 5f759514d3
(the screenshot refresh commit) so Flathub picks up the new captures.

Add three new <screenshot> entries on top of the existing three —
immersive line-bed, enriched artist page, Hi-Fi DAC setup wizard — and
re-promote the Audio settings capture (default-settings.png) that was
sitting unused in the screenshots folder. New ordering for the listing:

  1. home-discover (default — first impression)
  2. immersive-cover-flow
  3. immersive-line-bed
  4. enriched-artist-page
  5. local-library
  6. hifi-wizard
  7. default-settings

cc
2026-04-15 13:42:28 -06:00
vicrodh 5f759514d3 chore(flatpak): refresh screenshots for 1.2.5
Replace the four existing Flathub screenshots with captures from the
1.2.5 build (new logo, new sidebar, refreshed login chrome) and add
three new ones that showcase features worth highlighting on the
Flathub listing:

  * enriched-artist-page.png — artist view with editorial data
  * hifi-wizard.png — DAC setup wizard
  * immersive-line-bed.png — immersive line-bed playback mode

Metainfo manifest is updated in the next commit because Flathub freezes
screenshot URLs by commit SHA, so we need this commit's SHA to land
first.

cc
2026-04-15 13:42:01 -06:00
vicrodh 824b577dc2 fix(genre-filter): popup uses CSS max-height for smart positioning
The collision check in positionPopup was reading the popup's measured
rect right after mount, but the popup grows after that runs (the
genre tree fills in asynchronously). The first measurement reported a
height much smaller than the final ~500px / ~700px max-heights from
CSS, so the "would I overflow the bottom?" branch evaluated false even
when the final popup didn't fit. Result: bottom of the popup got clipped
by the window edge (visible in the Discover -> Filter by genre flow on
short windows).

Use the CSS max-heights (530/630 already used for width) as the
collision target instead. If the down-placement still overflows, try
flipping above the trigger; if neither fits (very small window), clamp
to the bottom padding and let the popup's own internal scroll handle
the overflow.

cc
2026-04-15 13:40:58 -06:00
vicrodh 6049240640 chore(release): bump version to 1.2.5 "Accolade Watch"
* src-tauri/Cargo.toml and Cargo.lock: 1.2.4 -> 1.2.5
  * src-tauri/tauri.conf.json: 1.2.4 -> 1.2.5
  * package.json (+ package-lock.json regenerated): 1.2.4 -> 1.2.5
  * snapcraft.yaml: 1.2.4 -> 1.2.5
  * packaging/flatpak/com.blitzfc.qbz.metainfo.xml: new <release> entry
    dated 2026-04-15 covering the visual refresh (new logo + login
    branding), Plasma/Klassy auto-detect for window controls,
    opt-in match-system-chrome rounded corners, Editor's Picks
    ribbon cleanup, the two sidebar menu positioning fixes shipped
    alongside this bump, and the DAC wizard contrast fix.

Tag not applied per request — release notes are staged, ready for
the screenshots pass and manual tag afterward.

cc
2026-04-15 13:16:36 -06:00
vicrodh 4bb79fdd70 ci(updater): pass --no-default-features in sandboxed builds
Snap and Flathub builds now invoke
`npm run tauri build -- --no-bundle -- --no-default-features` so
cargo compiles without the `updater` feature, excluding
tauri-plugin-updater and tauri-plugin-process from the binary and
satisfying store policies that prohibit competing auto-updaters.

cc
2026-04-13 18:36:30 -06:00
vicrodh d1278e12ad chore: bump version to 1.2.4 - Hardening playback
cc
2026-04-07 09:48:04 -06:00
vicrodh 38ffd8d82f chore: bump version to 1.2.3 - Hardening playback
cc
2026-04-06 17:28:06 -06:00
vicrodh 7ff5e9593e fix(gentoo): align source ebuild template with working overlay
Template had a different src_compile (npm run build + cargo build)
than the overlay's working ebuild (npx tauri build --no-bundle).
Now they match exactly, preventing the release workflow from
breaking the overlay.

cc
2026-04-06 17:24:19 -06:00
vicrodh c37f3d7595 feat(security): enable system keyring for credential storage
Enable async-secret-service + crypto-rust features on the keyring
crate, activating GNOME Keyring and KDE Wallet support. The keyring
integration code was already written but the crate was compiled
without any platform backend, so it silently failed every time.

OAuth tokens will now be stored in the system keyring when available,
with encrypted file as automatic fallback.

Added org.freedesktop.secrets to Flatpak finish-args for sandbox
keyring access.

Fixes #215

cc
2026-04-06 16:20:26 -06:00
vicrodh 4187c6a096 fix(gentoo): revert ebuild template to network-sandbox style
The cargo eclass requires pre-generated offline crate sources which
the CI workflow never set up. Revert to the working approach: inherit
xdg only, RESTRICT network-sandbox, direct npm ci + cargo build.

cc
2026-04-05 11:01:13 -06:00
vicrodh bbb91de490 fix(gentoo): replace virtual/rust with dev-lang/rust in ebuild template
virtual/rust has no ebuilds in current Gentoo repos (deprecated).

cc
2026-04-05 10:54:32 -06:00
vicrodh f39cf7c95f fix(gentoo): correct pipewire USE flag and clang package path in ebuild template
pipewire[alsa-plugin] -> pipewire[pipewire-alsa] (correct USE flag name)
sys-devel/clang -> llvm-core/clang (package moved in Gentoo repos)

cc
2026-04-05 10:33:09 -06:00
vicrodh ee019851ef chore: bump version to 1.2.2
cc
2026-04-04 11:15:15 -06:00
victorrhgap 88c352f64c fix(gentoo): use libayatana-appindicator instead of libappindicator
libappindicator:3 no longer exists in Gentoo repos. The ayatana
fork is the maintained replacement. Fixes recurring emerge failure.

cc
2026-03-26 00:00:00 -06:00
victorrhgap 7c96720dca chore: bump version to 1.2.1
Update all version endpoints, regenerate lockfiles,
add metainfo release entry and release docs.

cc
2026-03-25 19:47:08 -06:00
vicrodh 346db3785e ci: add release-gentoo workflow for overlay auto-update
Triggered by release-linux completion (same as AUR).
Updates ebuilds in vicrodh/qbz-overlay with new version.
Requires OVERLAY_PAT secret for cross-repo push.

cc
2026-03-22 22:55:49 -06:00
vicrodh af23efb3c1 chore: bump version to 1.2.0
Updated:
- src-tauri/Cargo.toml
- src-tauri/tauri.conf.json
- package.json + package-lock.json
- snapcraft.yaml (root + packaging/)
- flake.nix
- Cargo.lock
- metainfo.xml (new release entry)
- README: Snap MPRIS limitation note with forum link

cc
2026-03-19 17:12:31 -06:00
vicrodh a4a6722110 chore: bump version to 1.1.20 2026-03-11 12:53:13 -06:00
vicrodh 8377956cb7 catch GTK init panic and show recovery instructions 2026-03-10 08:51:15 -06:00
vicrodh 863bfc6d82 fix: shorten Flathub summary to <35 chars, update 1.1.19 release notes 2026-03-10 03:28:14 -06:00
vicrodh 05f1a5ec13 chore: bump version to 1.1.19
- Cargo.toml, tauri.conf.json, package.json, snapcraft.yaml
- Regenerate Cargo.lock and package-lock.json
- Add metainfo release entry for 1.1.19
2026-03-09 00:35:42 -06:00
vicrodh 46a572a0e6 chore: clean up AUR packaging
- Remove aur-source and aur-git PKGBUILDs (non-functional, unmaintained)
- Only qbz-bin (prebuilt binary) is maintained on AUR
- Update maintainer email in aur/PKGBUILD
2026-03-09 00:32:19 -06:00
vicrodh 4a4a9a4213 fix: defensive graphics fixes for Flatpak Wayland blur stutter (#127)
- Detect Flatpak sandbox at startup and log it
- In Flatpak on Wayland, unset DISPLAY to prevent WebKitGTK from
  falling back to XWayland internally (causes CPU-GPU texture
  round-trips that degrade CSS blur performance)
- Per-GPU Wayland paths: only disable compositing and DMA-BUF for
  NVIDIA on Wayland. AMD/Intel get full GPU acceleration on native
  Wayland (compositing enabled, DMA-BUF enabled)
- Change GitHub Releases Flatpak manifest from --socket=x11 to
  --socket=fallback-x11 to match Flathub and prevent XWayland
  on Wayland sessions
2026-03-08 09:32:56 -06:00
vicrodh 94f26ce665 fix(aur): force ld.bfd linker to fix ring crate linking
Arch's rust package defaults to rust-lld which causes ring crate's
native C/ASM symbols to be missing at link time. Force traditional
ld.bfd via RUSTFLAGS.
2026-03-04 15:17:30 -06:00
vicrodh c08d13b2c5 fix(aur): remove nasm and clang from makedepends
nasm is not needed (ring uses .S files on Linux, not .asm).
clang is not needed (gcc provides cc).
2026-03-04 14:38:23 -06:00
vicrodh d1244a883c fix(aur): add perl and nasm to makedepends for ring crate 2026-03-04 14:32:28 -06:00
vicrodh 347928876c fix(aur): use system sqlite instead of bundled
The bundled feature compiles sqlite3.c from source but fails to
link on Arch. Use system sqlite package instead, which is the
proper distro packaging approach. Also add missing deps: sqlite,
dbus, cmake, gcc.
2026-03-04 12:59:36 -06:00
vicrodh e39eb6fa6f feat(aur): add qbz and qbz-git source-build packages
Add PKGBUILDs and GitHub Actions workflows for:
- qbz: compiles from release source tarball
- qbz-git: compiles from main branch (updates on push)
Fix --bundles none -> --no-bundle for Tauri 2.0 CLI
2026-03-04 12:45:10 -06:00
vicrodh af973a1920 fix(flatpak): apply Flathub quality guidelines and expand description
Incorporate feedback from Flathub reviewer (yakushabb):
- Use <developer id> block instead of deprecated <developer_name>
- Remove <categories> and <keywords> (pulled from .desktop file)

Expand feature list: local library, Plex integration, immersive and
miniplayer modes, artist blacklist, ListenBrainz, smart cache, and
customization options. Sync both metainfo copies.
2026-03-04 08:00:59 -06:00
vicrodh 1092c4f8e5 fix(flatpak): extend summary to meet Flathub 35-char minimum 2026-03-04 02:49:19 -06:00
vicrodh 616fab281d fix(flatpak): correct fabricated commit hash in screenshot URLs
The metainfo.xml had a fake full hash (cff32e5d47f3b44568af9...) that
returned 404 on raw.githubusercontent.com. Replace with the real commit
hash (cff32e5da7) where screenshots exist.
2026-03-04 00:31:05 -06:00
vicrodh ec3ecb35b2 fix(flatpak): restore pipewire stream matching and tray icon access
cx
2026-03-01 20:18:17 -06:00
vicrodh afe086e6fd fix(ci): stabilize rc releases and version flatpak artifact
cx
2026-03-01 19:34:24 -06:00
vicrodh cb4708770c fix: sync local flatpak manifest with flathub PR changes
Remove broad filesystem permissions, add PipeWire :ro access,
drop --own-name (auto-granted since MPRIS name contains appid).
2026-03-01 19:06:25 -06:00
vicrodh 2b15a0828c chore(packaging): unify .desktop files across all formats
- Add flac; keyword to all .desktop files (was only in deb template)
- Add StartupNotify=true to flatpak .desktop files (was missing)
- Add Keywords line to snap .desktop (was missing entirely)
- Unify shortDescription to match other .desktop Comment fields

cc
2026-02-24 09:32:37 -06:00