Releases are automated. Pushing a vX.Y.Z tag publishes codeoid to npm with
provenance and opens a
GitHub Release — see .github/workflows/release.yml.
Add an NPM_TOKEN repository secret (Settings → Secrets and variables →
Actions → New repository secret):
- On npmjs.com → Access Tokens → create a Granular (or Automation) token
with publish rights for the
codeoidpackage. - Save it as
NPM_TOKEN.
-
Bump
versioninpackage.json(SemVer). -
Move the
## [Unreleased]notes into a new## [X.Y.Z]section inCHANGELOG.md. -
Open a PR, get CI green, merge to
main. -
Tag from
mainand push (tags are not branch-protected):git checkout main && git pull git tag vX.Y.Z git push origin vX.Y.Z
The workflow then builds the web UI, runs the test suite, verifies the tag matches
package.json, npm publishes, and creates the GitHub Release. Install with:
bun install -g codeoid # or: bunx codeoid- codeoid runs under Bun. The published package ships
src/plus the prebuiltweb/dist, and pointsbinatsrc/cli.ts(Bun executes TypeScript directly — no bundling step, and the web UI path resolves inside the package). - The wire protocol is versioned independently via
PROTOCOL_VERSIONinsrc/protocol/types.ts. Bump it only on wire-breaking changes, and keep it in lockstep with thecodeoid-protocolcrate in codeoid-ui. App versions and the protocol version move independently; the handshake negotiates compatibility.