# Uzume Protocol Engines (Rust Workspace)

This workspace initializes Uzume's protocol-engine foundation for low-latency
show control and browser-hosted control surfaces.

## Crates

- `uzume-protocol-types`
  - Shared protocol domain models: `DMXUniverse`, `MIDIMessage`, `OSCMessage`,
    `TimecodeFrame`.
- `uzume-timing-core`
  - High-precision clock (`Instant` anchored), timer wheel scheduler, and SMPTE
    frame counter with system/external sync modes (LTC/MTC).
- `uzume-network-io`
  - Tokio-based UDP/TCP network layer for Art-Net/sACN/OSC/device-control,
    multicast join/leave helpers, configurable buffers, and zero-copy parsers.
- `uzume-node-bridge`
  - napi-rs native bridge exposing typed Node.js bindings for DMX universe
    output, device discovery, timecode sync, OSC messaging, and MIDI I/O.
- `uzume-control-surface-wasm`
  - `wasm-bindgen` bridge crate for web control surfaces.
  - Built using `wasm-pack` with `--target web`.
- `uzume-integration-tests`
  - Comprehensive integration suite covering Art-Net/sACN/OSC loopback flows,
    mock MIDI and Node bridge integration, and timecode latency/jitter reports.

## Commands

```bash
# Workspace checks
cargo check --workspace
cargo test --workspace

# Focused integration suite
cargo test -p uzume-integration-tests -- --nocapture

# Build web-targeted WASM package
wasm-pack build crates/uzume-control-surface-wasm --target web
```

## Toolchain

`rust-toolchain.toml` pins stable Rust and includes:

- `rustfmt`
- `clippy`
- `wasm32-unknown-unknown` target
