Skip to main content
This section covers development topics for contributors and maintainers of nono.

Topics

Quick Start for Contributors

  1. Clone the repository
    git clone https://github.com/always-further/nono.git
    cd nono
    
  2. Build the project
    cargo build --release
    
  3. Run the test suite
    ./tests/run_integration_tests.sh
    
  4. Check formatting and lints
    cargo fmt -- --check
    cargo clippy -- -D warnings -D clippy::unwrap_used
    

Development Environment

Prerequisites

  • Rust (stable toolchain)
  • Platform-specific dependencies:
    • Linux: libdbus-1-dev, pkg-config
    • macOS: dbus, pkg-config (via Homebrew)

Building

# Debug build
cargo build

# Release build (used for integration tests)
cargo build --release

# Run with verbose logging
RUST_LOG=debug cargo run -- run --allow-cwd -- echo "test"

Code Standards

  • Error Handling: Use NonoError for all errors; propagate with ?
  • Unwrap Policy: Never use .unwrap() or .expect() - enforced by clippy
  • Unsafe Code: Restricted to FFI; must include // SAFETY: documentation
  • Path Security: All paths must be validated and canonicalized
See CLAUDE.md for complete coding standards.