Thank you for your interest in AGI.Kapster! We welcome all forms of contributions.
-
Clone Repository
git clone https://github.com/AGIBuild/AGI.Kapster.git cd AGI.Kapster -
Install Dependencies
- .NET 9.0 SDK
- Visual Studio 2022 / JetBrains Rider / VS Code
-
Build and Test
dotnet restore ./build.ps1
-
Run Application
dotnet run --project src/AGI.Kapster.Desktop
AGI.Kapster/
├── src/AGI.Kapster.Desktop/ # Main application
├── tests/AGI.Kapster.Tests/ # Test projects
├── build/ # Build scripts
├── packaging/ # Package creation scripts
└── docs/ # Documentation
- Models/: Data models and DTOs
- Services/: Business logic and platform abstractions
- ViewModels/: MVVM view models
- Views/: UI definitions (XAML)
- Overlays/: Screenshot overlay windows
- Commands/: Undo/redo functionality
- Rendering/: Graphics rendering
- MVVM Pattern: Using CommunityToolkit.Mvvm
- Dependency Injection: Microsoft.Extensions.DependencyInjection
- Cross-platform UI: Avalonia UI 11.x
- Graphics: SkiaSharp for image processing
- Logging: Serilog for structured logging
- 🐛 Bug Reports: Report issues with detailed reproduction steps
- 💡 Feature Requests: Suggest new features or improvements
- 📖 Documentation: Improve existing documentation
- 💻 Code Contributions: Submit pull requests
- 🌍 Localization: Add or improve translations
- Fork Repository: Create your own fork
- Create Branch:
git checkout -b feature/your-feature-name - Make Changes: Implement your changes
- Run Tests:
./build.ps1 Test - Commit Changes: Use conventional commit format
- Push Changes:
git push origin feature/your-feature-name - Create Pull Request: Submit PR with description
- Follow C# naming conventions
- Use meaningful variable and method names
- Add XML documentation for public APIs
- Prefer synchronous APIs when the codebase uses sync for overlay control and use async/await where naturally asynchronous (I/O, network)
- Handle exceptions appropriately
Use conventional commits:
feat: add new annotation tool
fix: resolve hotkey registration issue
docs: update installation guide
refactor: simplify overlay management
- Use 4 spaces for indentation
- Use PascalCase for public members
- Use camelCase for private members
- Use meaningful names for variables and methods
# Run all tests
./build.ps1 Test
# Run with coverage
./build.ps1 Test -Coverage
# Run specific test
dotnet test tests/AGI.Kapster.Tests --filter "FullyQualifiedName~HotkeyManagerTests"- Unit Tests: Test individual components
- Integration Tests: Test component interactions
- Coverage: Maintain 80%+ code coverage
- Mocking: Use mock services for dependencies
- Code follows project standards
- Tests pass and coverage is maintained
- Documentation is updated if needed
- Commit messages follow conventional format
Include:
- Summary: Brief description of changes
- Type: Bug fix, feature, documentation, etc.
- Testing: How changes were tested
- Breaking Changes: Any breaking changes
- All PRs require review
- Address feedback promptly
- Keep PRs focused and small
- Update documentation as needed
- Check existing issues
- Try latest version
- Search documentation
**Bug Description**
Brief description of the bug
**Steps to Reproduce**
1. Step one
2. Step two
3. Step three
**Expected Behavior**
What should happen
**Actual Behavior**
What actually happens
**Environment**
- OS: Windows 10/macOS 12/Ubuntu 20.04
- Version: v1.0.0
- Architecture: x64/ARM64
**Additional Context**
Any other relevant information- Check existing feature requests
- Consider if feature fits project scope
- Think about implementation complexity
**Feature Description**
Brief description of the feature
**Use Case**
Why is this feature needed?
**Proposed Solution**
How should this feature work?
**Alternatives**
Other ways to achieve the same goal
**Additional Context**
Any other relevant information- API Documentation: XML comments for public APIs
- User Documentation: README, user guides
- Developer Documentation: Architecture, setup guides
- Code Comments: Inline code documentation
- Use clear, concise language
- Include code examples
- Keep documentation up-to-date
- Use consistent formatting
- Create translation files in appropriate directories
- Follow existing naming conventions
- Test translations in target locale
- Update documentation for new languages
- Use professional translation services
- Test with native speakers
- Maintain consistency with existing translations
- Update when source text changes
By contributing to AGI.Kapster, you agree that your contributions will be licensed under the MIT License.
- GitHub Issues: For bugs and feature requests
- Discussions: For questions and general discussion
- Documentation: Check existing docs first
- Be respectful and inclusive
- Focus on constructive feedback
- Help others learn and grow
- Follow GitHub's community guidelines
Thank you for contributing to AGI.Kapster! 🚀