Contributing & Release Process
import { Aside, Steps } from ‘@astrojs/starlight/components’;
Branch Naming
Section titled “Branch Naming”| Pattern | Purpose |
|---|---|
feature/<short-description> | New features or UI enhancements |
fix/<short-description> | Bug fixes |
beta/<short-description> | Release candidates for staging / beta testing |
alpha/<short-description> | Experimental work-in-progress builds |
All of these branch patterns trigger a Docker image build — you get a testable image tagged alpha-<sha> or beta-<sha> automatically. Only main publishes a stable latest image.
PR Title Convention (Conventional Commits)
Section titled “PR Title Convention (Conventional Commits)”PR titles are used to determine the version bump when merged to main. The title must follow the Conventional Commits format:
<type>[optional scope][optional !]: <description>Valid types
Section titled “Valid types”| Type | When to use |
|---|---|
feat | A new feature visible to end-users or API consumers |
fix | A bug fix |
chore | Maintenance tasks (deps update, config changes) |
docs | Documentation-only changes |
style | Formatting changes — no logic change |
refactor | Code restructuring without behaviour change |
perf | Performance improvements |
test | Adding or fixing tests |
build | Build system or tooling changes |
ci | CI/CD workflow changes |
revert | Reverts a previous commit |
Examples
Section titled “Examples”feat: add Withings providerfix(worker): retry token refresh on 401chore: update drizzle to 0.39docs: add contributing guidefeat!: remove legacy v0 API endpointsAutomatic Version Bumps
Section titled “Automatic Version Bumps”When a PR is merged to main, the docker-publish workflow inspects the PR title and bumps the VERSION file automatically:
| PR title | Bump | Example |
|---|---|---|
feat!: … or includes BREAKING CHANGE | major | 1.2.3 → 2.0.0 |
feat: … or feat(scope): … | minor | 1.2.3 → 1.3.0 |
Anything else (fix:, chore:, …) | patch | 1.2.3 → 1.2.4 |
The workflow then:
No manual label-setting, tag-pushing, or package.json editing is required.
The VERSION File
Section titled “The VERSION File”The VERSION file at the repository root is the single source of truth for the release version:
1.0.0- Do not manually edit
VERSION— the release workflow manages it. package.jsonversions in individual apps/packages are not used for Docker image tagging or Helm chart versioning.- If you need to read the current version in a script:
cat VERSION.
Local Development Tips
Section titled “Local Development Tips”# Install all dependenciespnpm install
# Build all packages and appspnpm build
# Start everything in hot-reload modepnpm dev
# Run lintingpnpm lint
# Run testspnpm test
# Typecheckpnpm typecheckBefore opening a PR:
- Run
pnpm lintandpnpm typecheck— both must pass. - Make sure your PR title follows the Conventional Commits format.
- Include tests for new behaviour where practical.