Files
qbz/crates/qbzd/Cargo.toml
T
vicrodh 2916dee42c feat(qbzd): wire QbzCore, Player, AudioCache, keyring (Phase 1)
DaemonCore now initializes the real QbzCore with DaemonAdapter,
creates Player with audio settings from shared database, and
attempts auto-login from saved OAuth token in system keyring.

Working features:
- QbzCore init (bundle token extraction from Qobuz web player)
- Player audio thread (ready for playback commands)
- AudioCache with auto-detected size from RAM
- Shared audio settings with desktop app (same SQLite DB)
- Keyring credential lookup (same service as desktop)
- HTTP endpoints: /api/ping, /api/info, /api/status
- Graceful shutdown (SIGTERM/SIGINT -> stop player -> exit)

cc
2026-04-08 21:29:28 -06:00

50 lines
1.2 KiB
TOML

[package]
name = "qbzd"
version.workspace = true
edition.workspace = true
license.workspace = true
description = "QBZ headless music daemon for SBCs and servers"
[[bin]]
name = "qbzd"
path = "src/main.rs"
[dependencies]
# Core crates (all Tauri-free)
qbz-models = { path = "../qbz-models" }
qbz-core = { path = "../qbz-core" }
qbz-player = { path = "../qbz-player" }
qbz-audio = { path = "../qbz-audio" }
qbz-qobuz = { path = "../qbz-qobuz" }
qbz-library = { path = "../qbz-library" }
qbz-cache = { path = "../qbz-cache" }
qbz-integrations = { path = "../qbz-integrations" }
# HTTP server
axum = { version = "0.8", features = ["ws"] }
tower-http = { version = "0.6", features = ["cors"] }
# Async
tokio = { workspace = true }
async-trait = { workspace = true }
# Serialization
serde = { workspace = true }
serde_json = { workspace = true }
# Config
toml = "0.8"
clap = { version = "4", features = ["derive"] }
# System
dirs = "6"
log = { workspace = true }
env_logger = "0.11"
sysinfo = "0.34"
# Database
rusqlite = { version = "0.31", features = ["bundled"] }
# Credentials (shared keyring with desktop app)
keyring = { version = "3", features = ["async-secret-service", "crypto-rust"] }