# Contributing
## Versioning
A version number tells a consumer what taking the update will do to them, so
each kind of change moves its own digit.
| breaks a consumer's build | the first non-zero digit: the minor while `0.x`, the major from `1.0` |
| changes a look | the minor |
| adds API | the patch |
| fixes a bug and changes no look | the patch |
A look change is anything a consumer would see differently on screen without
touching their own code: a derived colour, a spacing, a default. Its commit
subject starts `look:` and names its before/after render, which the
`commit-msg` hook in `scripts/githooks/` enforces for the paths listed in
`scripts/githooks/look-paths`.
The minor moves for looks and breaks and never for additions, so a consumer
who sees it move knows to look.
Bento's publish preflight checks the bump against the commits since the
previous release tag. A `look:` commit on a release that keeps the minor is
refused. A minor bump with no `look:` commit is published with a warning that
names the commits, since only a break justifies it and the preflight cannot
tell a break from an addition. The marker below opts this repo in.