How to Contribute an Issue
If you have found a bug or have a feature request, please open an issue on the GitHub repository.How to Contribute a PR
1. Fork and Clone
- Fork the repository on GitHub
-
Clone your fork locally:
2. Set Up Your Development Environment
Before making changes, ensure you can run the existing test suite successfully.Install Dependencies
Set Up API Keys for Testing
To run the full test suite, you’ll need API keys for various providers. Set these environment variables:3. Run Tests
Verify your setup by running the existing tests:4. Make Your Changes
-
Create a new branch for your feature:
- Make your changes following the existing code style and patterns
- Add tests for your new feature - This is critical!
5. Testing Your Changes
Test Requirements
- Every new feature must have tests
- Follow the testing philosophy in test files (no defensive programming)
- Test both success cases and edge cases
- Ensure your tests work across all applicable providers
Testing Best Practices
- No Exception Hiding: Let exceptions bubble up for diagnosis
- Provider Filtering: Only filter by capabilities (e.g.,
ProviderCaps) - 80/20 Rule: Test common cases across all providers, edge cases on Google only
- No Duplication: Each functionality should be tested in ONE file only
6. Verify Your Changes
Before submitting:-
Run all tests and ensure they pass:
-
Format your code:
-
Analyze your code:
7. Submit Your Pull Request
-
Commit your changes with a clear message:
-
Push to your fork:
-
Open a Pull Request on GitHub with:
- Clear description of what you’ve added/changed
- Reference to any related issues
- Confirmation that all tests pass
- Description of the tests you’ve added
Code Style Guidelines
- Follow Dart conventions and the existing code style
- Use meaningful variable and function names
- Add documentation comments for public APIs
- Keep functions focused and single-purpose
Need Help?
If you have questions:- Check existing issues and discussions
- Review the test files for examples
- Open an issue for clarification

