Thank you for your interest in contributing to the LumiFur Controller project! We appreciate your time and effort in helping make this protogen LED matrix controller even better. Every contribution, whether it's a bug fix, feature enhancement, documentation improvement, or even just reporting an issue, helps improve the project for everyone in the community.
If you encounter a bug or unexpected behavior, please help us fix it by creating a detailed bug report:
- Search existing issues first to see if the bug has already been reported
- Create a new issue using our Bug Report template
- Provide detailed information including:
- Clear description of the bug
- Steps to reproduce the issue
- Expected vs actual behavior
- Hardware setup (ESP32 board, LED matrix configuration)
- Software environment (PlatformIO version, library versions)
- Screenshots or videos if applicable
Have an idea for a new feature or enhancement? We'd love to hear about it!
- Search existing issues to see if the feature has already been requested
- Create a new issue using our Feature Request template
- Describe your idea including:
- What problem the feature would solve
- How you envision it working
- Any additional context or examples
Ready to contribute code? Awesome! Here's how to get started:
- Navigate to the LumiFur_Controller repository
- Click the "Fork" button in the top-right corner
- This creates your own copy of the repository under your GitHub account
git clone https://github.com/YOUR_USERNAME/LumiFur_Controller.git
cd LumiFur_ControllerEnsure you have the required tools installed:
- PlatformIO (with VSCode extension recommended)
- Git
- GitHub Copilot (recommended for enhanced development experience)
The project will automatically handle library dependencies defined in platformio.ini.
This project includes comprehensive GitHub Copilot instructions to help you develop more efficiently:
- Review Instructions: Check
.github/copilot-instructions.mdfor detailed project context - Usage Guide: See
docs/COPILOT_USAGE.mdfor development workflow tips - Chat Instructions: Use
.github/copilot-chat-instructions.mdfor focused assistance
Copilot understands our embedded C++ patterns, ESP32 constraints, and PlatformIO build system, making it an excellent tool for both new contributors and experienced developers.
Create a new branch for your changes with a descriptive name:
# For bug fixes
git checkout -b fix/issue-description
# For new features
git checkout -b feature/feature-description
# For documentation updates
git checkout -b docs/update-description
# Examples:
git checkout -b fix/bluetooth-connection-timeout
git checkout -b feature/new-facial-expression
git checkout -b docs/update-installation-guideBefore making changes, ensure all tests pass:
# Run unit tests for native environment
pio test -e native
# Run tests with coverage
pio test -e native2
# For hardware-specific tests (if available)
pio test -e adafruit_matrixportal_esp32s3If you encounter test failures not related to your changes, please report them as separate issues.
- Write clean, readable code that follows the existing code style
- Add comments where necessary to explain complex logic
- Test your changes thoroughly on actual hardware when possible
- Update documentation if your changes affect user-facing functionality
- Add or update tests to cover your new code
- Follow existing naming conventions
- Use consistent indentation (spaces vs tabs as per existing files)
- Keep functions focused and reasonably sized
- Add meaningful comments for complex hardware interactions
Before submitting your pull request:
# Build for your target environment
pio run -e adafruit_matrixportal_esp32s3
# Run tests
pio test
# Test on actual hardware if possible
pio run -e adafruit_matrixportal_esp32s3 -t uploadWrite clear, descriptive commit messages:
git add .
git commit -m "Fix: Resolve Bluetooth connection timeout issue
- Increase connection timeout from 5s to 15s
- Add retry logic for failed connections
- Update error messaging for connection failures
Fixes #123"Before submitting your pull request, make sure your branch is up to date:
# Add the original repository as upstream
git remote add upstream https://github.com/stef1949/LumiFur_Controller.git
# Fetch latest changes
git fetch upstream
# Rebase your branch onto the latest main
git rebase upstream/mainIf there are conflicts, resolve them and continue the rebase:
git add .
git rebase --continue-
Push your branch to your fork:
git push origin your-branch-name
-
Create a pull request from your fork to the main repository:
- Go to your fork on GitHub
- Click "New Pull Request"
- Select your branch and the main repository's
mainbranch - Fill out the pull request template with:
- Clear description of changes
- Link to related issues
- Testing performed
- Screenshots/videos for UI changes
-
Respond to feedback and make requested changes if needed
If the main branch receives updates while your PR is open:
# Fetch and rebase onto latest main
git fetch upstream
git rebase upstream/main
# Force push to update your PR (safe for PRs)
git push --force-with-lease origin your-branch-nameThis project uses multiple testing frameworks:
- Unity for embedded unit testing
- GoogleTest for native testing
- Coverage analysis for code quality
When adding new features:
- Write unit tests for core functionality
- Test on actual hardware when possible
- Include edge case testing
- One feature per PR - keep changes focused and atomic
- Update documentation for user-facing changes
- Add tests for new functionality
- Follow the existing code style
- Write descriptive commit messages
- Reference related issues using keywords like "Fixes #123"
Need help or have questions?
- Check existing issues and discussions
- Create a new issue with the "question" label
- Join community discussions in the project's issue tracker
This project follows our Code of Conduct. By participating, you agree to uphold this code. Please report unacceptable behavior to the project maintainers.