# Git

## Commits

Format : `<type>(<scope optionnel>) : <message>`
**Espaces obligatoires** autour du `:`.

Types autorises (minuscules uniquement) : `build`, `chore`, `ci`, `docs`, `feat`, `fix`, `perf`, `refactor`, `revert`, `style`, `test`

Exemples :
- `feat : add login page`
- `fix(auth) : prevent null token crash`
- `chore : bump version to v1.2.3`

## Regles de commit

- **Jamais commit sans demande explicite** de l'utilisateur
- **Jamais force push** sans confirmation
- **Jamais modifier la config git**
- **Jamais mentionner Claude, Anthropic ou une IA** dans un commit (message, titre, body, footer, trailer) ou une PR (titre, description). Concretement, aucun des elements suivants ne doit apparaitre :
  - Trailer `Co-Authored-By: Claude <...>` / `Co-Authored-By: Anthropic`
  - Footer type `Generated with Claude Code`, `Generated by AI`, etc.
  - Emoji robot `🤖` ou similaire en tete/fin de message
  - Toute phrase attribuant la paternite du changement a une IA
  Les commits sont signes **uniquement** par l'utilisateur. Si un hook ou un template ajoute ces elements automatiquement, les retirer manuellement avant push.

## Versioning & tags

La version de l'app est dans `config/version.yaml` (parametre `app.version`).

Workflow de release :
1. Bump `config/version.yaml` a la nouvelle version
2. Commit dedie : `chore : bump version to v<X.Y.Z>`
3. Tag : `git tag v<X.Y.Z>`
4. Push : `git push origin develop --tags`

**A chaque creation de tag**, toujours mettre a jour `config/version.yaml` avec la meme version — sinon l'app ne connait pas sa propre version.

CI Gitea automatise le bump sur push `develop` (cf. `.gitea/workflows/`), mais un tag manuel reste possible.
