Releasing Kode
August 27, 2026 ยท View on GitHub
.github/workflows/npm-publish.yml is the only supported publishing path. It
publishes the main package, all native-binary packages, all ripgrep packages,
and the matching GitHub release from one source tag.
One-time repository configuration
- Create a protected GitHub environment named
npmand require release-owner approval. - In npm, configure
.github/workflows/npm-publish.ymlas the trusted GitHub publisher for every@shareai-lab/kode*package. - Protect
mainandv*tags. Require CI and reviewed pull requests. - After one successful OIDC release, remove the legacy
NPM_TOKENsecret and revoke the corresponding npm automation token.
The workflow uses GitHub OIDC (id-token: write) and npm provenance. Publishing
from a workstation is intentionally unsupported.
Release procedure
-
Update
package.jsonand the platform-package manifests together:node scripts/set-version.mjs 2.3.0 -
Open and merge a version-only pull request after CI passes.
-
From the exact merge commit, create and push an annotated tag:
git tag -a v2.3.0 -m "Kode v2.3.0" git push origin v2.3.0 -
Verify the workflow, npm provenance, dist-tags, packaged smoke test, GitHub assets, and
checksums-sha256.txt.
Stable tags such as v2.3.0 publish under latest. SemVer prerelease tags such
as v2.3.0-dev.1 publish under dev and create a GitHub prerelease.
Release invariants
- The tag must exactly equal
v${package.json.version}. - Dependencies install from committed
bun.lockwith--frozen-lockfile. - Format, architecture boundaries, the high/critical dependency audit, types, tests, build, packlist checks, and packaged-install smoke tests pass before publication. Moderate advisories must still be reviewed and documented; they are not silently ignored.
- Platform packages publish before the main package.
- Generated binaries, wrappers, Web UI output, and
dist/**never enter Git. - GitHub Actions are pinned to immutable commit SHAs.
Npm publication is not transactional across packages. If a platform package publish succeeds and a later step fails, do not reuse or overwrite that version; inspect npm state, finish only the missing packages when safe, and document the incident before moving a dist-tag.