Guide for writing Conventional Commit messages, committing changes, and creating releases in this repository. Use when asked to commit, write a commit message, stage files, push, or create/cut a release.
All commits follow Conventional Commits:
<type>(<scope>): <description>
Types:
| Type | When to use |
|---|---|
feat | New service, new feature, new config capability |
fix | Correcting a bug, misconfiguration, or broken behavior |
chore | Tooling, dependencies, version bumps |
ci | Changes to GitHub Actions workflows or lefthook config |
docs | Documentation only |
refactor | Code/config restructure without behavior change |
Scope is the service folder name or tool involved (e.g. immich, traefik, renovate, mise, cog). Multi-service changes may omit the scope.
Breaking changes are indicated in one of two ways (or both):
! immediately before the colon: feat(traefik)!: remove legacy middleware
A BREAKING CHANGE: footer in the commit body (MUST be uppercase):
feat(traefik): remove legacy middleware
BREAKING CHANGE: chain-auth middleware has been renamed to chain-oauth
| Commit type | Version bump |
|---|---|
fix | PATCH |
feat | MINOR |
BREAKING CHANGE | MAJOR |
feat(radarr): add compose stack with Traefik labels
fix(immich): correct OAuth roleClaim field name