Conventional Commits Guide¶
This project follows the Conventional Commits specification to enable automated changelog generation.
Commit Message Format¶
Types¶
- feat: A new feature
- fix: A bug fix
- docs: Documentation only changes
- style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
- refactor: A code change that neither fixes a bug nor adds a feature
- perf: A code change that improves performance
- test: Adding missing tests or correcting existing tests
- build: Changes that affect the build system or external dependencies
- ci: Changes to our CI configuration files and scripts
- chore: Other changes that don't modify src or test files
Examples¶
Features¶
feat: add support for SWAP version 4.3.0
feat(cli): add --in-place option to init command
feat(models)!: breaking change to Model API
Bug Fixes¶
fix: handle missing crop parameters gracefully
fix(parser): resolve issue with date parsing in SWAP files
Documentation¶
Refactoring¶
Breaking Changes¶
For breaking changes, add ! after the type/scope:
Scopes¶
Common scopes in this project:
cli- Command line interfacemodels- Core model classesutils- Utility functionsparser- File parsing logicdb- Database operationsapi- Public APIdocs- Documentationtests- Test files
Automated Processing¶
When you push to main, the following happens automatically:
- Changelog Generation: Commits are analyzed and grouped by type
- Version Bumping: Based on commit types (feat = minor, fix = patch, breaking = major)
- Release Creation: GitHub release with generated changelog
- PyPI Publishing: Package uploaded to PyPI
Preview Changelog¶
Before pushing, you can preview what the changelog will look like: