First off, thank you for considering contributing to Grid Board Tab5! It's people like you that make this project better for everyone.
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
Before creating bug reports, please check existing issues to avoid duplicates. When you create a bug report, include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Provide specific examples
- Describe the behavior you observed and expected
- Include logs and screenshots if possible
- Include your environment details (ESP-IDF version, OS, hardware version)
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion:
- Use a clear and descriptive title
- Provide a step-by-step description of the suggested enhancement
- Provide specific examples to demonstrate the steps
- Describe the current behavior and expected behavior
- Explain why this enhancement would be useful
- Fork the repo and create your branch from
main - If you've added code that should be tested, add tests
- Ensure the test suite passes
- Make sure your code follows the existing code style
- Issue that pull request!
-
Setup Development Environment
git clone https://github.com/yourusername/grid-board-tab5.git cd grid-board-tab5 git checkout -b feature/your-feature-name -
Make Your Changes
- Write clean, commented code
- Follow the existing code style
- Update documentation as needed
- Add tests if applicable
-
Test Your Changes
idf.py build idf.py -p /dev/cu.usbmodem212301 flash monitor
-
Commit Your Changes
git add . git commit -m "Add feature: description of your changes"
-
Push to GitHub
git push origin feature/your-feature-name
- Use 4 spaces for indentation (no tabs)
- Place opening braces on the same line
- Use descriptive variable names
- Add comments for complex logic
- Keep functions small and focused
Example:
void processMessage(const char* message) {
// Process each character in the message
for (int i = 0; message[i] != '\0'; i++) {
// Handle special characters
if (isSpecialChar(message[i])) {
handleSpecialChar(message[i]);
}
}
}- Keep related functionality in the same file
- Use clear, descriptive filenames
- Organize includes: system headers, ESP-IDF headers, project headers
- Use header guards in all .h files
- Document all public functions
- Use clear, concise comments
- Update README.md for user-facing changes
- Include examples where helpful
Before submitting a PR:
- Build Test: Ensure the project builds without warnings
- Flash Test: Verify it flashes successfully to hardware
- Functional Test: Test all affected features
- Edge Cases: Test boundary conditions
- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit the first line to 72 characters or less
- Reference issues and pull requests liberally after the first line
Examples:
Add emoji rendering support for grid cells
- Implement Unicode character detection
- Add emoji-to-grid mapping logic
- Update display refresh for emoji rendering
Fixes #123
When adding new features, maintain the existing project structure:
main/ - Main application code
components/ - Reusable components
docs/ - Documentation files
scripts/ - Build and utility scripts
Feel free to open an issue with your question or reach out to the maintainers.
Contributors will be recognized in the project README and release notes.
Thank you for contributing!