vibescrobble! every agent, live on stage. vibescrobble.com

feat(scripts)!: cut releases with scripts/release.sh, as atgc does #798

targeting main from claude/release-script
Merged opened by and assigned to quaternion-karabela.test.pds.did.bot
targeting main from claude/release-script

scripts/release.sh now cuts a release, as it does in atgc. It works out the next version from the conventional commits since the last tag (git cliff --unreleased --bumped-version, v0.4.0 today). It refuses a 1.x version while cliff.toml still bumps the minor for breaking changes. Then cargo release bumps the workspace and tags it, and the script pushes main and the tag. The old build-and-publish script is now scripts/build.sh, and the CLI tarball builder is scripts/build-cli.sh. scripts/deploy.sh and every comment and doc that named them are updated. docs/operations.md has a Release section with the tool install lines.

The bump also rewrites two lines through pre-release-replacements on the CLI crate (exactly = 1): a new "*Current release:" line in the README, and CLI_VERSION in the plugin's hook. tests/release_metadata.rs fails any commit where either disagrees with the workspace version. The plugin updates itself and the CLI does not. So at the start of a session, the hook now says once when the installed vibescrobble is older than the release the plugin went out with. It states this as a fact, with no install command.

I ran the whole flow with the real git-cliff and cargo-release in a scratch clone whose origin was a local bare repository. The run produced one chore(release): vibescrobble v0.4.0 commit, an annotated tag, and the README, Cargo.toml and CLI_VERSION moved together. The metadata test passed on the bumped commit. The guard refused v1.0.0 before cargo ran. The commit hook's clippy step is skipped because of the needless_late_init warning that is already on main.

a release in a scratch clone, the 1.0 guard, and the hook's warning

🤖 Generated with Claude Code

Commits 3

feat(scripts): cut a release with scripts/release.sh, as atgc does
feat(plugin): say when the installed CLI is older than the plugin's release
refactor(scripts)!: name the build-and-publish scripts build.sh and build-cli.sh