[package] name = "bikecontrol-app" version.workspace = true edition.workspace = true license.workspace = true repository.workspace = true description = "BikeControl desktop shell: Tauri commands and the event bridge to the UI" [lib] # Tauri v2 convention: the app lives in a lib so the same code can be reused by # the Android/iOS entry points later (G-4). name = "bikecontrol_app_lib" crate-type = ["staticlib", "cdylib", "rlib"] [build-dependencies] tauri-build = { version = "2", features = [] } [dependencies] bikecontrol-core = { workspace = true } bikecontrol-ble = { workspace = true } tauri = { version = "2", features = [] } tauri-plugin-dialog = "2" uuid = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } serde_yaml_ng = { workspace = true } roxmltree = { workspace = true } tokio = { workspace = true } anyhow = { workspace = true } thiserror = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true } [features] default = ["mock-ride"] # Compile the synthetic rider in `src/mock.rs` *as an option*. It is no longer # the default data source — `bikecontrol_core::RideSession` fed by real FTMS # telemetry is (see `state::Inner::new`). The feature exists so the mock can be # selected at runtime with `BIKECONTROL_DEMO=1` or `BIKECONTROL_MOCK=1`, which # is what makes the GUI developable with no hardware on the desk. # # Build with `--no-default-features` for a binary that can only ever show real # trainer data. mock-ride = []