Changelog
Zuke isn't one artifact with one version. It's 55 packages
— @zuke/core, the @zuke/cli
command, a generic @zuke/cmd fallback, and 50+ typed
tool wrappers — each published independently to
JSR with its own
semantic version. There is no single "Zuke version", so
this page describes the release model and links to the authoritative notes
rather than duplicating a version history that would go stale.
The release model
Releases are automated end to end by release-please, driven by Zuke's own build. The flow is:
-
Work lands on
masteras Conventional Commits (feat:,fix:,feat!:/BREAKING CHANGE:). -
release-please maintains a single release PR covering
every package with pending changes. It bumps the version in each
package's
deno.json, writes that package's ownCHANGELOG.md, and updates the manifest. -
Merging the release PR tags each release
(
<component>-v<version>) and cuts the GitHub releases. -
Zuke then publishes itself to JSR: the
publishtarget walks the packages core-first and publishes each one whose version isn't yet on JSR. Authentication is OIDC — the JSR package ↔ repo link means no tokens are involved.
Because versions are per-package and each package carries its own changelog, the per-tag entries on the tracker below are the real record.
core-v1.30.2 # @zuke/core
cli-v0.7.0 # @zuke/cli
ai-v1.6.0 # @zuke/ai
Zuke builds, tests, and releases itself — the repository's own
zuke.ts runs the full gate and drives both release-please and
JSR publishing — the same build declares its own pipeline.
Current headline versions
A snapshot of a few key packages. These move independently — this table is a point-in-time reference, not a coupled release set — so always check JSR for the live number of any package.
| Package | Version | Role |
|---|---|---|
@zuke/core | 1.30.2 | the build library — the typed target graph, parameters, secrets, and reporter |
@zuke/cli | 0.7.0 | the zuke command that discovers and runs a build |
@zuke/cmd | 0.3.2 | the generic command wrapper — the fallback for any tool without a dedicated package |
@zuke/deno | 0.6.1 | Deno tool wrapper (DenoTasks) |
@zuke/ai | 1.6.0 | AI-assisted build helpers |
@zuke/console | 1.0.1 | the console reporter |
@zuke/otel | 1.0.1 | OpenTelemetry reporter |
@zuke/core reached its first stable 1.0.0 on
2026-06-22 and follows semantic versioning from there — depend on
^1 with confidence.
How versions move
release-please runs with bump-minor-pre-major enabled, which
changes what a breaking change does depending on whether a package has
reached 1.0:
-
A package still in
0.x(most tool wrappers) takes a minor bump on a breaking change and stays in0.x. Treat any0.xminor as potentially breaking. -
A package that has reached 1.0 —
@zuke/core, plus@zuke/ai,@zuke/console,@zuke/otel, and others — follows full semver: a breaking change bumps the major version.
So a @zuke/core minor is always additive and safe under
^1, whereas a tool wrapper's minor may not be. Pin accordingly.
Where the release notes live
There is no hand-maintained master changelog to read here — the per-package notes are generated, and these are the authoritative sources:
| Source | What it has |
|---|---|
| GitHub Releases | every tagged release, per package, with the generated notes — the primary record of what changed and when |
JSR — @zuke | the live version of every published package, plus its docs and download stats |
Pinning a version
Zuke is imported by URL, so the version is part of the import specifier. For a stable package, tracking a major line gives you fixes and additions automatically; pin an exact version when you need a byte-for-byte reproducible build.
// Track the latest of a major line (recommended):
import { Build, run, target } from "jsr:@zuke/core@^1";
// Or pin an exact version for a fully reproducible build:
import { Build, run, target } from "jsr:@zuke/core@1.30.2"; See Getting started for setting Zuke up in a project, and Tools for the wrapper packages each versioned separately above.