Commit Graph
60 Commits
Author SHA1 Message Date
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
Afonso Jorge Ramos ac627d432b fix(home): unify sticky tab header to avoid pop-in animation 2026-05-09 17:52:39 +02:00
Afonso Jorge Ramos 8ed62676c2 fix(titlebar): tune macos drag band to 32px 2026-05-09 17:45:46 +02:00
Afonso Jorge Ramos ac5fc25944 fix(titlebar): match macos drag band height to sidebar top padding 2026-05-09 17:37:04 +02:00
Afonso Jorge Ramos be67fffb28 feat(titlebar): expose hide-title-bar toggle on macOS 2026-05-09 17:36:28 +02:00
Afonso Jorge Ramos 61bd1eb940 feat(settings): expose nav and search titlebar toggles on macOS 2026-05-09 17:23:40 +02:00
Afonso Jorge Ramos 3cb54dd06b style(sidebar): drop dead macos no-titlebar padding rule 2026-05-09 17:23:37 +02:00
Afonso Jorge Ramos fd6464fdf3 refactor(macos): drop overlay drag region superseded by qbz titlebar 2026-05-09 17:23:32 +02:00
Afonso Jorge Ramos 0ee2e429c8 feat(titlebar): mount qbz titlebar on macOS with traffic-light reservation 2026-05-09 17:23:23 +02:00
Afonso Jorge Ramos 88e072a4ac fix(macos): harden CoreAudio exclusive stream handling
Address review feedback from the macOS Exclusive Mode PR.

Pin the resolved CoreAudio output device before acquiring Hog Mode so
System Default cannot drift between Hog Mode acquisition, sample-rate
switching, and stream creation.

Fall back to software volume when CoreAudio hardware volume is unavailable,
which keeps the volume slider usable on knob-only DACs.

Snapshot and restore CoreAudio hardware volume around Exclusive Mode so
leaving Exclusive Mode does not leave the output device at QBZ's last
hardware volume.

Refuse shared-mode fallback when macOS Exclusive Mode stream creation
fails, so the app does not silently play in non-exclusive mode while the UI
still reports Exclusive Mode.

