Files
qbz/src-tauri/Cargo.toml
T
vicrodh fbc1938838 feat: compare studio albums only when matching artists
When comparing "X" vs "The X" variants, now fetches actual albums
and counts only studio albums (main discography) instead of total
album count. This filters out:
- Tributes (albums by other artists)
- Compilations (greatest hits, best of)
- Unofficial releases (bootlegs, broadcasts)
- Live albums
- EPs and singles

Uses the same categorization logic as the frontend (qobuzAdapters.ts).
This provides cleaner matching, e.g., "The Beatles" with 200+ studio
albums vs "Beatles" tribute compilation with 2 albums.
2026-01-25 23:08:46 -06:00

115 lines
2.6 KiB
TOML

[package]
name = "qbz-nix"
version = "1.1.6"
description = "Native high-fidelity client for Qobuz™ subscribers on Linux with Hi-Fi audio support (uses the Qobuz API; not certified by Qobuz)"
authors = ["blitzkriegfc"]
edition = "2021"
[lib]
name = "qbz_nix_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[build-dependencies]
tauri-build = { version = "2", features = [] }
[dependencies]
# Tauri
tauri = { version = "2", features = ["protocol-asset", "tray-icon"] }
tauri-plugin-opener = "2"
# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# HTTP Client
reqwest = { version = "0.12", features = ["json", "cookies", "rustls-tls", "stream", "blocking"], default-features = false }
# Async Runtime
tokio = { version = "1", features = ["full"] }
# Crypto (for API signatures)
md-5 = "0.10"
base64 = "0.22"
# Regex (for bundle parsing)
regex = "1"
lazy_static = "1.4"
# Time
chrono = "0.4"
# Error handling
thiserror = "2"
anyhow = "1"
# Logging
log = "0.4"
env_logger = "0.11"
# Random number generation (for shuffle)
rand = "0.8"
# Audio playback
rodio = { version = "0.19", features = ["symphonia-all"] }
symphonia = { version = "0.5", features = ["all"] }
# Media controls (MPRIS on Linux)
souvlaki = "0.7"
# Desktop notifications
notify-rust = "4"
# Image processing (tray icon + thumbnails)
image = { version = "0.25", default-features = false, features = ["png", "jpeg", "webp"] }
# URL opening
open = "5"
# Local library
walkdir = "2"
lofty = "0.18"
rusqlite = { version = "0.31", features = ["bundled"] }
dirs = "5"
filetime = "0.2"
glob = "0.3"
uuid = { version = "1", features = ["v4"] }
# File dialogs - platform specific (see target dependencies below)
# URL encoding
urlencoding = "2"
# Environment variables
dotenvy = "0.15"
# Secure credential storage (system keyring)
keyring = "3"
# Clipboard
tauri-plugin-clipboard-manager = "2"
# Casting (Chromecast, AirPlay, DLNA)
rust_cast = "0.18.1"
mdns-sd = "0.11"
tiny_http = "0.12"
rupnp = { version = "3", features = ["full_device_spec"] }
futures-util = "0.3"
# Platform-specific dependencies
[target.'cfg(target_os = "linux")'.dependencies]
# Note: xdg-portal feature disabled due to ashpd/zbus version incompatibility
tauri-plugin-dialog = { version = "2.6.0" }
# Direct ALSA access for bit-perfect playback (bypasses CPAL limitations)
alsa = "0.9"
[target.'cfg(target_os = "macos")'.dependencies]
tauri-plugin-dialog = { version = "2.6.0" }
[target.'cfg(target_os = "windows")'.dependencies]
tauri-plugin-dialog = { version = "2.6.0" }
[patch.crates-io]
cpal = { path = "vendor/cpal" }
rodio = { path = "vendor/rodio" }