Releases: dmno-dev/bumpy
@varlock/bumpy v1.18.0
-
#142 (minor)
Add apull_request+workflow_runoption for commenting on fork PRs, so the privileged half never touches fork code.bumpy ci check --emit-comment <dir>renders the release-plan comment to<dir>/comment.mdfor upload as an artifact, and a newbumpy ci comment --body-file <path>posts it from aworkflow_runjob. The target PR is resolved from the trustedworkflow_runevent (head_sha), never from the (untrusted) artifact. -
#133 (minor)
Add snapshot releases — transient, one-off preview publishes for private packages (the private-registry counterpart to pkg.pr.new).bumpy publish --snapshot <name>computes the pending release plan, derives a unique prerelease version per package (e.g.1.4.0-pr-123-a1b2c3d), exact-pins in-plan internal deps, publishes to a non-latestdist-tag (default: the snapshot name), then restores the working tree. It never consumes bump files, writes changelogs, commits, creates git tags, or makes GitHub releases.bumpy ci release --snapshot <name>runs the whole thing and, on a PR, posts/updates a comment with the published versions and install instructions. Requires pending bump files; mutually exclusive with--channel.Version uniqueness is configurable via the new
snapshot.versionStrategyoption:"sha"(default —<target>-<name>-<short-sha>, idempotent per commit so re-runs skip) or"timestamp". Consumers install via the dist-tag regardless, so the exact version string is just an implementation detail.
Published to
- ✅ npm
@varlock/bumpy v1.17.0
- #138 (minor)
Added a global--cwd <dir>flag that runs bumpy as if it were started in<dir>. This makes thepull_request_targetPR-check workflow safe against a previously-undocumented attack: a fork PR could commit abunfig.toml/.npmrcthat redirected wherebunx @varlock/bumpyitself was fetched from (swapping in a malicious package at the pinned version). The recommended workflow now fetches and runs bumpy from a trusted base checkout and points it at the untrusted PR tree with--cwd ./pr, so package-manager config in the PR can no longer influence how bumpy is obtained. - #140 (patch)
bumpy ci checknow fails when it runs underpull_request_targetwithout an explicit--cwd, pointing users at the two-checkout workflow. Pass--cwd .to acknowledge an already-trusted checkout. Markednonebecause it's part of the--cwdfeature already shipping in this release.
Published to
- ✅ npm
@varlock/bumpy v1.16.1
- #136 (patch)
Fixed GitHub release notes coming up empty (No changelog entries.) when the publish ran several commits after the version commit — e.g. a retry after the first publish was blocked and unrelated fixes landed on main. Bump-file recovery assumed the version commit was alwaysHEAD~1..HEAD; it now locates the most recent commit that actually deleted bump files and recovers their content from that commit's parent, so release notes are populated regardless of how far HEAD has moved past versioning.
Published to
- ✅ npm
@varlock/bumpy v1.16.0
- #131 (minor)
Added a$changelog: falsereserved frontmatter key for bump files, which omits a file's body from the changelog and release notes while still applying its version bump. Clearer than relying on a blank body, and lets you keep notes for reviewers. A per-packagechangelog: falseoption in the nested form suppresses the entry for just some of a file's packages.
Published to
- ✅ npm
@varlock/bumpy v1.15.2
@varlock/bumpy v1.15.1
-
#127 (patch)
Streamline agent skill distribution and remove thebumpy aicommand.The canonical
add-changeskill now lives at the repo root (skills/) as a single source of truth and is synced into the package onprepack(gitignored copy), so it ships version-pinned in the npm tarball and via the Claude Code plugin (claude plugin install @varlock/bumpy).The
bumpy ai setupcommand has been removed. Its file-copying targets (opencode,cursor,codex) duplicated the skill into tool-specific directories that drifted from the canonical copy — and had silently been broken in the published package — while theclaudetarget was a thin wrapper aroundclaude plugin install. Install the skill via the Claude Code plugin, or reference the bundledSKILL.mddirectly fromnode_modules/@varlock/bumpy/skills/add-change/SKILL.md.
Published to
- ✅ npm
@varlock/bumpy v1.15.0
-
#120 (minor)
Change detection is nowpackage.json-field-aware: whenpackage.jsonis the only changed file in a package, bumpy diffs it against the base branch and only requires a bump file if a publish-affecting field changed. The newignoredPackageJsonFieldsoption (default["devDependencies"]) controls which fields are ignored, so a dev-only dependency bump (e.g. Dependabot) no longer requires a bump file — unless the changed dep matches the package'sreleaseTriggeringDevDeps.ci checkno longer posts a "you're good to go" comment while exiting 1. When the check fails because changed packages have no bump file, the comment now matches the failing status, lists the uncovered packages, and points at an empty bump file (bumpy add --empty) to acknowledge an intentional no-release.Add a per-package
releaseTriggeringDevDepsoption: names/globs ofdevDependenciesthat affect a package's published output (most often because they're bundled in). A change to one requires a release, and a listed internal workspace dep's own releases cascade with a patch bump — shorthand for acascadeFromrule of{ trigger: 'patch', bumpAs: 'patch' }. -
#122 (patch)
Changelog entries now use a block layout when a summary is multi-line, long (>120 chars), or contains markdown block syntax (headings, lists, blockquotes, code fences, tables). In those cases the entry metadata (*(type)*, PR link, "Thanks @user!") goes on its own line and the summary is rendered indented below it, instead of being jammed onto the same line. Short single-line summaries are unchanged and stay inline. Internal blank lines in a summary are now preserved so markdown paragraphs and lists render correctly. Applies to both the default andgithubformatters. -
#124 (patch)
Label and link npm targets published to GitHub Packages correctly. Packages publishing to a GitHub Packages registry (npm.pkg.github.com) were labellednpmin the GitHub release notes andbumpy status/bumpy ci planoutput, with a "Published to" badge linking to a non-existent npmjs.com page (404). The configured registry is now honoured: such targets are labelled GitHub Packages and link to the package page under the repo (https://github.com/<owner>/<repo>/pkgs/npm/<name>), resolving the repo from the package'srepositoryfield orGITHUB_REPOSITORY. Other custom/private registries no longer emit a dead npmjs.com link.buildPublishUrlnow honours its registry argument (previously the unused_registryparam). -
#125 (patch)
Fix changed-package detection in single-package (non-monorepo) repos. BothfindChangedPackages(used bycheck/ci check) andmapFilesToPackages(used bygenerate) matched changed files againstpkgRelDir + '/', but for the root package the relative dir is empty, so the check becamefile.startsWith('/')— always false for git's relative paths. As a resultci checkalways reported "No managed packages have changed" (never requiring a bump file or posting a PR comment) andgeneratenever attributed commits to the root package. The root package (empty relative dir) now treats every changed file as belonging to it, while still honoringchangedFilePatterns. -
#118 (patch)
StreambuildCommand/publishCommandoutput live to the parent process and surface the child's real failure reason. Custom publish commands (vsce, ovsx, anything bespoke) previously ran through a buffering runner that discarded stdout and never streamed output, so a failure like an expired marketplace token produced only a genericCommand failedwrapper with no usable cause in CI logs. These commands now run through a streaming runner (spawnwith piped+teed stdio) that prints output as it happens and includes both stdout and stderr in the thrown error. The capturingrunAsync/runArgsAsynchelpers (still used for internal git/npm calls whose output is parsed) also now include stdout in their error messages.
Published to
- ✅ npm
@varlock/bumpy v1.14.0
- (minor) - Add prerelease channels — branch-based prerelease lines (e.g.
next→@nextdist-tag) where prerelease versions are never committed to git. Targets derive from bump files, counters from the registry; shipped bump files are tracked by moving them into.bumpy/<channel>/. Includes channel-awareversion/publish/status/ci releaseflows, exact-pinned lockstep cycle publishes, and promotion-by-merge to stable. - #115 (patch) - When a prerelease cycle is promoted (channel → main) or graduated (channel → channel), any lingering release PR on the source channel is now closed automatically with an explanatory comment — merging it would have offered another prerelease of a cycle that already moved on.
- #110 (patch) -
ci checknow reads bump files in channel directories, so promotion PRs (channel → main) and graduation PRs (channel → channel) correctly report the cycle's pending releases instead of failing with "no bump files found". Channel-dir bump files render with their subdir path (next/feature.md) so view/edit links resolve. - (patch) - Channel release PR titles and bodies now show deterministic versions: targets with a wildcard counter (
1.2.0-rc.x) derived purely from committed state, instead of registry-derived counters that could drift between PR creation and publish. Multi-package cycles show a package count in the title instead of an arbitrary lead package. The PR check comment andversionoutput use the same.xwildcard;status/ci planstill show live registry-derived counters (.?when offline). - #110 (patch) - The PR check comment now explicitly calls out promotion PRs (channel → stable): the headline explains that merging ends the prerelease cycle and ships stable, and bump files that already shipped on a channel are annotated with their dist-tag (e.g.
next/feature.md(shipped on@next)).
Published to
- ✅ npm
@varlock/bumpy v1.14.0-rc.1
- #104 (minor) - Add prerelease channels — branch-based prerelease lines (e.g.
next→@nextdist-tag) where prerelease versions are never committed to git. Targets derive from bump files, counters from the registry; shipped bump files are tracked by moving them into.bumpy/<channel>/. Includes channel-awareversion/publish/status/ci releaseflows, exact-pinned lockstep cycle publishes, and promotion-by-merge to stable. - #107 (patch) - Channel release PR titles and bodies now show deterministic versions: targets with a wildcard counter (
1.2.0-rc.x) derived purely from committed state, instead of registry-derived counters that could drift between PR creation and publish. Multi-package cycles show a package count in the title instead of an arbitrary lead package. The PR check comment andversionoutput use the same.xwildcard;status/ci planstill show live registry-derived counters (.?when offline).
Published to
- ✅ npm
@varlock/bumpy v1.14.0-rc.0
- #104 (minor) - Add prerelease channels — branch-based prerelease lines (e.g.
next→@nextdist-tag) where prerelease versions are never committed to git. Targets derive from bump files, counters from the registry; shipped bump files are tracked by moving them into.bumpy/<channel>/. Includes channel-awareversion/publish/status/ci releaseflows, exact-pinned lockstep cycle publishes, and promotion-by-merge to stable.
Published to
- ✅ npm