Skip to content

fix(release): move off the shipx that dropped Cargo bumps from the release commit - #925

Merged
lacymorrow merged 1 commit into
mainfrom
fix/shipx-release-tooling
Oct 31, 2026
Merged

lacymorrow merged 1 commit into
mainfrom
fix/shipx-release-tooling

Conversation

@lacymorrow

Copy link
Copy Markdown
Owner

What was broken

The @lacymorrow/shipx devDependency range was ^0.1.2, so the lockfile stayed on 0.1.17. bun run release puts node_modules/.bin ahead of PATH, so it ran that copy rather than the newer global install (0.1.24).

0.1.17 ran cargo set-version --workspace from src-tauri and then staged only the src-tauri directory. Cargo resolves upward to the workspace root, which in this repo is the repo root, so one command rewrote all four members plus Cargo.lock. The two members outside src-tauri never made it into the release commit or tag:

crate path staged by 0.1.17
juno src-tauri/Cargo.toml yes
computer-use-ai-sdk src-tauri/mcp-server-os-level/ yes
juno-cua crates/juno-cua/ no
tauri-plugin-voice-transcription tauri-plugin-voice-transcription/ no

That is how cua-v0.8.0 and cua-v0.8.1 got tagged with stale crate versions. It stayed quiet because the next commit of any kind swept the leftover files up, so a release left behind what looked like ordinary post-release churn.

A second defect rode along: with githubRelease: false and homebrew: false, 0.1.17 printed CI-handled (via tag push): ... and exited 0 no matter what CI did. Both cua releases failed while shipx reported clean.

The fix

Raise the floor to ^0.1.27 and refresh the lockfile. shipx 0.1.23 fixed both:

  • shipx#58 (PR shipx#60) asks git which Cargo files the bump actually rewrote instead of assuming the directory it ran in.
  • shipx#59 watches the v* and cua-v* runs the tag push triggers and fails the release when they fail. Opt out per run with --no-watch-ci.

Also named the demo cohort input after the release the build came from, which is the convention already in use, so the label says which Anthropic key to revoke with it.

Verification

cargo set-version --workspace 0.8.113 from src-tauri, on this branch:

Upgrading computer-use-ai-sdk from 0.8.112 to 0.8.113
Upgrading juno from 0.8.112 to 0.8.113
Upgrading juno-cua from 0.8.112 to 0.8.113
Upgrading tauri-plugin-voice-transcription from 0.8.112 to 0.8.113

git status --porcelain then reported exactly the five paths 0.1.27 stages, all matching its Cargo.(toml|lock) filter:

 M Cargo.lock
 M crates/juno-cua/Cargo.toml
 M src-tauri/Cargo.toml
 M src-tauri/mcp-server-os-level/Cargo.toml
 M tauri-plugin-voice-transcription/Cargo.toml

The test bump was reverted; the diff here is three files. ./node_modules/.bin/shipx --help reports v0.1.27 and lists --no-watch-ci. actionlint parses the workflow (its one SC2129 style note is pre-existing on an unrelated step).

No Rust or frontend source changed. The dependency is a release-time CLI only.

Note

Versions are currently in sync at 0.8.112, because releases since have been running the global 0.1.24. This closes the gap so the repo-local copy cannot reintroduce it. The historical cua-v0.8.1 tag still carries crates/juno-cua/Cargo.toml at 0.8.0; it is 111 patch versions behind and not worth re-cutting.

…lease commit

The devDependency range was "^0.1.2", so the lockfile stayed on shipx
0.1.17 and `bun run release` picked that up from node_modules/.bin ahead
of the newer global install. 0.1.17 ran `cargo set-version --workspace`
from src-tauri and then staged only the src-tauri directory. Cargo
resolves upward to the workspace root at the repo root, so the bump
rewrote all four members plus Cargo.lock, and the two members outside
src-tauri (crates/juno-cua, tauri-plugin-voice-transcription) were left
out of the release commit and tag. That is how cua-v0.8.0 and cua-v0.8.1
got tagged with stale crate versions; the next commit of any kind swept
the files up, which is why it stayed quiet.

shipx 0.1.23 fixed it (shipx#58, PR shipx#60) by asking git which Cargo
files the bump actually rewrote instead of assuming the directory it ran
in. The same release fixed shipx#59, so steps handed to CI are no longer
reported as done without checking: with githubRelease and homebrew off,
shipx now watches the v* and cua-v* runs the tag push triggers and fails
the release when they fail. Both cua releases failed while shipx
reported clean.

Verified on this layout: `cargo set-version --workspace` from src-tauri
reports four crates upgraded, and git reports Cargo.lock,
crates/juno-cua/Cargo.toml, src-tauri/Cargo.toml,
src-tauri/mcp-server-os-level/Cargo.toml and
tauri-plugin-voice-transcription/Cargo.toml as modified, all five of
which match the path filter 0.1.27 stages on.

Also name the demo cohort input after the release the build came from,
which is the convention in use, so the label says which Anthropic key to
revoke with it.
@lacymorrow
lacymorrow merged commit 47726ce into main Oct 31, 2026
6 checks passed
@lacymorrow
lacymorrow deleted the fix/shipx-release-tooling branch October 31, 2026 09:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant