Files
qbz/crates/qconnect-app/Cargo.toml
T
vicrodh e5e8d4a853 feat(qconnect-app): add QconnectRendererEngine trait + qbz-player dep (slice 6)
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
2026-06-02 16:43:08 -06:00

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"