Commit Graph
2040 Commits
Author SHA1 Message Date
Victor RH 7e80279427 Merge branch 'features/1.1.14' 2026-02-13 07:58:56 -06:00
vicrodh 78aa6694c7 fix(flatpak): use appid as MPRIS dbus name, remove own-name permission
Change dbus_name from "qbz" to "com.blitzfc.qbz" so the MPRIS name
matches the appid pattern. This eliminates the need for the explicit
--own-name permission as Flatpak allows apps to own names under their
appid namespace automatically.

cc
2026-02-13 07:54:36 -06:00
vicrodh e977ca8b34 feat(ui): new playlist collage layout with 3+1 grid
- Change 4-cover layout from 2x2 to 3 small left + 1 large right
- Always use track artwork collage instead of low-res API image
- Upscale images to 600px for better quality

cc
2026-02-13 07:54:36 -06:00
vicrodh e8929cb2a4 fix(ui): volume buttons and playlist search refinements
- Remove border from volume step buttons (no circles in player)
- Remove separator between volume and queue button
- Make playlist search input taller using negative margins
- Auto-expand folders with matching results during search
- Hide folders without matches during search

cc
2026-02-13 07:54:36 -06:00
vicrodh ebae1aa83a feat(ui): add volume step buttons and playlist search
- Add +/- buttons to volume control for 5% increments
- Reduce SongCard min-width from 508px to 436px
- Add playlist search in sidebar header with expandable input
- Add translations for new features in all 4 locales

cc
2026-02-13 07:54:36 -06:00
Victor RH 5adfbbfffe Merge pull request #76 from boxdot/main
Merged to pre-release for testing
2026-02-13 07:51:36 -06:00
boxdot c207a60ba4 fix: UI lag
The lag was due to using sqlite in non-WAL mode.
2026-02-13 09:29:26 +01:00
vicrodh 45a420cf7e fix: update snapcraft source-tag to v1.1.13 2026-02-12 16:04:27 -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 008dfbcbb0 Bump version to 1.1.13 for Flathub submission 2026-02-12 15:12:07 -06:00
vicrodh 1135aab857 Add Flatpak metadata files for Flathub submission
- Desktop entry file
- AppStream metainfo with screenshots
- Screenshot images for Flathub listing

These files are required by Flathub reviewers to be in upstream.
2026-02-12 15:10:59 -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 f70000bbcc Bump version to 1.1.12 2026-02-12 14:32:52 -06:00
vicrodh 3f8914e8cb Move graphics settings to Composition section
- Add Hardware Acceleration toggle to Composition section
- Move Force DMA-BUF toggle from Developer Mode to Composition
- Add i18n keys for new composition toggles (en, es, de, fr)

These settings logically belong together since they both control
GPU rendering behavior. Hardware Acceleration is the broad switch
that enables GPU; Force DMA-BUF controls the specific buffer-sharing
mechanism with the compositor.
2026-02-12 14:16:52 -06:00
vicrodh 901b0edab8 Fix system title bar sync only propagating true values
The localStorage->backend sync only ran when useSystemTitleBar was true,
so toggling it OFF never persisted to the database. On restart, the
backend read the old 'true' value and created the window with system
decorations, while the UI showed 'false' from localStorage.

Now syncs the value unconditionally on init.
2026-02-12 13:56:33 -06:00
vicrodh 348e615d41 Fix infinite loop in AudioOutputBadges causing log spam
The $effect watching outputStatus.is_playing would call loadStatus(),
which updates outputStatus, triggering the effect again. This caused
~30 calls per second when hovering over the audio badges.

Removed the problematic $effect - mouseenter handler and 1s polling
for hardware status are sufficient.
2026-02-12 13:45:58 -06:00
vicrodh 14e657e8af Optimize console log capture in production
Only capture log/info levels in dev builds or when verbose mode is
explicitly enabled in Developer Mode. Always capture error/warn for
bug tracking. Reduces GC/CPU overhead in production builds.

