- Add check_alsa_utils_installed and get_linux_distro Tauri commands
- Detect Linux distribution from /etc/os-release
- Show appropriate package manager command for each distro
- Add (?) help icon next to ALSA Direct device dropdown in Settings
- Modal explains why alsa-utils is needed for bit-perfect detection
- Updated PKGBUILDs to list alsa-utils as optdepend
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.
- Update PKGBUILD to support both x86_64 and aarch64 architectures
- Use architecture-specific sources and checksums
- Update AUR workflow to download and checksum both tarballs
- Add smart wait logic for both release assets (max 10 minutes)
- Homologize workflow naming for consistency
- Package function now detects architecture and uses correct tarball
AUR users on ARM64 devices (Raspberry Pi, etc.) can now install qbz-bin.
- Add Comment field to all .desktop files for app launcher descriptions
- Change category from Music to AudioVideo for better categorization
- Add Keywords for improved searchability (audiophile, hifi, streaming)
- Enhance metainfo.xml with detailed feature list and links
- Configure AppImage bundle settings in tauri.conf.json
- Update workflows to generate improved .desktop files
AppImage now includes embedded icon via Tauri icon configuration.
App will now appear in Multimedia category with proper description in all Linux app launchers.
Two critical fixes for Flatpak sandbox environment:
1. PipeWire detection now uses pactl instead of pw-cli
- pw-cli is not available in GNOME Flatpak runtime
- pactl works for both PipeWire and PulseAudio (compatibility layer)
- Fixes missing PipeWire backend in Settings
2. App ID migration now works in Flatpak sandboxes
- Detects Flatpak environment and uses absolute paths
- Accesses old sandbox (com.blitzkriegfc.qbz) via HOME directory
- Added read-only permission to old App ID in manifest
- Properly migrates config/data/cache from old to new sandbox
Changes:
- Renamed Flatpak manifest, desktop file, and AppStream metainfo
- Updated App ID in all metadata files
- Fixed MPRIS name: qbz_nix → qbz
- Added NAS support permissions: /mnt, /media, /run/media
- Updated CI workflow to use new filenames
- Updated tauri.conf.json bundle identifier
BREAKING CHANGE: Users will need to migrate data from old App ID directories
Data migration will be implemented in next commit
AUR (Arch Linux):
- Added to optdepends: 'alsa-utils: Better ALSA device names and descriptions'
- Users get notification to install, but not required
Flatpak:
- Included alsa-utils module in bundle (builds from source)
- Version 1.2.12 from alsa-project.org
- Sandboxed environment can now execute aplay -L internally
- Disabled alsamixer and xmlto (not needed, reduces size)
- Users get real device descriptions automatically
Snap (future - not yet implemented):
- Created snapcraft.yaml template
- stage-packages includes alsa-utils
- Will be bundled when Snap support is implemented
AppImage (future - not yet implemented):
- Created README.md documenting dependencies
- AppImage uses host system commands (aplay from host)
- Users need to install alsa-utils on their system
- Fallback to CPAL works if not installed
Summary by format:
- .deb/.rpm: Recommends alsa-utils (auto-installed, can be removed)
- AUR: optdepends (user notified, optional)
- Flatpak: Bundled (always available)
- Snap: Will be bundled (future)
- AppImage: Host dependency (user installs)
Add URI scheme handler registration for OAuth flow implementation:
- Register x-scheme-handler/qbz in .desktop files
- Add %u parameter to Exec for URL handling
- Add OpenURI portal permission in Flatpak manifest
This enables OAuth PKCE flows for Spotify and other providers
to redirect back to the application after browser authentication.
Files modified:
- packaging/arch/qbz.desktop
- packaging/aur/qbz.desktop
- packaging/flatpak/com.blitzkriegfc.qbz.desktop
- packaging/flatpak/com.blitzkriegfc.qbz.yml
GNOME 49 uses Freedesktop SDK 25.08 which may install cmake libs to
lib64 despite CMAKE_INSTALL_LIBDIR=lib. This adds a helper module that
copies any libs from lib64 to lib before building the main app.
- Switch to GNOME SDK 48 which includes webkit2gtk-4.1
- Install Node.js 20 LTS directly from tarball (no SDK extension needed)
- Install Rust via rustup for latest stable version
- Add flatpak build directories to .gitignore
SDK 24.08 doesn't have javascriptcoregtk-4.1 (uses webkit 6.0).
SDK 23.08 has Rust 1.81 which doesn't support edition2024.
Solution: use SDK 23.08 with webkit2gtk 4.1 but install Rust via rustup.
The zbus 5.x crate requires Rust edition2024 which needs Rust 1.85+.
SDK 23.08 only has Rust 1.81. Upgrade to 24.08 which has a newer Rust.
Also upgrade node extension from node20 to node22.
Linux workflow:
- Remove xdg-portal feature from tauri-plugin-dialog to fix ashpd/zbus version incompatibility
- The ashpd 0.11.0 crate has breaking changes with zbus 5.x
Flatpak workflow:
- Use build-options.append-path instead of shell export to properly set PATH for SDK extensions
- This ensures npm/rust binaries are available in all build commands