Versioning

Helmhost follows the same layers as Waypoint: MAJOR → era, MINOR → track + codename, PATCH → ship inside that name.

FieldCurrent
Semver (SSOT)VERSION0.1.0
Era (major 0)Lighthouse
CodenameLantern (lantern)
PublicHelmhost Lighthouse — Lantern (v0.1.0)
Mapcodenames.toml

Bump rules

PartMaps toBump when
MAJOREraLeaving Lighthouse (e.g. 1.0.0)
MINOROne track + one codenameStarting next track (new name)
PATCHShip inside same trackBugfix / small ship — same codename
PRERELEASE-dev.N | -rc.NDogfood / candidates

Prerelease ladder: X.Y.Z-dev.1X.Y.Z-rc.1X.Y.Z (tag vX.Y.Z).

Milestone map (0.x)

MinorTrackCodenameTheme
0.1.xfoundationLanternFirst remote desktop light
0.2.xLighthouse 1RangeHub multi-session channel
0.3.xLighthouse 2SectorGrab / InputFocus
0.4.xLighthouse 3BeaconSSH / tunnel approach
0.5.xLighthouse 4BuoySaved host library

CLI

Edit version only through the CLI:

./scripts/hh-version show              # short product line
./scripts/hh-version show -a           # short + labeled fields
./scripts/hh-version show --json       # machine JSON
./scripts/hh-version bump patch
./scripts/hh-version tag               # vX.Y.Z
./scripts/hh-version tag --rc 1        # vX.Y.Z-rc.1
./scripts/hh-version check-tag v0.1.0  # CI: tag must match VERSION

VERSION is the single source of truth. Cargo + Flutter pubspec are mirrors. codenames.toml binds semver ranges to era/codename (baked into show).

Release workflow runs check-tag before build: stable vX.Y.Z and RC vX.Y.Z-rc.N both require VERSION == X.Y.Z.

Short line (default)

Helmhost - Lantern (v0.1.0 - a1b2c3d) - Tuesday, 21 Jul 2026, 05:37 PM +0530

Marketing

Helmhost Lighthouse — Lantern (v0.1.0)

Protocol / clap-style surfaces use semver only (no +build, no quotes).