···11+# Contributing
22+33+Intrepid Ibex uses Changesets to track release intent and update the app version.
44+55+## Versioning
66+77+The current app is version `1.0.0`.
88+99+Use semantic versioning:
1010+1111+- `patch`: bug fixes, small visual fixes, copy changes, and internal maintenance.
1212+- `minor`: new user-facing features that preserve existing behavior.
1313+- `major`: breaking route, data, storage, or workflow changes.
1414+1515+This is a private static app, not an npm package. Changesets is still used to keep `package.json` and the changelog honest.
1616+1717+## Adding a Changeset
1818+1919+When a pull request changes user-visible behavior, data behavior, routes, build output, or public docs, add a changeset:
2020+2121+```sh
2222+pnpm changeset
2323+```
2424+2525+Pick `intrepid-ibex`, choose the bump type, and write a short summary in user-facing terms.
2626+2727+Do not add a changeset for:
2828+2929+- test-only changes
3030+- local tooling tweaks with no user-facing effect
3131+- refactors that do not change behavior
3232+3333+When in doubt, add a patch changeset. It is cheaper to have a clear changelog entry than
3434+to lose release context.
3535+3636+## Cutting a Version
3737+3838+To prepare a release:
3939+4040+```sh
4141+pnpm version
4242+```
4343+4444+That runs `changeset version`, consumes pending files in `.changeset/`, updates
4545+`package.json`, and updates the changelog.
4646+4747+Then run the normal checks:
4848+4949+```sh
5050+pnpm check
5151+pnpm test:unit
5252+pnpm build
5353+```
5454+5555+Commit the version changes with the source changes they describe. Do not publish to npm.
5656+5757+## Display Versions
5858+5959+The app may display a build label like:
6060+6161+```text
6262+v1.0.0.dev-47+gc125759
6363+```
6464+6565+The base `1.0.0` comes from `package.json`. The `dev` count and git hash should be generated at build time from git metadata.