Adds toggle in Settings > Developer Mode to enable verbose capture
when debugging production issues.
2026-02-12 13:34:02 -06:00
vicrodh 51a24de9cb Fix async listener leak on fast unmount/HMR
Apply disposed flag pattern to prevent listener leaks when component
unmounts before async listen() calls complete.

+page.svelte:
- Add disposed flag for tray/media control listeners
- Check disposed after each await listen(), cleanup immediately if true
- Set disposed=true at start of cleanup function

offlineCacheState.ts:
- Add listenersDisposed flag
- Check flag after each listener registration
- Cleanup any registered listeners if disposed during async sequence
- Set flag in stopOfflineCacheEventListeners()

This prevents memory leaks during HMR and fast navigation.
2026-02-12 13:27:00 -06:00
vicrodh 9c5245f2ce Add context menu for queue tracks
QueuePanel:
- Add vertical ... icon to the right of track duration
- Context menu with 3 options:
  - Remove from Queue (calls backend remove_from_queue)
  - Add to Playlist (reuses existing playlist modal)
  - Show Track Info (reuses existing track info modal)
- Menu shows on button click, closes on click outside

+page.svelte:
- Add handlers: handleRemoveFromQueue, handleQueueTrackAddToPlaylist,
  handleQueueTrackInfo
- Wire up new QueuePanel props

i18n: Add toast messages for remove from queue (all 4 locales)
2026-02-12 13:20:08 -06:00
vicrodh 1959000fd0 Expose graphics fallback status to UI with warning
Backend:
- Add static atomics to track graphics startup state
- Add set_startup_graphics_state() called from main.rs
- Add get_graphics_startup_status command for frontend

Frontend (SettingsView):
- Query graphics startup status on mount
- Show prominent red warning in Composition section when
  using fallback graphics settings
- Display recovery command (qbz --reset-graphics)

i18n: Add fallbackWarning/fallbackDesc to all 4 locales

This helps users understand when graphics settings failed to
load and may be causing performance degradation.
2026-02-12 13:11:47 -06:00
vicrodh 0d5c50a23a Add visible logging for graphics settings fallback
When graphics settings fail to load from DB:
- Logs warning to stderr (visible in terminal)
- Logs to startup log with recovery instructions
- Tracks fallback state for potential UI exposure
- Adds summary log of graphics config at startup

Helps users diagnose performance degradation caused by
silent graphics settings failures.
2026-02-12 13:05:41 -06:00
vicrodh 36632548fe Add idempotency guard to offline cache listeners
Prevents duplicate event listeners if startOfflineCacheEventListeners
is called multiple times (e.g., during HMR or accidental remount).
2026-02-12 13:02:41 -06:00
vicrodh 20ab229cfe Increase session save interval (30s -> 60s)
Reduces IPC overhead for large queues. Full queue serialization
every 30s was excessive; 60s provides same crash recovery with
half the overhead.
2026-02-12 13:02:25 -06:00
vicrodh dae8d509e5 Reduce playback state emission frequency (250ms -> 500ms)
Reduces UI reconciliation work during playback from 4Hz to 2Hz.
Seekbar updates remain smooth while cutting CPU overhead in half.
2026-02-12 13:02:16 -06:00
vicrodh 42034623be Disable MiniPlayer feature (incomplete)
- Hide MiniPlayer button in NowPlayingBar when not provided
- Comment out miniplayer IPC emissions in player state subscriber
- Removes unnecessary IPC overhead during playback

MiniPlayer needs significant work before re-enabling.
2026-02-12 12:59:16 -06:00
vicrodh 2514c53e7b Remove Vinyl panel from Immersive focus mode tabs
Removes vinyl from the focus mode tab options while keeping the
VinylPanel component intact for potential future use. Users can
now choose from coverflow, static, visualizer, lyrics, and queue.
2026-02-12 12:44:45 -06:00
vicrodh e03c823bfd feat: add --reset-graphics CLI flag for full composition reset
Resets all graphics/composition settings to defaults:
- force_x11: false
- gdk_scale: auto
- gdk_dpi_scale: auto
- force_dmabuf: false

