This repository ships on two channels:
| Channel | Branch | Example version | JSR resolution |
|---|---|---|---|
| Stable | main |
1.198.0 |
jsr:@deco/deco resolves here |
| Prerelease | next |
1.198.0-next.3 |
Opt-in only — must reference explicit version |
Both channels publish all three packages (@deco/deco, @deco/scripts, @deco/dev) together to JSR, plus Docker images on ghcr.io/deco-cx/deco (and …/deno2, …/ai, …/deno2-ai). Prerelease tags do not move the Docker :latest tag.
- Open a PR with
mainas the base. - A bot comments with Patch / Minor / Major options.
- A maintainer (listed in
MAINTAINERS.txt) reacts with 👍 / 🎉 / 🚀. - Merge the PR. The
Release Taggingworkflow bumps the version in the threedeno.jsonfiles, tags the commit, and dispatches the publish workflows. - No reaction = no release.
- Open a PR with
nextas the base. - A bot comments with Prerelease Tagging info.
- Merge the PR. The
Release Taggingworkflow:- Defaults to a patch prerelease (
<latest-stable-patch+1>-next.<N>). - A maintainer reaction overrides the base: 👍 patch / 🎉 minor / 🚀 major.
Nauto-increments from the highest existing<base>-next.*tag (or1if none).
- Defaults to a patch prerelease (
- Every merge to
nextpublishes a prerelease — there is no "no release" path.
JSR has no dist-tags (unlike npm's @next), so consumers opt in explicitly:
Plain jsr:@deco/deco (no version specifier) continues to resolve to the latest stable release.
When a prerelease cycle is ready to ship:
- Open a PR from
nextintomain. - The bot comments with stable bump options.
- A maintainer reacts with the appropriate emoji.
- Merge. The stable
determine-tagjob publishes (e.g.,1.198.0).
next must be protected to match main: require PR review, status checks, no force-push, no direct push. This requires repo-admin privileges and is configured via the GitHub UI / API, not via this repo.
scripts/release.ts exists for local-driven stable releases when the CI flow is unavailable. It does not handle prereleases — use the next branch for those.