Clean up Linux unused-variable warnings from the macOS-only guard plumbing.
2026-05-07 09:36:20 -05:00
Afonso Jorge Ramos e93fcaec99 fix(audio): defer host-stream drop on Stop to reuse device across track changes 2026-05-07 02:32:39 +02:00
Afonso Jorge Ramos 468a421e26 fix(audio): gate 50ms post-stop sleep behind cfg(target_os = "linux") 2026-05-05 17:11:28 +02:00
Afonso Jorge Ramos 1e3f5ab981 fix(audio): populate macOS output device picker 2026-05-04 00:31:21 +02:00
Afonso Jorge Ramos 65792b3a9c fix: sync package-lock.json with package.json 2026-04-06 01:35:19 +02:00
Afonso Jorge Ramos e4462dfefd fix(macos): ad-hoc sign app bundle to fix Gatekeeper rejection 2026-04-06 01:35:08 +02:00
Afonso Jorge Ramos 787196db99 fix: keep exclusive mode and DAC passthrough visible on all platforms 2026-04-05 01:12:54 +02:00
Afonso Jorge Ramos 86d5286a29 fix: add Windows case to AboutModal platform label 2026-04-05 01:12:53 +02:00
Afonso Jorge Ramos 2e5b9368e4 fix: add windows to Platform type 2026-04-05 01:12:53 +02:00
Afonso Jorge Ramos adfc390009 fix(notifications): use released notify-rust 4.13.0 instead of fork 2026-04-04 15:31:58 +02:00
Afonso Jorge Ramos 85bef48a0a fix: use linux-only gates instead of not-macos for platform-specific settings 2026-04-03 14:01:54 +02:00
Afonso Jorge Ramos 7a1890ad57 fix(audio): use released coreaudio-rs 0.14.1 instead of fork 2026-04-03 14:01:25 +02:00
Afonso Jorge Ramos 94bd222c52 fix: gate Linux-only settings sections on macOS 2026-04-03 13:58:15 +02:00
Afonso Jorge Ramos b71284187b refactor: migrate platform detection to Tauri OS plugin utility 2026-04-03 13:58:11 +02:00
Afonso Jorge Ramos e089417ab5 feat: create platform utility using Tauri OS plugin 2026-04-03 13:58:08 +02:00
Afonso Jorge Ramos 5d115277a5 feat: add @tauri-apps/plugin-os for platform detection 2026-04-03 13:58:04 +02:00
Afonso Jorge Ramos b1000cb9f0 fix(macos): gate Linux graphics CLI flags and crash handler with cfg 2026-04-03 03:19:52 +02:00
Afonso Jorge Ramos ba3ccf9aaa feat(settings): hide tray sub-settings on macOS and use menu bar terminology 2026-04-01 15:44:07 +02:00
Afonso Jorge Ramos 7edffcf537 feat(i18n): add macOS-specific menu bar tray keys for all locales 2026-04-01 15:44:02 +02:00
Afonso Jorge Ramos 84b1f1a542 docs: remove Apple Silicon only note from macOS section 2026-04-01 14:51:26 +02:00
Afonso Jorge Ramos 833cc2b35c fix: boost immersive drag region z-index on macOS 2026-04-01 14:50:22 +02:00
Afonso Jorge Ramos 8283bec614 feat: add Cmd+, keyboard shortcut to open settings 2026-04-01 14:38:06 +02:00
Afonso Jorge Ramos b8af1763ef feat(macos): add album artwork to notifications via image_path 2026-04-01 03:35:34 +02:00
Afonso Jorge Ramos a4a591e73c feat(macos): switch to notify-rust fork with image_path support 2026-04-01 03:35:27 +02:00
Afonso Jorge Ramos 684dd55887 fix(macos): scope title bar padding to non-home views only 2026-04-01 03:27:25 +02: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
Afonso Jorge Ramos 071865e79b fix: replace removed Github icon with simple-icons
lucide-svelte 1.0 dropped brand icons, breaking the Github import in
AboutModal. Use @icons-pack/svelte-simple-icons (SiGithub) instead.
2026-04-01 02:32:27 +02:00
Afonso Jorge Ramos cd2472f5d9 fix(macos): add top padding to clear native overlay title bar 2026-04-01 02:29:33 +02:00
Afonso Jorge Ramos b6ad192658 fix(macos): hide Linux-only settings on macOS 2026-04-01 02:29:32 +02:00
Afonso Jorge Ramos 478353055c fix(macos): gate idle_inhibit module for Linux only 2026-04-01 02:27:21 +02:00
Afonso Jorge Ramos a2fb44511d feat(macos): add deep link support for qobuzapp:// URLs
Add tauri-plugin-deep-link to handle qobuzapp:// URLs on macOS, where
the OS delivers URLs via Apple Events instead of CLI arguments.

- Register qobuzapp scheme in tauri.conf.json (injected into Info.plist)
- Add on_open_url handler for Apple Event URL delivery
- Extract is_qobuz_link() and handle_qobuz_link() helpers to deduplicate
  URL matching across single-instance, first-launch, and deep-link paths
- Tighten URL matching from contains() to starts_with() for security
- Log emit errors instead of silently discarding them
2026-03-31 05:53:44 +02:00
Afonso Jorge Ramos 6bf397e0f3 feat(macos): auto-select SystemDefault backend on non-Linux
When backend_type is None (auto-detect), default to SystemDefault on
non-Linux platforms so macOS gets CoreAudio device probing and sample
rate switching instead of falling through to the legacy CPAL path.
2026-03-31 02:20:13 +02:00
Afonso Jorge Ramos 4c15a43200 feat(macos): enhance CpalDefaultBackend with device capabilities
On macOS, enumerate_devices() now populates supported_sample_rates,
max_sample_rate, device_bus, and is_hardware via CoreAudio probing.
create_output_stream() switches the device sample rate to match the
track before opening the CPAL stream.
2026-03-31 02:20:08 +02:00
Afonso Jorge Ramos c51f07fe65 feat(macos): add CoreAudio device probing and sample rate switching
Add coreaudio_direct module using coreaudio-rs safe wrappers for:
- Device capability probing (supported sample rates, transport type)
- Automatic sample rate switching per-track
- Device lookup by name for CoreAudio↔CPAL bridging

