2.5 KiB
name, description
| name | description |
|---|---|
| release | Kandev release & versioning conventions — single SemVer across npm, Homebrew, GitHub release. Use when cutting a release, debugging release artifacts, or answering questions about version channels. |
Release & Versioning
Kandev uses a single SemVer X.Y.Z shared across all distribution channels.
Version targets
apps/cli/package.jsonversion →X.Y.Z- npm main package:
kandev@X.Y.Z - npm runtime packages:
@kdlbs/runtime-{platform}@X.Y.Z(5 platforms; declared asoptionalDependenciesin main package) - Git tag:
vX.Y.Z(three-part; legacyvM.mtags normalize toM.m.0) - Homebrew formula:
kdlbs/homebrew-kandevFormula/kandev.rbversion "X.Y.Z" - GitHub release:
vX.Y.Zwith platform tarballskandev-{platform}.tar.gz+.sha256
npm and Homebrew are sibling channels, not chained. Both consume the same GitHub release artifacts; neither depends on the other.
Release flow
Entirely in CI via .github/workflows/release.yml, triggered by a maintainer from the GitHub Actions UI:
- Maintainer clicks "Run workflow" → picks
bump(patch/minor/major) → optionaldry_run,allow_unsigned_desktop, ordesktop_validation_only. preparejob bumps version + regenerates CHANGELOG, opens release PR, squash-merges, tagsvX.Y.Z.build-web+build-cli+build-bundles(5 platforms) build the release artifacts.publish-releasecreates the GitHub release with platform tarballs + sha256 + auto-generated notes.publish-npmpublishes 5@kdlbs/runtime-*packages + mainkandevpackage to npmjs.update-homebrew-tappushes updatedFormula/kandev.rbtokdlbs/homebrew-kandevvia SSH deploy key.
There is no local release script — the entire flow runs in GHA.
allow_unsigned_desktop=true only disables macOS/Windows desktop signing enforcement. It still creates and publishes the normal release outputs unless desktop_validation_only=true is also selected. desktop_validation_only=true builds artifacts from the current workflow ref for maintainer inspection and skips the release PR, tag, GitHub release, npm publish, Homebrew update, and public container tags.
Runtime resolution
In apps/cli/src/runtime.ts, the CLI locates its bundled runtime via:
KANDEV_BUNDLE_DIRenv var (set by Homebrew wrapper, used by tests).- Installed
@kdlbs/runtime-{platform}npm package viarequire.resolve(). --runtime-version <tag>cache fallback (debug only — downloads from GitHub).