We use a Git Flow branching strategy to ensure organized development and stable releases.
main- Stable releases only. All code here should be production-ready.develop- Active development branch. All features merge here first.feature/*- Individual feature branches (e.g.,feature/clipboard-sync)hotfix/*- Critical fixes that need to go directly to main
# Make sure you're on develop and it's up to date
git checkout develop
git pull origin develop
# Create a new feature branch
git checkout -b feature/your-feature-name
# Push the branch to GitHub
git push -u origin feature/your-feature-name# Make your changes and commit regularly
git add .
git commit -m "Add clipboard sync protocol messages"
# Push changes to your feature branch
git push origin feature/your-feature-name-
Create a Pull Request from
feature/your-feature-name→develop -
Fill out the PR template with:
- Description of changes
- Testing performed
- Screenshots/videos if UI changes
- Related issues
-
Wait for review and address any feedback
-
Merge to develop once approved
- Create a Pull Request from
develop→main - Full testing on all platforms
- Version bump and changelog update
- Merge and tag for release
Let's implement clipboard sync as an example:
# Start the feature
git checkout develop
git pull origin develop
git checkout -b feature/clipboard-sync
git push -u origin feature/clipboard-sync
# Work on the feature...
# (implement clipboard sync functionality)
# Commit your work
git add .
git commit -m "Implement clipboard sync with Apollo protocol"
git push origin feature/clipboard-sync
# Create PR: feature/clipboard-sync → develop
# After review and approval, merge to develop
# Later, when ready for release:
# Create PR: develop → main
# Tag release after merge- Test workflow runs on pushes to
developand all PRs - Build workflow runs on pushes to
mainand release creation - All platforms (Windows, macOS, Linux, Steam Deck) are tested
- Steam Deck: Optimized build with embedded config
- Windows: x64 and ARM64 portable packages
- macOS: Universal DMG
- Linux: AppImage for broad compatibility
- Steam Link: Dedicated build
Use conventional commits format:
type(scope): brief description
feat(clipboard): add clipboard sync functionality
fix(ui): resolve settings dialog crash
docs(readme): update installation instructions
- Follow existing Qt/C++ conventions in the codebase
- Use meaningful variable and function names
- Comment complex logic
- Keep functions focused and reasonably sized
- Test your changes on at least one platform locally
- Include unit tests for new functionality when applicable
- Verify UI changes work across different screen sizes
- Test with both Apollo and Sunshine servers when relevant
- Study Android implementation - Check
artemis-androidfor reference - Understand protocol - Review how Apollo/Sunshine handle the feature
- Plan Qt integration - Consider Qt-specific APIs and patterns
- Start with backend - Implement protocol/networking changes
- Add UI controls - Create settings and user interfaces
- Test thoroughly - Verify functionality across platforms
- Document changes - Update relevant documentation
- Self-review - Check your own code before submitting
- Test build - Ensure CI passes on all platforms
- Update docs - Include user-facing documentation
- Respond to feedback - Address review comments promptly
- Discord: Join the community discussions
- Issues: Create GitHub issues for bugs or feature requests
- Discussions: Use GitHub Discussions for questions
- Code Review: Ask for help during PR reviews
Thank you for contributing to Artemis Qt! 🚀