Commit Graph
86 Commits
Author SHA1 Message Date
vicrodh a62c2f26f2 docs(issue-template): emphasize log sharing and add log-access screenshot
cc
2026-05-25 09:58:30 -06:00
Afonso Jorge Ramos 4fd85b5b2f fix(ci): suffix macOS .app.tar.gz bundles with arch to fix auto-updater 2026-05-11 16:17:07 +02: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 ec3fbf1d3f chore(ci): remove build-qbzd workflow
The qbzd daemon is still in early development and the build pipeline
isn't ready to ship artifacts. Drop the workflow until the daemon
work lands so it doesn't fire on tag push and produce broken jobs.

cc
2026-04-28 21:40:13 -06:00
vicrodh 0461c36912 security: address CodeQL alerts from the v1.2.5 scan
Triaged the 8 open CodeQL alerts raised on the 1.2.5 merge commit.

Critical (1) — real, fixed:

  * .github/workflows/release-updater-manifest.yml:29 — the resolve
    step interpolated `${{ github.event.workflow_run.head_branch }}`
    directly into a shell heredoc. `head_branch` on `workflow_run` is
    attacker-controllable (any outside contributor can push a branch
    whose name embeds a payload). Route the value through an env var
    (HEAD_BRANCH) and validate the shape with a strict regex before
    letting it flow into shell or $GITHUB_OUTPUT.

Warnings (2) — real, fixed:

  * .github/workflows/build-qbzd.yml had no `permissions:` block, so
    every job inherited the repo's default GITHUB_TOKEN scope. Add a
    top-level `permissions: contents: read`; the existing `release`
    job keeps its own `contents: write` override for publishing
    artifacts.

Warnings (3) — real, low severity, mitigated:

  * crates/qbzd/src/{daemon.rs,session.rs} logged `user_id` at info
    level (CodeQL rust/cleartext-logging). Demoted the three lines to
    `log::debug!` so default-level logs stay free of the numeric user
    id, with a comment noting RUST_LOG=debug re-enables them for
    diagnostics.

