Release Process
Tagging
LabTether uses calendar-based version names (e.g. v2026.1). Releases are coordinated across multiple repos -- hub, labtether-agent, protocol, mac-agent, and win-agent are all tagged together.
Tag and push all repos simultaneously:
./scripts/release-all.sh v2026.1 --dry-run # preview
./scripts/release-all.sh v2026.1 --push # execute
iOS, website, and CLI repos are excluded from coordinated tagging and release independently.
Before tagging, complete the full Pre-Release Checklist.
CI validation
CI runs the following checks before a release is publishable:
make fmt-- code formattingmake lint-- static analysismake test-- unit and integration testscd web/console && npx tsc --noEmit-- console type-checkmake smoke-test-- end-to-end smoke test against a running stack
All five gates must pass. A desktop smoke test is also required when desktop workflows are affected:
LABTETHER_DESKTOP_SMOKE_TARGET=<asset-id> make desktop-smoke-test
Artifact publishing
Release artifacts include:
- Docker images -- hub and supporting services, tagged with the release version
- Agent binaries -- cross-platform endpoint-agent artifacts for Linux and Windows, plus the separately packaged macOS agent. FreeBSD is compile-checked in CI but is not a published release artifact.
- Release notes --
CHANGELOG.mdor GitHub Release body
For public releases, the following must also be present in the repository root:
README.mdLICENSECHANGELOG.mdKNOWN_ISSUES.mdSUPPORT.mdPRIVACY.md(when distributing native/mobile binaries)
Post-release
- Verify published Docker images pull and start correctly:
./scripts/install-compose.sh --version vX.Y.Z
make smoke-test
- Confirm release assets are attached to the GitHub Release.
- Verify the Platform Support reference reflects the new version.
- Update documentation for any user-visible changes shipped in the release.
- Confirm
KNOWN_ISSUES.mdis current -- close resolved items, add new ones.