Uses a fork branch of coreaudio-rs that adds get_available_sample_rates
and get_device_transport_type helpers (PR RustAudio/coreaudio-rs#149).
2026-03-31 02:19:59 +02:00
Afonso Jorge Ramos 70c27f3772 fix(macos): log when DAC sample rate detection is skipped 2026-03-20 01:16:09 +01:00
Afonso Jorge Ramos ce33270535 refactor: gate KWin functions with cfg(target_os = "linux") 2026-03-20 01:15:52 +01:00
Afonso Jorge Ramos 379ba28cee refactor: simplify should_use_main_window_transparency 2026-03-20 01:15:28 +01:00
Afonso Jorge Ramos 6422ae8ff9 refactor: cache isMacOS at module scope in titleBarStore 2026-03-20 01:15:15 +01:00
Afonso Jorge Ramos 6017cc70de fix(macos): gate drag region to macOS only 2026-03-20 01:14:47 +01:00
Afonso Jorge Ramos 7dca962080 fix(macos): merge duplicate platform detection and remove non-passive wheel listener 2026-03-20 01:14:27 +01:00
Afonso Jorge Ramos ebe555b7ca fix(macos): make notification fire-and-forget 2026-03-20 01:14:08 +01:00
Afonso Jorge Ramos dad062d61b fix(audio): add docs and fix param names for non-Linux stubs 2026-03-20 01:13:55 +01:00
Afonso Jorge Ramos f854e09661 feat(audio): add SystemDefault variant to AudioBackendType 2026-03-20 01:13:29 +01:00
Afonso Jorge Ramos 77888fb310 fix: suppress unused_mut warning for cross-platform builder 2026-03-20 00:49:42 +01:00
Afonso Jorge Ramos 08367fe951 fix: convert 16-bit PNG icons to 8-bit for Tauri compatibility 2026-03-20 00:45:16 +01:00
Afonso Jorge Ramos 00147dc7fb feat(macos): adapt frontend for native title bar
- Add macOS platform detection (html.macos class)
- Prevent pinch-to-zoom gestures in WKWebView
- Hide custom title bar on macOS (uses native overlay title bar)
- Add 32px top padding to sidebar for traffic light buttons
- Add drag region for window movement
2026-03-20 00:45:16 +01:00
Afonso Jorge Ramos caffd7b56c feat(macos): enable private API and set minimum system version 2026-03-20 00:45:16 +01:00
Afonso Jorge Ramos 3809a5cc67 feat(macos): add notify-rust dependency for desktop notifications 2026-03-20 00:45:15 +01:00
Afonso Jorge Ramos dbfc5e3f89 feat(macos): gate Linux-only commands and configure macOS window
- Gate XDG/desktop handler commands with macOS fallbacks
- Gate KWin window rule functions and cleanup to Linux
- Gate Linux-only notification helpers and constants
- Force native decorations on macOS (fixes WKWebView event delivery)
- Use overlay title bar style with dark background color
- Add macOS notifications via notify-rust with bundle identifier
2026-03-20 00:45:15 +01:00
Afonso Jorge Ramos 9bcf24131f feat(macos): gate network module and fix remaining souvlaki error formatting
Gate /proc/self/mountinfo parsing to Linux with empty fallback. Use
Debug formatting for remaining souvlaki errors not covered by 6261f312.
2026-03-20 00:45:15 +01:00
Afonso Jorge Ramos 5ed549d46b feat(macos): gate Linux-only audio backends with cfg
Add #[cfg(target_os = "linux")] to pipewire_backend and pulse_backend
modules. Add CpalDefaultBackend for non-Linux platforms using CPAL
default host (CoreAudio on macOS). Gate reset_pipewire_clock() calls.
2026-03-20 00:45:03 +01:00