Warnings (2) — false positives, dismissed in GitHub:

  * crates/qbzd/src/login.rs:103 — `println!` to stdout inside the
    interactive `qbzd login` subcommand; login confirmation UX, not a
    persistent log. (alert #63 dismissed, reason: false positive)
  * crates/qbzd/src/qconnect.rs:540 — `session_uuid` is an ephemeral
    per-connection identifier QConnect exchanges in cleartext itself;
    not a credential or token. (alert #65 dismissed, reason: false
    positive)

cc
2026-04-15 16:10:06 -06:00
vicrodh 62d1674673 chore(release): hide qbzd from UI and CI until it ships
qbzd is feature-complete on disk but not ready for public release yet.
Keep all code paths in place so it can be unhidden with a one-line
flip, but remove it from the user-facing surface:

  * build-qbzd.yml: comment out the `push.tags` trigger so neither a
    regular `v*` version tag nor a `qbzd-v*` tag auto-builds artifacts.
    workflow_dispatch is preserved for manual testing.
  * CastPicker.svelte: guard the QBZ Daemon tab, the manual-connect
    section, and the three `v2_qbzd_*` Tauri invocations behind a
    `QBZD_ENABLED` flag (currently false). Default activeProtocol
    switches to 'chromecast' so the picker doesn't start on a hidden
    tab.
  * SettingsView: DAC Setup Wizard icon filter swapped — button icon
    drops the `invert(1)` so it reads on light accent colors (e.g.
    Catppuccin Lavender), and the tooltip copy of the same icon now
    has `invert(1)` so it reads on the dark surface bg. Unrelated to
    qbzd but bundled since both are pre-release polish.

cc
2026-04-15 10:28:25 -06:00
vicrodh 2f5a6aaddf ci(updater): sign artifacts and consolidate updater manifest
Adds TAURI_SIGNING_PRIVATE_KEY(_PASSWORD) env to release-linux,
release-linux-aarch64, and release-macos build steps, collects the
resulting .sig files into the release artifacts, and adds a new
release-updater-manifest workflow that waits for all platform sig
files to land on the release and assembles latest.json for the
updater endpoint.

Cherry-picked from #305 by @afonsojramos.

cc
2026-04-13 14:53:52 -06:00
vicrodh c63799309f fix(ci): use native ARM64 runner instead of QEMU for aarch64 build
QEMU emulation crashes compiling ring's C code (SIGSEGV in cc).
Switch to ubuntu-24.04-arm native runner — faster and no emulation
issues. Build time drops from ~40min to ~5min.

cc
2026-04-09 11:19:52 -06:00
vicrodh dd322a1804 fix(ci): use QEMU native build for aarch64 instead of cross-compile
Ubuntu runners' apt multi-arch is broken for arm64 cross-deps
(security.ubuntu.com 404s for arm64 packages, DEB822 format
sources not handled by sed).

Switch to uraimo/run-on-arch-action: builds natively inside a
Debian Bookworm aarch64 container via QEMU. Slower (~15 min)
but reliable. Binary is native aarch64 with Bookworm's glibc 2.36.

cc
2026-04-09 07:28:48 -06:00
vicrodh 1cba3ec18b fix(ci): force all apt sources to amd64, arm64 from ports only
The sed was only modifying /etc/apt/sources.list but security.ubuntu.com
and other sources in sources.list.d/ were also trying to fetch arm64
packages from repos that don't have them (404).

Now: force [arch=amd64] on ALL .list files, arm64 exclusively from
ports.ubuntu.com.

cc
2026-04-09 07:16:37 -06:00
vicrodh 22a34b4f3e fix(ci): target glibc 2.35 instead of 2.31
glibc 2.31 is too old for system shared libs (libasound, libdbus)
on Ubuntu 22.04 runners which have glibc 2.35. The linker rejects
symbols from libs compiled against newer glibc.

glibc 2.35 covers: Raspberry Pi OS Bookworm (2.36), Ubuntu 22.04+,
Armbian Bookworm, DietPi Bookworm. Bullseye (2.31) is EOL June 2026.

cc
2026-04-09 07:08:22 -06:00
vicrodh 7a522623cf fix(ci): add libdbus-1-dev, fix arm64 apt sources, add strip
x86_64: add libdbus-1-dev for keyring D-Bus dependency
aarch64: fix apt sources with jammy-updates, proper arch restrictions
Both: strip binaries for smaller release size (~23 MB vs 30 MB)

cc
2026-04-09 06:57:12 -06:00
vicrodh c3ce3c6667 fix(ci): drop openssl dependency, use rustls-only for all crates
reqwest default features included native-tls which pulled in
openssl-sys. This broke zigbuild cross-compilation because zig's
C compiler doesn't support the glibc version suffix for openssl
header expansion.

Fix: default-features = false on reqwest in workspace and
qbz-integrations (which had its own reqwest dep with defaults).
Now the entire daemon tree uses rustls-tls exclusively.

cc
2026-04-09 06:48:37 -06:00
vicrodh d042d21622 fix(ci): add libssl-dev + pkg-config to qbzd build
openssl-sys build requires OpenSSL headers even when rustls is the
primary TLS backend (native-tls comes as transitive dependency).

cc
2026-04-09 06:37:11 -06:00
vicrodh 8cee1c60be ci(qbzd): fix workflow paths, add cache, track Cargo.lock
Fixes:
- Rust cache via Swatinem/rust-cache (workspaces: crates -> target)
- Track crates/Cargo.lock for reproducible builds
- Bundle service files in release tarball
- Add permissions: contents: write for release job
- generate_release_notes for auto changelog

Local release build verified: 30 MB (23 MB stripped), x86_64.

cc
2026-04-09 06:22:17 -06:00
vicrodh 90769c0537 ci: add qbzd build workflow (x86_64 + aarch64, glibc 2.31)
Uses cargo-zigbuild to target glibc 2.31 for maximum compatibility:
- Raspberry Pi OS Bullseye and newer
- DietPi, Armbian, Ubuntu 22.04+

Triggered by qbzd-v* tags or manual dispatch.
Produces two binaries: qbzd-linux-x86_64, qbzd-linux-aarch64.
Creates pre-release on tag push.

cc
2026-04-09 05:40:41 -06:00
Afonso Jorge Ramos 9823dfb680 fix(macos): enable x86_64 cross-compilation
- Upgrade rust_cast 0.18.1 → 0.21 (switches from openssl to rustls,
  removing the openssl-sys dependency that blocked x86_64 cross-compile)
- Split mupdf sys-lib features to Linux-only (on macOS there are no GTK
  symbol conflicts, and system libs don't support x86_64 cross-compile
  from Apple Silicon)
- Update release-macos workflow to build both aarch64 and x86_64 DMGs
  using a matrix strategy
2026-04-01 02:40:55 +02:00
victorrhgap 1fc4a4d5a9 fix(ci): generate Manifest digests in Gentoo overlay workflow
Ebuilds without matching Manifest hashes cause 'Missing digest'
errors on emerge. Download DIST files and compute BLAKE2B/SHA512
for ebuilds, metadata.xml, and tarballs.

cc
2026-03-25 23:04:15 -06:00
victorrhgap 5ad1179628 ci: add platform triage workflow for issue auto-assign
When a new issue selects macOS as platform, automatically labels it
platform:macos and assigns afonsojramos. Linux issues get labeled
platform:linux.

cc
2026-03-25 13:18:30 -06:00
victorrhgap 00d6d02c0d feat(issues): add platform dropdown to all issue templates
Adds Linux/macOS selection as first field in bug reports, feature
requests, and feedback forms. Adapts Linux-specific fields (DE, display
server) to indicate they are Linux-only and adds macOS options to
install method and audio backend dropdowns.

cc
2026-03-25 13:15:54 -06:00
victorrhgap a25bcb0e76 fix(ci): macOS build aarch64-only, drop x86_64 cross-compile
Cross-compiling x86_64 from aarch64 fails on openssl-sys (no
cross pkg-config). Apple Silicon only — Intel Macs use Rosetta 2.

cc
2026-03-24 20:14:47 -06:00
victorrhgap a347b39e07 fix(ci): use macos-latest for both arch targets
macos-13 runner is deprecated. Use macos-latest (Apple Silicon)
with cross-compilation for x86_64 target.

cc
2026-03-24 20:04:23 -06:00
victorrhgap 052de7fb54 ci: add macOS release workflow (unsigned DMG)
Builds DMG for both Apple Silicon (aarch64) and Intel (x86_64).
Triggered on tag push or manual dispatch. Artifacts uploaded to
GitHub Releases as pre-release.

Unsigned — users bypass Gatekeeper with right-click > Open.

cc
2026-03-24 19:37:10 -06:00
vicrodh 3366c2e8d9 ci(gentoo): use APT_REPO_TOKEN instead of OVERLAY_PAT
cc
2026-03-22 23:10:36 -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 52d724a7e4 Merge branch 'pre-release' 2026-03-19 17:13:37 -06:00
vicrodh f055f53ed5 chore: migrate issue templates from markdown to YAML forms (#171)
Replaces placeholder-text markdown templates with structured YAML
issue forms. Dropdowns for installation method, display server, and
audio backend. Required fields for description, steps, and version.
Same output format when reading submitted issues.

cc
2026-03-19 13:56:44 -06:00
Victor RH ee1459a0f1 Update funding information in FUNDING.yml 2026-03-14 21:07:43 -06:00
vicrodh 264298a949 ci: add dependabot config and PR redirect workflow
- dependabot.yml: target pre-release branch for npm and cargo updates
- redirect-pr-to-prerelease.yml: auto-redirect PRs to main → pre-release
  with a friendly comment explaining the workflow
2026-03-12 10:13:22 -06:00
vicrodh d9d3054921 ci: trigger APT repo update on release publish 2026-03-07 23:03:42 -06:00
vicrodh 90018c6518 chore: remove AUR git and source workflow files
Keep only release-aur.yml (qbz-bin). The git and source
PKGBUILD variants don't need CI workflows.
2026-03-04 20:24:16 -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 afe086e6fd fix(ci): stabilize rc releases and version flatpak artifact
cx
2026-03-01 19:34:24 -06:00
vicrodh ead36545d3 fix(actions): harden release-aur workflow permissions and input handling
cx
2026-03-01 09:19:37 -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
vicrodh f2e0d6727f fix(ci): add concurrency lock and detached HEAD recovery to AUR workflow
Prevents race conditions when multiple tags trigger simultaneous AUR
pushes. Recovers from corrupted master branch in AUR repo.
2026-02-23 18:33:14 -06:00
vicrodh c380434619 fix(ci): skip RC tags in AUR workflow
Only trigger AUR package update on stable version tags, not release
candidates.

cc
2026-02-19 16:18:47 -06:00
vicrodh 3d497a33b0 fix(desktop): add %u to Exec and complete tarball .desktop for URI handling
The Tauri .desktop template was missing %u in the Exec line, preventing
the desktop environment from passing qobuzapp:// URIs as arguments when
launched from the browser. The tarball .desktop was also missing MimeType,
StartupWMClass, and StartupNotify fields.

Closes #44

cc
2026-02-19 16:17:25 -06:00
vicrodh a6cfa36a8d fix(packaging): compile binary as qbz instead of qbz-nix
Add [[bin]] section to Cargo.toml so cargo produces target/release/qbz
directly. Update all packaging references (workflows, PKGBUILD, Flatpak
manifest, AUR desktop file) to use the new binary name. This fixes DEB
and RPM packages installing the binary as /usr/bin/qbz-nix instead of
/usr/bin/qbz.
2026-02-18 16:45:10 -06:00
vicrodh 2040ca00c4 Fix AUR workflow curl check for GitHub redirects
GitHub returns 302 redirects for release assets, not 200.
Use curl -L to follow redirects and check final status code.
2026-02-12 15:33:26 -06:00
vicrodh 7926e3eaa5 Fix AUR workflow to trigger after release-linux completes
- Change trigger from release:published to workflow_run on release-linux
- Only run if the triggering workflow succeeded
- Increase timeout to 30 minutes for aarch64 build to complete
- Extract version from workflow's head branch (the tag)
2026-02-12 14:37:47 -06:00
vicrodh fbce83adf6 Expand crash log instructions for all installation methods
Include commands for AppImage, AUR/tarball, deb/rpm, and Flatpak.
Add curl one-liner to upload crash log directly to 0x0.st.
2026-02-09 03:34:44 -06:00
vicrodh 0493539a3e Update issue templates with installation method and log instructions
Bug report now asks for installation method, display server, GPU,
and includes step-by-step instructions for sharing logs via the
built-in log uploader. Crash recovery hint for startup crashes.
Feedback template also adds installation method field.
2026-02-09 02:13:31 -06:00
vicrodh ddf4142188 fix(appimage): pin WebKitGTK to 2.44.0-2 to prevent EGL crash
The AppImage EGL_BAD_PARAMETER crash is caused by how Tauri's
linuxdeploy bundles newer WebKitGTK versions (tauri-apps/tauri#11994).

Fix: pin WebKitGTK to 2.44.0-2 on ubuntu-24.04, matching the proven
fix from other Tauri apps (audioling#40, OmniKee).

Also revert runtime env var workarounds (LIBGL_ALWAYS_SOFTWARE,
default-off hardware accel) since the fix is at the build level.
Keep only the NVIDIA DMA-BUF workaround which is still needed.
2026-02-09 01:28:11 -06:00
vicrodh e48bbb99df feat: add pkgrel input to AUR workflow
On release events pkgrel defaults to 1. On manual dispatch it can be
set to any value (default 1), allowing same-version rebuilds like
1.1.9-2 without editing the workflow.
2026-02-07 03:34:29 -06:00
vicrodh c87788f0f8 fix(flatpak): add version to metainfo.xml
Flatpak uses the <releases> section in metainfo.xml to display the
application version. Added a placeholder release entry and updated
the workflow to inject the actual version and date during build.
2026-01-27 20:54:45 -06:00
vicrodh 2121c910d1 Fix ARM64 workflow: only trigger on tags, not on push to main 2026-01-27 05:04:30 -06:00
vicrodh 220ee38f2a docs: add GitHub issue templates
- bug_report.md
- feature_request.md
- feedback.md

cc
2026-01-25 02:19:03 -06:00
vicrodh ee515573a2 fix: ARM64 workflow version extraction from tag/input 2026-01-20 22:42:26 -06:00
vicrodh b2e05b701b fix: Add tag trigger to ARM64 workflow to publish releases 2026-01-20 22:30:12 -06:00