refactor(backend): Phase 0 - Initialize multi-crate workspace

Create the foundational workspace structure for the multi-crate
architecture refactor. This phase establishes placeholder crates
that will be populated in subsequent phases.

Crates created:
- qbz-models: Shared types, events, and traits (Tier 0)
- qbz-audio: Audio backend system (Tier 1)
- qbz-player: Playback engine and queue (Tier 1)
- qbz-qobuz: Qobuz API client (Tier 1)
- qbz-core: Orchestrator (Tier 3)

All crates compile successfully with placeholder implementations.
The workspace uses shared dependencies via workspace.dependencies.

cc
This commit is contained in:
vicrodh committed 2026-02-14 12:48:52 -06:00
1 parent 1c9bb8dfdb
commit 0911cf75df
12 files changed
+321

No files matched your search

+29
View File
@@ -0,0 +1,29 @@
[package]
name = "qbz-player"
version.workspace = true
edition.workspace = true
license.workspace = true
description = "Playback engine and queue management for QBZ"
[dependencies]
qbz-models = { path = "../qbz-models" }
qbz-audio = { path = "../qbz-audio" }
# Async
tokio = { workspace = true }
async-trait = { workspace = true }
futures-util = { workspace = true }
tokio-stream = { workspace = true }
# Logging
log = { workspace = true }
# Error handling
thiserror = { workspace = true }
# Audio decoding
symphonia = { workspace = true }
# Vendored audio libraries (will be copied in Phase 3)
# rodio = { path = "./vendor/rodio", features = ["symphonia-all"] }
# cpal = { path = "./vendor/cpal" }
+21
View File
@@ -0,0 +1,21 @@
//! QBZ Player - Playback engine and queue management
//!
//! This crate provides:
//! - Player: Main playback control
//! - QueueManager: Track queue management
//! - StreamingSource: HTTP audio streaming
//! - PlaybackCache: In-memory prefetch cache
//!
//! The vendor/ directory contains modified versions of:
//! - rodio: High-level audio playback
//! - cpal: Cross-platform audio I/O
// TODO: Phase 3 - Copy player modules from qbz-nix
// pub mod player;
// pub mod queue;
// pub mod streaming_source;
// pub mod playback_engine;
// pub mod playback_cache;
// pub use player::Player;
// pub use queue::QueueManager;