Phase S steps 9-10. Makes qbz-Slint a QConnect renderer: SlintRendererEngine implements qconnect_app::QconnectRendererEngine over runtime.core(), so the Slint frontend inherits the shared echo/cursor/materialize/shuffle orchestration in qconnect_app::renderer instead of re-deriving it. - Deps added to qbz-slint: qconnect-app, explicit qbz-player, futures-util, uuid. - 16 trait forwards through runtime.core() (CoreError mapped to String) + current_output_format reading player().state. - start_track_stream + the HTTP feeder (probe FLAC -> play_streaming_dynamic, fallback download -> play_data) ported from the Tauri CoreBridge impl. The protected bit-perfect seams are only called, never modified; the probe-derived sample_rate/channels/bit_depth flow straight through. - TLS deviation: the crates-workspace reqwest ships rustls-tls (not native-tls), so .use_native_tls() is dropped. TLS is transport-only; audio bytes identical. allow(dead_code) until the Slint QConnect service + event sink wire it (next Phase S step). Verified: cargo check -p qbz-slint green (only a pre-existing unrelated rename_folder dead-code warning). cc
56 lines
1.8 KiB
TOML
56 lines
1.8 KiB
TOML
[package]
|
|
name = "qbz-slint"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
description = "Slint functional MVP shell for QBZ (private branch only)"
|
|
|
|
[[bin]]
|
|
name = "qbz-slint"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
# femtovg renderer, pinned >=1.16 for the femtovg text-rendering fixes
|
|
# (slint-ui/slint #5177 pixel-grid alignment + #11335 0.5px tearing /
|
|
# inconsistent glyph spacing). Skia never received that treatment.
|
|
slint = { version = "1.16", default-features = false, features = [
|
|
"std",
|
|
"backend-winit",
|
|
"renderer-femtovg",
|
|
"renderer-software",
|
|
"accessibility",
|
|
"compat-1-2",
|
|
] }
|
|
log = { workspace = true }
|
|
env_logger = "0.11"
|
|
tokio = { workspace = true }
|
|
async-trait = { workspace = true }
|
|
reqwest = { workspace = true }
|
|
image = { version = "0.25", default-features = false, features = ["jpeg", "png"] }
|
|
urlencoding = "2"
|
|
open = "5"
|
|
arboard = "3"
|
|
rfd = { version = "0.15", default-features = false, features = ["xdg-portal", "tokio"] }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
dirs = "5"
|
|
chrono = { workspace = true, features = ["unstable-locales"] }
|
|
qbz-app = { path = "../qbz-app" }
|
|
qbz-audio = { path = "../qbz-audio" }
|
|
qbz-core = { path = "../qbz-core" }
|
|
qbz-player = { path = "../qbz-player" }
|
|
qconnect-app = { path = "../qconnect-app" }
|
|
futures-util = { workspace = true }
|
|
uuid = { version = "1", features = ["v4"] }
|
|
qbz-library = { path = "../qbz-library" }
|
|
qbz-offline-cache = { path = "../qbz-offline-cache" }
|
|
qbz-models = { path = "../qbz-models" }
|
|
qbz-integrations = { path = "../qbz-integrations" }
|
|
rusqlite = { version = "0.31", features = ["bundled"] }
|
|
qbz-cache = { path = "../qbz-cache" }
|
|
qbz-credentials = { path = "../qbz-credentials" }
|
|
|
|
[build-dependencies]
|
|
slint-build = "1.16"
|