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
41 lines
1.0 KiB
TOML
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"]
|