The 30-day offline grace (D4) was produced by the Qt shell alone, and only when a login was REJECTED; its purge predicate had no caller in the live tree, so past the window the CMAF cache was blocked from playing but never removed (Tauri purged it; Slint recorded the gap). With member accounts now signing in, the clock has to key on the entitlement, not on a rejection, and it has to run wherever a session activates. `qbz_app::subscription_lifecycle` records the verdict from the core's session (`offline_streaming` clears the clock; a member keeps it running from its first observation) and purges the offline cache once the window has passed, through the cache a host registers with `AppRuntime::set_offline_cache`. `activate_at` runs it for every host (Qt via `activate`, qbzd directly), a daily ticker per session re-checks it, and a cache registered after activation is enforced against on registration. qbzd registers no cache and keeps the verdict. The Qt producers are gone; `offline_playback_allowed` stays the read gate. cc
35 lines
970 B
TOML
35 lines
970 B
TOML
[package]
|
|
name = "qbz-app"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
|
|
[dependencies]
|
|
qbz-models = { path = "../qbz-models" }
|
|
qbz-audio = { path = "../qbz-audio" }
|
|
qbz-player = { path = "../qbz-player" }
|
|
qbz-core = { path = "../qbz-core" }
|
|
qbz-qobuz = { path = "../qbz-qobuz" }
|
|
qbz-credentials = { path = "../qbz-credentials" }
|
|
qbz-offline-cache = { path = "../qbz-offline-cache" }
|
|
reqwest = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
tokio = { workspace = true }
|
|
log = { workspace = true }
|
|
rusqlite = { version = "0.40", features = ["bundled"] }
|
|
dirs = "6"
|
|
uuid = { version = "1", features = ["v4"] }
|
|
chrono = { workspace = true }
|
|
md-5 = { workspace = true }
|
|
base64 = { workspace = true }
|
|
rand = "0.10"
|
|
|
|
# TLS provider selection
|
|
rustls = { version = "0.23", features = ["aws_lc_rs"] }
|
|
|
|
[dev-dependencies]
|
|
# A temp user dir for the settings-store tests.
|
|
tempfile = "3"
|