RELEASING.md
Starting with v2.0.63, the goal is to publish a GitHub Release for every package.json version bump that lands on main. Releases are cut manually by a maintainer, so there can be lag between a bump merging and its release being published. The intent is timeliness, not strict 1:1 correlation with every bump.
Each release ships:
main (vX.Y.Z).CHANGELOG.md entry under ## [<version>] - <YYYY-MM-DD>.A release is cut by a maintainer publishing it. The trigger is a package.json bump on main, but the publish step is manual — there is no fixed schedule, and bumps that land back-to-back may be rolled into a single release (as v2.0.55 through v2.0.63 were). Cutting more frequently is preferable to batching: smaller releases are easier to read, pin, and revert.
CHANGELOG.md is the canonical record of user-visible change. The release body on GitHub mirrors it. Aim for:
[BREAKING] prefix for any change that requires user action. Always include the workaround inline — never link to a separate doc for the fix.[setup/lib/install-slug.sh](setup/lib/install-slug.sh)).## Contributors section.package.json and add a CHANGELOG.md entry in the same commit (commit message: chore: bump version to vX.Y.Z).main, open a draft GitHub Release:
vX.Y.Z, target main.vX.Y.Z (bare version — descriptive content lives in the body, matching the CHANGELOG header pattern).## Contributors section listing every PR author who landed work in the release window. Append a **Full Changelog**: https://github.com/nanocoai/nanoclaw/compare/<prev-tag>...vX.Y.Z line at the bottom.## New Contributors section above ## Contributors, with each first-timer's first PR link and an invite to Discord.If multiple package.json bumps land between two GitHub Releases (as happened between v2.0.54 and v2.0.63), the next release is a rollup: its CHANGELOG entry covers everything merged since the last released tag, and the body opens with a one-line "Rollup release covering vX.Y.Z through vX.Y.W." note. After the catchup, return to one release per bump.
NanoClaw currently ships a single channel: every published release is a stable release.
main, shown as "Latest release" on the GitHub Releases page. Consumers that want auto-bump follow GitHub's /releases/latest pointer.If a pre-release channel is introduced later (e.g. vX.Y.Z-rc.N), those releases will be marked "Pre-release" on GitHub so they do not become the latest pointer, and this section will be updated to describe the promotion path.
The tag is the source of truth — a GitHub Release's target_commitish always points to a tagged commit.