Use when QBZ crashes on startup due to bad graphics config.

cc
2026-02-12 11:40:53 -06:00
vicrodh 9f574fce4a docs: add graphics troubleshooting section to README
Documents composition settings, environment variables, and common
scenarios for GPU/rendering issues (NVIDIA Wayland, Intel Arc, VMs).

cc
2026-02-12 11:23:59 -06:00
vicrodh 5d48e15e76 merge: integrate bugfixes/pre-release-1.1.12
Includes:
- fix(graphics): revert to v1.1.9 rendering defaults
- feat(graphics): GPU rendering summary in startup logs
- feat(settings): collapsible Composition section
- fix: disable gapless when DAC Passthrough active
- fix: prevent multiple instances
- feat: playlist offline option

cc
2026-02-12 09:47:53 -06:00
vicrodh a69009d23d feat: add "Make available offline" option for playlists
Cherry-picked from main (126a5714)

cc
2026-02-12 09:46:13 -06:00
vicrodh 700183b0bb fix: prevent multiple instances when reopening from desktop icon
Cherry-picked from main (c163435b)

cc
2026-02-12 09:46:03 -06:00
vicrodh 968a9d7116 fix: disable gapless when DAC Passthrough is active
Cherry-picked from main (ab3dac32)

cc
2026-02-12 09:45:55 -06:00
vicrodh 0170519a6b feat(updates): add snap welcome modal with plug setup commands
cx
2026-02-11 09:07:38 -06:00
vicrodh aed7e43c0f feat(settings): add collapsible Composition section in Appearance
Replace the misleading Hardware Acceleration toggle (which was a no-op
since v1.1.12 reverted to env-var-only control) and the standalone
Force X11 toggle with a collapsible "Composition" subsection that:

- Groups all GPU/rendering settings in one place
- Shows help text explaining what the section controls
- Includes a crash recovery warning with terminal command
- Keeps Force X11 toggle (functional, writes to DB)
- Adds GDK_SCALE and GDK_DPI_SCALE inputs (shown when Force X11 on)
- Lists all env var overrides with descriptions
- Translated in all 4 locales (en, es, de, fr)
2026-02-10 20:32:40 -06:00
vicrodh f0b7b2efb9 feat(graphics): add GPU rendering summary to startup logs
Shows effective rendering state after all env var decisions:
- FULL: compositing GPU + DMA-BUF GPU
- partial: which subsystems are on CPU vs GPU
- OFF: software rendering via llvmpipe

cc
2026-02-10 20:08:09 -06:00
vicrodh 31019d9b6a fix(graphics): revert to v1.1.9 rendering defaults, fix UI lag
Reverts the aggressive GPU disabling introduced in v1.1.10/11 that
caused severe UI lag for all users. The previous approach disabled
WEBKIT_DISABLE_DMABUF_RENDERER globally (not just NVIDIA) because
hardware_accel defaulted to false.

New behavior (matches v1.1.9 targeted mitigations):
- X11 non-NVIDIA: nothing disabled (full GPU acceleration)
- X11 + NVIDIA: only DMA-BUF disabled
- Wayland: compositing + DMA-BUF disabled (prevents EGL crashes)
- Wayland + force_x11: runs as X11 (XWayland)
- VM: software rendering via llvmpipe

Improvement over v1.1.9: DMA-BUF now disabled for ALL Wayland GPUs
(not just NVIDIA), which prevents the Intel Arc EGL crash from #59.

