Files
qbz/crates/qbz-app/Cargo.toml
T
vicrodh 2e34112868 feat(app): subscription grace clock and offline purge in the shared activation
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
2026-09-02 07:41:09 -06:00

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"