Thank you for your interest in contributing to Commitify! We welcome contributions from the community and are pleased to have you aboard.
- Code of Conduct
- Getting Started
- Development Setup
- How to Contribute
- Pull Request Process
- Coding Standards
- Testing Guidelines
- Issue Guidelines
- Feature Requests
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to the project maintainers.
- Be respectful and inclusive
- Exercise empathy and kindness
- Focus on what is best for the community
- Show courtesy and respect towards differing viewpoints
- Accept constructive criticism gracefully
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/your-username/commitify.git cd commitify - Add upstream remote:
git remote add upstream https://github.com/original-owner/commitify.git
- Install dependencies:
npm install
- Compile the project:
npm run compile
- Open the project in VS Code
- Press
F5to launch the Extension Development Host - The extension will be available in the new VS Code window
- Test your changes by staging files and clicking the generate button
commitify/
├── src/ # TypeScript source files
│ ├── extension.ts # Main extension entry point
│ ├── ollama.ts # Ollama service and API integration
│ ├── git.ts # Git operations and file processing
│ └── settings.ts # Settings webview provider
├── media/ # Static assets
│ └── settings.html # Settings UI
├── out/ # Compiled JavaScript (generated)
├── .vscode/ # VS Code configuration
├── package.json # Extension manifest and dependencies
├── tsconfig.json # TypeScript configuration
└── README.md # Project documentation
- Extension.ts: Main activation logic and command registration
- Ollama.ts: Handles Ollama communication, model management, and installation detection
- Git.ts: Git operations, diff processing, and file analysis
- Settings.ts: Webview provider for the settings UI
We welcome several types of contributions:
- 🐛 Bug fixes
- ✨ New features
- 📝 Documentation improvements
- 🧪 Tests
- 🎨 UI/UX improvements
- 🔧 Code refactoring
- 🌐 Translations
- Check existing issues to see if someone is already working on it
- Create an issue for new features or major changes
- Discuss your approach with maintainers before starting work
- Keep changes focused - one pull request per feature/fix
-
Create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes following our coding standards
-
Test your changes:
npm run compile npm run test # When tests are available
-
Update documentation if needed
-
Commit your changes using conventional commits:
git commit -m "feat(ollama): add support for custom models"
-
Push your branch:
git push origin feature/your-feature-name
-
Create a Pull Request on GitHub with:
- Clear title and description
- Reference to related issues
- Screenshots/GIFs for UI changes
- List of changes made
-
Ensure all checks pass:
- Code compiles without errors
- No TypeScript errors
- Follows coding standards
- Automated checks must pass
- Code review by maintainers
- Address feedback promptly
- Squash commits if requested
- Merge when approved
- Use TypeScript strict mode
- Provide explicit types for function parameters and returns
- Use interfaces for object shapes
- Follow camelCase for variables and functions
- Use PascalCase for classes and interfaces
- Indentation: 4 spaces
- Line length: 100 characters max
- Semicolons: Required
- Quotes: Single quotes preferred
- Trailing commas: Use in multiline structures
interface CommitConfig {
model: string;
maxLength: number;
includeBody: boolean;
}
class OllamaService {
private config: CommitConfig;
constructor(config: CommitConfig) {
this.config = config;
}
async generateMessage(summaries: string[]): Promise<string> {
const prompt = this.buildPrompt(summaries);
return await this.callOllama(prompt);
}
}- One class per file when possible
- Export at bottom of file
- Import order: External libraries, then internal modules
- Group related functions together
For now, we rely on manual testing. When testing your changes:
- Test with different models (qwen3:4b, codellama, etc.)
- Test with various file types (.ts, .js, .py, .md, etc.)
- Test edge cases:
- Large diffs
- Binary files
- No staged changes
- Ollama not running
- Network errors
- Fresh installation without Ollama
- Model pulling and management
- Settings persistence across VS Code restarts
- Error handling for various failure modes
- Performance with large repositories
When reporting bugs, please include:
- VS Code version
- Commitify version
- Operating system
- Ollama version and model
- Steps to reproduce
- Expected vs actual behavior
- Error messages or logs
- Screenshots if applicable
**Environment:**
- VS Code Version: 1.85.0
- Commitify Version: 0.0.1
- OS: Windows 11
- Ollama Version: 0.1.0
- Model: qwen3:4b
**Steps to Reproduce:**
1. Stage files with changes
2. Click generate button
3. ...
**Expected Behavior:**
Commit message should be generated
**Actual Behavior:**
Error message appears: "Cannot connect to Ollama"
**Logs/Screenshots:**
[Attach relevant logs or screenshots]- Search existing issues for similar requests
- Consider the scope - is this useful for most users?
- Think about implementation - is it technically feasible?
**Feature Description:**
Brief description of the feature
**Use Case:**
Why would this feature be useful?
**Proposed Solution:**
How should this feature work?
**Alternatives Considered:**
Other approaches you've thought about
**Additional Context:**
Any other relevant information- Update model list in
settings.html - Add model-specific configuration in
ollama.ts - Test with the new model
- Update documentation
- Add to
package.jsoncontributions - Update settings UI in
media/settings.html - Handle in
settings.ts - Use in relevant service classes
- Document in README
- Identify error scenarios
- Add appropriate try-catch blocks
- Provide user-friendly error messages
- Consider recovery strategies
- Test error paths
- GitHub Issues: For bugs and feature requests
- GitHub Discussions: For questions and general discussion
- Code Comments: For understanding specific implementation details
- Be specific about your question or problem
- Provide context about what you're trying to achieve
- Include relevant code snippets when applicable
- Be patient - maintainers are volunteers
Contributors will be recognized in:
- README.md contributors section
- Release notes for significant contributions
- GitHub contributors page
By contributing to Commitify, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to Commitify! Your efforts help make AI-powered commit messages accessible to developers everywhere. 🚀