Knowledge Hub
Comprehensive guides and references for the OpenFrame platform
OpenFrame Gen1 is Here · Our AI platform for autonomous IT is out of beta.
Comprehensive guides and references for the OpenFrame platform
Versioning is fully automated by
semantic-release — there is no manual
version input anywhere. The version is computed from the Conventional
Commits on main since the last release tag:
| Commit subject | Effect |
|---|---|
fix: …, fix(scope): … |
patch bump |
feat: … |
minor bump |
feat!: …, or a BREAKING CHANGE: footer |
major bump |
chore:, docs:, refactor:, ci:, test:, free-form |
no release |
This repo squash-merges PRs, so the analyzed commit subjects are PR titles. pr-title.yml lints every PR title into the conventional format — a free-form title would otherwise silently contribute nothing to any release.
develop into main (or push to main).semantic-release --dry-run resolves the next version from the
commits. No release-worthy commits → the run ends here as a no-op.semantic-release creates and pushes the bare x.y.z tag, and
GoReleaser builds, signs and publishes the GitHub Release against it.workflow_dispatch on main just re-evaluates the same rules (useful to
retry after a rolled-back failure). Dispatching from any other branch fails
the guard step by design.x.y.z (tagFormat in .releaserc.yml):
the self-updater and wsllauncher download
releases/download/<x.y.z>/… URLs with no v prefix..github/workflows/release.yml and run from
main: the self-updater pins the cosign signing identity to
release.yml@refs/heads/main (internal/shared/selfupdate/cosign.go).changelog.use: github-native); semantic-release deliberately has no github/notes plugin.Release notes (categorized, label-based, per PR) and release versions (conventional-commit types) are thus decoupled: labels shape the changelog, types shape the version.
Binary signing is documented in release-signing.md.