Getting Started
1. Fork and Clone
Fork the repository and clone your fork locally:2. Create a Branch
Create a branch with a descriptive name:feat/brief-descriptionfor new featuresfix/brief-descriptionfor bug fixesdocs/brief-descriptionfor documentation changesrefactor/brief-descriptionfor code refactoring
Development Setup
Prerequisites
- Dart SDK (^3.5.0)
- Git installed and configured
Installation
Install dependencies:gitwhisper command.
Making Changes
1. Write Your Code
Follow the existing code style and patterns:- Follow Dartβs official style guide
- This project uses very_good_analysis for linting
- Add comments for complex logic
- Keep functions focused and single-purpose
2. Run Tests
Ensure nothing breaks:3. Run Analysis
Run static analysis before committing:4. Test Manually
Test your changes in real scenarios:5. Update Documentation
If youβre adding new features or changing behavior:- Update the README.md
- Add/update code comments
- Update relevant documentation pages
- Add examples if applicable
Code Style
Dart Style Guide
- Use
lowerCamelCasefor variables and functions - Use
UpperCamelCasefor classes and types - Use
lowercase_with_underscoresfor libraries and files - Always use trailing commas for better diffs
- Prefer
finalovervarwhere possible
Linting
This project uses very_good_analysis:Example Code Pattern
Commit Messages
We use conventional commits with emojis (itβs what GitWhisper does!):feat: β¨ Add new featurefix: π Fix bug descriptiondocs: π Update documentationtest: π§ͺ Add or update testsrefactor: β»οΈ Refactor codechore: π§ Update build or dependenciesperf: β‘ Performance improvementsci: π· CI/CD changes
Pull Request Process
1. Open a PR
Open a Pull Request against themaster branch:
- Use a clear, descriptive title
- Follow the PR template if one exists
- Link related issues using keywords (Fixes #123, Closes #456)
2. Describe Your Changes
Explain what you changed and why:3. Reference Related Issues
Link to any related issues:Fixes #123- Closes the issue when PR is mergedRelates to #456- References without closingPart of #789- Part of a larger issue
4. Ensure CI Passes
All tests and checks must pass:- β Tests pass
- β Analysis passes with no warnings
- β Code coverage maintained
- β Build succeeds
5. Respond to Feedback
Be open to suggestions and changes:- Respond to review comments promptly
- Make requested changes
- Explain your reasoning when necessary
- Be respectful and professional
Hacktoberfest
If your PR is for Hacktoberfest, mentionhacktoberfest in the PR description.
What to Contribute
We welcome contributions of all kinds:π Bug Fixes
Help us squash bugs! Check the issues labeled βbugβ.β¨ New Features
Have an idea? Letβs discuss it first:- Open an issue describing your feature
- Wait for feedback from maintainers
- Start implementing once approved
π Documentation
Improvements to:- README.md
- Code comments
- Examples and tutorials
- API documentation
π§ͺ Tests
More test coverage is always appreciated:- Unit tests for new features
- Integration tests
- Edge case testing
- Performance testing
π Translations
Add support for more languages:- Update the
Languageenum inlib/src/models/language.dart - Add language name and country code
- Test with the new language
π€ Model Support
Add support for new AI models:- Create a new generator class (e.g.,
YourModelGenerator) - Implement the
CommitGeneratorinterface - Add model variants to
model_variants.dart - Update the factory in
commit_generator_factory.dart - Add tests
- Update documentation
Areas That Need Help
- Additional test coverage
- Performance optimizations
- Better error handling and user feedback
- Support for more AI models and variants
- Integration with CI/CD platforms
- Plugin support for more editors
Guidelines
Keep Changes Focused
Small, incremental changes are easier to review:- β One feature or fix per PR
- β Related changes grouped together
- β Mixing unrelated changes
- β Massive PRs with dozens of files
One Feature Per PR
Donβt bundle unrelated changes:Test Your Changes
Ensure everything works:- Run all tests
- Test manually with different scenarios
- Test edge cases
- Verify error handling
Be Respectful
See CODE_OF_CONDUCT.md for community guidelines:- Be welcoming and inclusive
- Be respectful of differing viewpoints
- Accept constructive criticism gracefully
- Focus on whatβs best for the community
Project Structure
Development Workflow
- Fork and clone the repository
- Create a feature branch from
master - Make your changes following our guidelines
- Test thoroughly (automated and manual)
- Commit using conventional commits (use GitWhisper!)
- Push to your fork
- Open a Pull Request with a clear description
- Respond to reviews and make requested changes
- Celebrate when your PR is merged! π
Getting Help
If you have questions or need help:- Open an issue for discussion
- Ask in your PR if you need guidance during development
- Check existing issues for similar questions
- Join discussions in GitHub Discussions
Resources
- Dart Language Tour
- Effective Dart
- Dart Package Layout
- Conventional Commits
- How to Write a Git Commit Message
Recognition
All contributors will be:- Added to the contributors list
- Acknowledged in release notes
- Celebrated in the community