Thank you for your interest in contributing to BluOS Controller! This document provides guidelines and instructions for contributing.
- Check if the bug has already been reported in Issues
- If not, create a new issue with:
- Clear title and description
- Steps to reproduce
- Expected vs actual behavior
- macOS version and Python version
- Relevant error messages or logs
- Check Issues for existing proposals
- Open a new issue with:
- Clear description of the feature
- Use case and motivation
- Potential implementation approach (if you have ideas)
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature-name - Make your changes:
- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
- Ensure all tests pass
- Commit / PR title: Use Conventional Commits
- Push to your fork:
git push origin feature/your-feature-name - Open a Pull Request: Provide a clear description of changes
PR titles drive automated releases via release-please:
feat:— New featurefix:— Bug fixdocs:— Documentation onlytest:— Test changesrefactor:— Code refactoringchore:/ci:— Maintenance (no release)
Example: feat: add group volume command
CHANGELOG.mdis generated automatically by release-please from your Conventional Commit / PR titles — do not edit it by hand for routine releases. See RELEASING.md.
- Tests added/updated
- Tests pass (
pytest) - Documentation updated if needed
- Descriptive PR title (Conventional Commits)
- Python 3.10+
- macOS (for testing)
- Git
# Clone your fork
git clone git@github.com:YOUR_USERNAME/bluos-controller.git
cd bluos-controller
# Run installation script
./install.sh
# Install test dependencies
pip install -r requirements-test.txt# Run all tests
pytest tests/ -v
# Run with coverage
pytest tests/ --cov=. --cov-report=html
# Run specific test file
pytest tests/test_validators.py -v- Follow PEP 8 style guidelines
- Use type hints for all functions
- Add docstrings to all public functions
- Keep functions focused and small
- Use descriptive variable names
- New features must include tests
- Aim for high test coverage (currently 82%)
- Tests should be fast and isolated
- Use mocking for external dependencies
bluos-controller/
├── main.py # Entry point
├── constants.py # Constants
├── models.py # Data models
├── validators.py # Input validation
├── config.py # Configuration
├── network.py # Network I/O
├── utils.py # Utilities
├── controller.py # Core logic
├── cli.py # CLI interface
├── lsdp.py # LSDP discovery
├── tests/ # Test suite
└── docs/ # Documentation
- Cross-platform support: Windows and Linux implementations
- Additional discovery methods: Alternative to mDNS/LSDP
- Performance improvements: Faster discovery, better caching
- Documentation: Examples, tutorials, video guides
- New features: Open an issue to discuss ideas
- Test coverage: Increase coverage in specific areas
- Error handling: Better error messages and recovery
- Logging: Enhanced structured logging features
- UI improvements: Better CLI output formatting
- Code refactoring: Cleanup and optimization
- Documentation: Additional examples and use cases
- All PRs require review before merging
- Maintainers will review for:
- Code quality and style
- Test coverage
- Documentation updates
- Backward compatibility
- Address feedback promptly
- Squash commits if requested
By contributing, you agree that your contributions will be licensed under the Apache License 2.0, the same license as the project.
- Open an issue for discussion
- Check existing documentation in
docs/ - Review README.md for project overview
- Review SECURITY.md for security policy
Thank you for contributing.