Files
qbz/crates/qbz-core/Cargo.toml
T
vicrodh d0a4a3299b feat(core): shared offline-tier resolver (Slice 1 foundation)
Adds qbz_core::offline_resolve::resolve_offline_bytes — the OFFLINE tier of
the playback tier-walk, frontend-agnostic and player-untouched (the user's
locked Slice-1 decision): resolve a track's offline-cached bytes by Qobuz id
(v2 CMAF decrypt via the secret vault, optionally emitting UnlockStart/End
through a sink; v1 plain-FLAC read; None on miss).

qbz-core now depends on qbz-offline-cache (aligns with the long-intended
`offline` feature seam). Both frontends will slot this in before the network
tier: Tauri keeps its hardware/quality gate around the returned bytes; Slint
calls it before Player::play_track. Player's L1/L2 + network path is unchanged.

Next: QbzCore compose methods (play_track_resolved / gapless), wire Slint's
session to construct + own an OfflineCacheState, route the Slint play path
through the resolver, and point Tauri's offline branch at it.

cc
2026-05-27 20:53:26 -06:00

41 lines
1.0 KiB
TOML

[package]
name = "qbz-core"
version.workspace = true
edition.workspace = true
license.workspace = true
description = "Core orchestrator for QBZ music player"
[dependencies]
qbz-models = { path = "../qbz-models" }
qbz-audio = { path = "../qbz-audio" }
qbz-player = { path = "../qbz-player" }
qbz-qobuz = { path = "../qbz-qobuz" }
qbz-radio = { path = "../qbz-radio" }
qbz-integrations = { path = "../qbz-integrations" }
qbz-offline-cache = { path = "../qbz-offline-cache" }
# Async
tokio = { workspace = true }
async-trait = { workspace = true }
# Logging
log = { workspace = true }
# Error handling
thiserror = { workspace = true }
anyhow = { workspace = true }
# Serialization
serde = { workspace = true }
serde_json = { workspace = true }
[features]
default = []
# Tier 2 features (to be added later)
# offline = ["qbz-offlineplayback"]
# local-library = ["qbz-locallibrary"]
# cast = ["qbz-cast"]
# scrobbling = ["qbz-scrobbling"]
# plex = ["qbz-plex"]
# full = ["offline", "local-library", "cast", "scrobbling", "plex"]