Thank you for your interest in contributing to OneVox! This document provides guidelines and information for contributors.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/onevox.git - Create a branch:
git checkout -b feature/your-feature-name - Make your changes
- Test thoroughly
- Submit a pull request
See DEVELOPMENT.md for detailed build instructions.
Quick start:
# Clone and build
git clone https://github.com/kssgarcia/onevox.git
cd onevox
cargo build --release
# Run tests
cargo test
# Run in foreground for testing
./target/release/onevox daemon --foreground- Follow Rust standard formatting:
cargo fmt - Run clippy before committing:
cargo clippy - Write clear commit messages
- Add tests for new features
- Update documentation as needed
- Update documentation - If you change functionality, update relevant .md files
- Add tests - New features should include tests
- Run checks - Ensure
cargo test,cargo fmt, andcargo clippypass - Test build variants - If touching model code, test both whisper.cpp and ONNX builds
- Describe changes - Write a clear PR description explaining what and why
- Link issues - Reference any related issues
For model backend changes:
- Add appropriate tests for both whisper.cpp and ONNX models
- Verify existing tests pass with both backends (both included by default)
- Update ARCHITECTURE.md if behavior changes
- Windows installer and service management
- Additional Whisper model support
- ONNX backend improvements and testing
- Performance optimizations
- Cross-platform testing (especially with ONNX backend)
- Documentation improvements
- Additional ONNX-optimized multilingual models
- Custom vocabulary/word lists
- Multiple language support improvements
- Alternative VAD implementations
- Plugin system for post-processing
- Cloud sync for history (optional, privacy-preserving)
- Testing and stabilizing ONNX backend
- Adding support for new model formats
- Implementing Candle backend (pure Rust)
- GPU optimization for ONNX models
- Model quantization improvements
- Check Issues for open bugs
- Platform-specific issues are especially valuable
OneVox follows these principles:
- Privacy First - All processing must remain local
- Cross-Platform - Changes should work on macOS, Linux, and Windows
- Performance - Minimize latency and resource usage
- Simplicity - Prefer simple, maintainable solutions
- Stability - Production reliability over experimental features
See ARCHITECTURE.md for technical details.
# Unit tests
cargo test
# Integration tests
cargo test --test '*'
# Benchmarks
cargo bench
# Test with different backends
cargo test --features onnx
# Platform-specific tests
./target/release/onevox test-hotkey
./target/release/onevox test-audio --duration 3
./target/release/onevox test-vad --duration 10Testing Build Variants:
When contributing changes that affect model backends:
# Test default build (includes both whisper.cpp and ONNX)
cargo build --release
cargo test
./target/release/onevox daemon --foreground
# Test ONNX models specifically
cargo test --release
# Edit config: model_path = "parakeet-ctc-0.6b"
./target/release/onevox daemon --foreground
# Test with GPU features (if available)
cargo build --release --features metal # macOS
cargo build --release --features cuda # NVIDIA
cargo test --features metalWhen adding features:
- Update README.md if it affects user-facing functionality
- Update INSTALLATION.md for setup changes
- Update QUICKREF.md for new commands
- Add inline code comments for complex logic
- Update ARCHITECTURE.md for design changes
Use clear, descriptive commit messages:
Good:
- "Add Windows service management support"
- "Fix audio device enumeration on Linux"
- "Optimize VAD processing for lower latency"
Bad:
- "Fix bug"
- "Update code"
- "Changes"
All submissions require review. We'll provide feedback on:
- Code quality and style
- Test coverage
- Documentation
- Cross-platform compatibility
- Performance implications
- Be respectful and constructive
- Help others in issues and discussions
- Share your use cases and feedback
- Report bugs with detailed information
By contributing, you agree that your contributions will be licensed under the MIT License.
- Open an issue for bugs or feature requests
- Start a discussion for questions or ideas
- Check existing issues before creating new ones
Thank you for contributing to OneVox!