feat(app): shared offline-mode engine with connectivity actor and grace gate
New qbz_app::offline_mode (frontend-agnostic, ADR-006): three-state mode machine (Online / RealOffline session-scoped / InducedOffline persisted), Tauri-compatible offline_settings.db store with the issue #279 stream_first_track snapshot, and a layered connectivity actor (default-route signal on Linux, audio liveness window, IP-literal + vendor-diverse strict probes, asymmetric hysteresis with confirmation burst, captive-portal and suspend/resume handling). qbz-qobuz gains the process-wide offline_gate and ApiError::OfflineMode (the single Qobuz choke point; HTTP funnel wiring lands next). SubscriptionStateStore gains offline_playback_allowed: binary 30-day-grace playback gate for the offline cache, never a preview-degradation path. cc
This commit is contained in:
10 files changed
+1416
No files matched your search
@@ -10,6 +10,8 @@ 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" }
|
||||
reqwest = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
tokio = { workspace = true }
|
||||
|
||||
Reference in new issue
Block a user