CLAUDE.md · git:20260301.dde4391 · 2026-03-01 · sha256 21a07055448a4d4e
CLAUDE.md git:20260301.dde4391A
Immutable. This exact content never changes and is served at /api/v1/blob/21a07055448a4d4e.
# Hypercolor
Open-source RGB lighting orchestration engine for Linux, written in Rust.
## Build & Test
**IMPORTANT:** Chocolatey installed an old `cargo` that shadows rustup's proxy.
Always prepend PATH or use the full path to ensure the correct toolchain:
```bash
# Fix PATH for this session (do this first!)
export PATH="/c/Users/Stefanie/.cargo/bin:$PATH"
# Check everything compiles
cargo check --workspace
# Run all tests
cargo test --workspace
# Lint (must pass with zero warnings)
cargo clippy --workspace --all-targets -- -D warnings
# Format
cargo fmt --all
# Full verification (run after every change)
cargo fmt --all && cargo clippy --workspace --all-targets -- -D warnings && cargo test --workspace
```
## Project Structure
```
crates/
hypercolor-types/ # Pure data types — zero deps, no logic, no I/O
hypercolor-core/ # Engine: traits, bus, sampler, config, render loop
hypercolor-daemon/ # Binary: daemon + REST API + WebSocket
hypercolor-cli/ # Binary: `hyper` CLI tool
```
## Conventions
- **Edition 2024**, Rust 1.85+
- **Tests in `tests/` directory** — NOT inline `#[cfg(test)]` blocks
- **`unsafe_code` is forbidden** across the entire workspace
- **Clippy pedantic** is enforced — `deny` level, see `Cargo.toml` for allowed exceptions
- **`unwrap()` is forbidden** — use `?`, `.ok()`, `expect("reason")`, or handle errors properly
- **`thiserror`** for library error types, **`anyhow`** for application error handling
- **`tracing`** for all logging (never `println!` in library code)
- **Conventional commits**: `feat(scope):`, `fix(scope):`, `refactor(scope):`, etc.
- **Apache-2.0** license
## Crate Ownership
Each crate has clear boundaries. Do NOT create cross-crate circular dependencies.
- `hypercolor-types`: Shared vocabulary. Import from here, never from sibling crate internals.
- `hypercolor-core`: Depends on `types`. Contains traits, engine logic, backends.
- `hypercolor-daemon`: Depends on `core`. HTTP server, WebSocket, daemon lifecycle.
- `hypercolor-cli`: Depends on `core`. CLI parsing, output formatting, IPC client.
## Agent Coordination
Multiple agents may work simultaneously. Follow these rules:
1. **Own your files** — only modify files in your assigned module
2. **Never touch `lib.rs`** of another crate without coordination
3. **`cargo check --workspace`** must pass after your changes
4. **No placeholder implementations** — implement the real logic or don't create the file
5. **Tests are mandatory** — every public type/function needs test coverage in `tests/`
## Specs & Design Docs
Implementation specs live in `docs/specs/`. Design docs in `docs/design/`.
Always check the relevant spec before implementing a module.