Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
9d14e58
fix(version): sync Cargo.lock on every Cargo.toml bump path
claude Oct 22, 2026
0254166
fix(version): sync every committed Cargo.lock that records a bumped c…
claude Oct 22, 2026
7fcf945
fix(core): keep cargo's order when a lock bump passes another version
claude Oct 22, 2026
a0c2197
style: add braces to every single-statement body
claude Oct 22, 2026
1d1d91a
Merge remote-tracking branch 'origin/main' into fix/650-cargo-lock-sync
claude Oct 22, 2026
ca79dde
fix(version): sync a lock entry only for the crate it records, never …
claude Oct 22, 2026
9df34f7
docs: document CARGO_LOCK_SYNC_ERROR and how lock entries are matched
claude Oct 22, 2026
79c35eb
docs: keep the exit-code table to families; shorten the lock-sync bullet
claude Oct 22, 2026
dfec95e
fix(version): treat a lock beside a crate's manifest as its own
claude Oct 22, 2026
e877d06
docs(rust): narrow the same-name claim, note the residual case and ex…
claude Oct 22, 2026
620e9d7
docs(rust): shorten the same-name limitation
claude Oct 22, 2026
9872758
fix(core): find a crate's Cargo.lock by cargo's workspace-root rule
claude Oct 22, 2026
6dfda65
docs(rust): note the any-version case of the same-name limitation
claude Oct 22, 2026
275cb68
Merge remote-tracking branch 'origin/main' into fix/650-cargo-lock-sync
claude Oct 22, 2026
26d823f
test(core): pin whole-component exclude matching; note the unfollowed…
claude Oct 22, 2026
bca9c13
refactor: cut Cargo.lock sync comments to the non-obvious
github-actions[bot] Oct 22, 2026
811b99a
fix(core): sync another workspace's Cargo.lock only if it reaches the…
github-actions[bot] Oct 23, 2026
c14d10e
fix(core): follow package.workspace pointers, and only the root's [pa…
github-actions[bot] Oct 23, 2026
659299e
fix(core): refuse to edit a Cargo.lock format newer than v4
github-actions[bot] Oct 23, 2026
44c04b1
fix(core): stop following [patch] when syncing Cargo.lock
github-actions[bot] Oct 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions docs/rust.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ See [configuration.md](./configuration.md) for the full config reference.
## What's supported

- `Cargo.toml` version bumping driven by conventional commits
- `Cargo.lock` sync on every bump: the crate's own lock, and every other committed lock whose workspace reaches the crate's directory through path dependencies (`workspace = true` included), is updated in the same release commit, without running cargo. Gitignored locks are left alone, and so are other crates of the same name (every `tauri init` app is `app`)
- Per-crate git tags (via `version.packageSpecificTags`)
- Publishing to crates.io with `cargo publish`
- Workspace dependency ordering via topological sort (Kahn's algorithm) so path-dependent crates are published in the correct sequence
Expand All @@ -22,6 +23,7 @@ See [configuration.md](./configuration.md) for the full config reference.

- OIDC / trusted publishing for crates.io — token-based auth only via `CARGO_REGISTRY_TOKEN`
- Automatic workspace root discovery — crate directories must be listed in `version.cargo.paths` or inferred from `version.packages`
- `[patch]`, in `Cargo.toml` or `.cargo/config.toml`, when syncing `Cargo.lock` — a lock whose workspace reaches a bumped crate only through a patch keeps the old version, without an error, and `cargo build --locked` there fails until you run `cargo update --workspace` in that workspace and commit the lock
- Comment and formatting preservation in `Cargo.toml` — the file is rewritten on version bump using `smol-toml`'s serialiser; whitespace, comments, and key order may change

---
Expand Down Expand Up @@ -207,6 +209,15 @@ jobs:

## Edge cases and troubleshooting

**`Failed to sync Cargo.lock: …`**

releasekit edits each lock's text the way cargo would, and fails the version step (`CARGO_LOCK_SYNC_ERROR`: exit code 8 from `release` and `standing-pr`, 1 from `releasekit version`) rather than leave a lock behind. The message names the lock and the reason:

- `it also has <crate> <version> from another source`: the lock also lists the crate from a registry or git source at the old or the new version, so cargo would have to change how it tells the two apart. Sync that lock with cargo yourself (`cargo update` with the new version in `Cargo.toml`) and commit it, or drop the second source of the crate.
- `it has <n> path entries named <crate>`: the lock holds several local crates of that name, so releasekit can't tell which one is the bumped crate. Sync that lock with cargo yourself.
- `its format (version = <n>) is newer than releasekit can edit`: releasekit edits lock formats up to v4. Sync that lock with cargo yourself.
- A file-system error such as `EACCES`: the lock couldn't be read or written.

**`error: failed to verify package tarball`**

`cargo publish` runs a pre-publish verification step that builds the crate from the packaged tarball. This can fail in some environments (missing system libraries, conflicting feature flags, etc.). As a workaround, set `publish.cargo.noVerify: true` to pass `--no-verify` — but note that this skips all pre-publish checks, so it is best treated as a temporary measure rather than a permanent setting.
Expand Down
3 changes: 2 additions & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@
"dependencies": {
"@manypkg/get-packages": "catalog:",
"chalk": "catalog:",
"minimatch": "catalog:"
"minimatch": "catalog:",
"smol-toml": "catalog:"
},
"devDependencies": {
"@biomejs/biome": "catalog:",
Expand Down
Loading
Loading