All settings bypassable via env vars:
- QBZ_HARDWARE_ACCEL=0 disables all GPU rendering (nuclear opt-out)
- QBZ_HARDWARE_ACCEL=1 bypasses all safety (full GPU everywhere)
- QBZ_FORCE_X11=1 forces XWayland backend
- QBZ_FORCE_DMABUF=1 / QBZ_DISABLE_DMABUF=1 fine-grained DMA-BUF
- QBZ_SOFTWARE_RENDER=1 forces Mesa llvmpipe

Also adds GDK_SCALE and GDK_DPI_SCALE DB persistence for XWayland
scaling (workaround from #67).

cc
2026-02-10 19:27:39 -06:00
vicrodh 63abf1f90c fix: graphics settings store fails on existing databases
The CREATE TABLE included force_x11 column but INSERT OR IGNORE
also referenced it, so on existing DBs (without the column) the
entire execute_batch failed before reaching the ALTER TABLE
migration. Keep original schema in CREATE/INSERT, let ALTER add
the new column.
2026-02-10 08:37:35 -06:00
vicrodh d6e9375333 chore: bump version to 1.1.11 2026-02-10 08:00:42 -06:00
vicrodh 0f31dcd310 feat: add persistent Force X11 setting for Wayland crash workaround
Add a toggle in Settings > Appearance to force X11 (XWayland) backend
on Wayland sessions. Persisted in graphics_settings.db, env var
QBZ_FORCE_X11=1|0 overrides for crash recovery. Also fixes the
display server log to report effective GDK backend instead of
session type.
2026-02-10 07:18:15 -06:00
vicrodh d3d719c609 fix: log effective display server after GDK backend selection
The "Display server" log message was checking WAYLAND_DISPLAY env var
before GDK_BACKEND selection, so GDK_BACKEND=x11 still showed
"Display server: Wayland". Now logs AFTER selection and reports
the effective backend (including "X11 (XWayland)" when forcing x11
on a Wayland session).
2026-02-10 07:10:06 -06:00
vicrodh cff32e5da7 chore(flatpak): add upstream screenshots for AppStream
cx
2026-02-10 07:08:41 -06:00
vicrodh 07f9f64a08 fix: persist volume and tray settings across restarts
Volume was saved to per-user localStorage but loaded from unscoped key
before login set the userId. Added resyncPersistedVolume() called after
login to re-read from the correct scoped key.

Close/minimize to tray read settings once at startup from the flat-path
DB, but user changes were saved to per-user DB after login. Changed
close-to-tray to read dynamically from state, and minimize-to-tray to
re-fetch before each action.
2026-02-10 06:23:05 -06:00
vicrodh 3edfd165cb fix(snap): copy desktop file and icon to install dir 2026-02-10 04:58:32 -06:00
Victor RH e202ab03fc Improves stability and adds new features
This release brings stability improvements, including fixes for UI freezes, EGL crashes, and playlist loading performance.

It introduces gapless playback, volume normalization, Plex integration, and enhanced discover browsing.
2026-02-10 03:28:40 -06:00
vicrodh 3356d76ade fix(snap): install SQLite 3.46 to fix sqlite3_error_offset link error
Core22 ships SQLite 3.37 but rusqlite needs 3.38+ for
sqlite3_error_offset. The RUSTFLAGS -L flags cause the linker
to find the system libsqlite3.a before the bundled one.
2026-02-10 03:18:37 -06:00
vicrodh 3c26880e56 feat: add aarch64 architecture support to snapcraft 2026-02-10 02:51:30 -06:00
vicrodh a7409bfdd4 chore: bump version to 1.1.10 2026-02-10 02:17:48 -06:00
vicrodh 051c9a3197 fix: remove z-index from artist page sticky nav to prevent sidebar dropdown overlap 2026-02-10 02:08:11 -06:00
vicrodh c071b86ae2 feat: preserve original Qobuz playlist image when copying to library 2026-02-10 02:05:17 -06:00
vicrodh bbc3b4a32e fix: use localized playlist tags and align tag selector below section title 2026-02-10 01:52:56 -06:00