The renderer-engine seam: a 16-method trait both frontends implement with zero-cost forwards to their QbzCore/Player, so the hard-won renderer orchestration (echo-seek rejection, cursor align, queue materialize, shuffle deferral, load dedup window) can move UP into qconnect-app and be written once against the trait instead of re-derived per frontend (slice 6, Phase T 1-2). - Adds qbz-player as a qconnect-app dep, for PlaybackState (read by the echo gate + should_reload; it is not in qbz-models and not re-exported). qbz-player does NOT depend on qconnect-app -> no dependency cycle. - The two protected bit-perfect seams (play_data / play_streaming_dynamic) are reached ONLY through the high-level start_track_stream method; BufferWriter + reqwest + the detached feeder spawn stay impl-side and never cross the crate boundary. play_data / play_streaming_dynamic are never modified. No impls, no logic moved yet -- pure foundation. qconnect-app 38 green, src-tauri cargo check green. cc
29 lines
1.0 KiB
TOML
29 lines
1.0 KiB
TOML
[package]
|
|
name = "qconnect-app"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "UI-agnostic Qobuz Connect application adapter"
|
|
|
|
[dependencies]
|
|
qconnect-core = { path = "../qconnect-core" }
|
|
qconnect-protocol = { path = "../qconnect-protocol" }
|
|
qconnect-transport-ws = { path = "../qconnect-transport-ws" }
|
|
qbz-models = { path = "../qbz-models" }
|
|
# Renderer-engine seam (slice 6): the trait carries qbz_player::PlaybackState
|
|
# (read by the echo gate + should_reload). qbz-player does NOT depend on
|
|
# qconnect-app, so there is no cycle. play_data/play_streaming_dynamic are
|
|
# reached ONLY through the trait's start_track_stream and are never modified.
|
|
qbz-player = { path = "../qbz-player" }
|
|
async-trait = { workspace = true }
|
|
tokio = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
uuid = { version = "1", features = ["v4"] }
|
|
log = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
tokio = { workspace = true, features = ["test-util"] }
|
|
prost = "0.13"
|