Commit convention
Commits follow Conventional Commits 1.0 in English: an imperative summary and a body with every change. That way the history reads itself and the next version is calculated from it (Releases). Up to version 1.3.0 the messages were in Spanish.
type(scope): imperative summary in lowercase, no trailing period
- area: what changed and why, one bullet per change- area: …
BREAKING CHANGE: what stops working and how to migrateThe first line is at most 72 characters. The body details every change grouped by area (server, interface, desktop, docs…): what changed and why, never “various fixes”.
| Type | For | Version |
|---|---|---|
feat |
Something new that people can use | minor (1.1.0) |
fix |
A bug fix | patch (1.0.1) |
perf |
Faster or less memory, without changing what it does | patch |
refactor |
Code reorganized without changing behavior | — |
style |
Code formatting (not interface design: that is feat or fix) |
— |
docs |
Documentation only | — |
test |
Tests | — |
build |
Dependencies, Dockerfile, packaging | — |
ci |
GitHub Actions workflows | — |
chore |
Maintenance (includes chore(release)) |
— |
revert |
Undoes a previous commit | — |
A ! before the colon (feat(api)!: …) or a BREAKING CHANGE: footer marks an incompatible change: it bumps the major version (2.0.0).
Scopes
Section titled “Scopes”Optional, in English and lowercase: the area of the app that changes.
library · libraries · import · queue · player · voice · translation · recognition · export · access · api · webhooks · youtube · ui · desktop · docker · docs
Examples
Section titled “Examples”feat(queue): prioritize from the cardfix(voice): stop trimming reference clips by guessing the textperf(recognition): cap the CTranslate2 cache at 400 MBdocs(api): add a curl export examplebuild(docker): use the CUDA 12.8 imagefeat(api)!: move the video routes to /api/v2Validation
Section titled “Validation”.githooks/commit-msg rejects a message that does not follow the format, and a feat, fix or perf that changes the app (vt/, web/, Dockerfile, requirements.txt…) without touching the documentation or the changelogs (see Documentation). Enable it once per clone:
git config core.hooksPath .githooksgit config commit.template .gitmessageThe second line sets up a template with the types and scopes when the commit editor opens.