chore: release main - #74
Merged
Merged
Conversation
4 tasks
jpage-godaddy
added a commit
that referenced
this pull request
Aug 3, 2026
…ers (#75) ## Summary - `Cargo.toml`'s `[workspace] members` listed `"."` alongside `cli-engine-macros`. Cargo doesn't need this — a manifest with both `[package]` and `[workspace]` sections is automatically a member of its own workspace. - This redundant self-reference breaks release-please. Its Rust strategy tries to resolve every declared member by globbing for `<member>/Cargo.toml`; that glob can't resolve for the literal `"."` entry, logging `member . declared but did not find Cargo.toml`, and falls back to forcing **every** workspace member's `Cargo.toml` version to match the root's new version. - That's exactly what happened in #74: `cli-engine` bumped `0.6.0 → 0.6.1` from real commits, and `cli-engine-macros/Cargo.toml`'s version field got silently overwritten to `0.6.1` too — with no corresponding manifest, changelog, or `Cargo.lock` change, since it had no real commits. The result: `cli-engine-macros = "^0.2.0"` no longer resolved against the on-disk `0.6.1`, and `cargo check` failed in CI. - Confirmed via the `release-please-action` run log for #74 (job [91760899222](https://github.com/godaddy/cli-engine/actions/runs/30835911196/job/91760899222)) — the bad version bump traces to the root-package strategy's workspace-member resolution, not the `CargoWorkspace` plugin itself (whose own logic, visible later in the same log, correctly determined only `cli-engine` needed updating). ## Test plan - [x] `cargo fmt --all --check` - [x] `cargo clippy --all-targets -- -D warnings` - [x] `cargo test --all-targets` (all passing) - [x] `cargo check --all-targets` confirms the workspace still resolves correctly with `cli-engine` as an implicit member 🤖 Generated with [Claude Code](https://claude.com/claude-code)
github-actions
Bot
force-pushed
the
release-please--branches--main
branch
2 times, most recently
from
August 3, 2026 19:05
4e67fa8 to
f6bf94d
Compare
9 tasks
jpage-godaddy
added a commit
that referenced
this pull request
Aug 3, 2026
## Summary - Fixes the recurring release-please bug where `cli-engine-macros`'s version gets silently force-synced to match `cli-engine`'s, even with zero commits of its own (seen again in #74, after #75's `"."` self-reference fix only removed a warning, not the actual behavior). - Root cause, confirmed by reading release-please's own source (`src/strategies/rust.ts`) and tracing two consecutive `release-please-action` run logs: any time the manifest release-please reads for a release path has **both** `[package]` and `[workspace]` in the same file, it unconditionally forces every `[workspace] members` entry's version to match — regardless of commits, regardless of the `cargo-workspace` plugin, regardless of `release-please-config.json`'s independent per-package versioning. Our root `Cargo.toml` was exactly that shape (`cli-engine`'s own package + `[workspace] members = ["cli-engine-macros"]`), so this fires on every release. - Fix: move `cli-engine`'s package into its own `cli-engine/` subdirectory as a true sibling of `cli-engine-macros/`, and make the repo root a pure virtual `[workspace]`-only manifest. Traced `Rust.buildUpdates()` for a manifest with no `[workspace]` section — it takes the safe "single crate found, updating Cargo.toml" branch; the buggy branch can no longer trigger. ## What moved / changed - `src/`, `tests/`, `examples/`, `docs/`, `CHANGELOG.md`, `Cargo.toml` → all moved into `cli-engine/` via `git mv` (100% renames, history preserved). - New root `Cargo.toml`: workspace-only, `resolver = "3"` (a virtual workspace doesn't auto-infer this from an edition-2024 member the way a non-virtual root does — verified in a scratch workspace, confirmed the warning/behavior change), `[workspace.lints.*]` moved here verbatim. - `cli-engine/Cargo.toml`: `cli-engine-macros` path dependency → `../cli-engine-macros` (sibling, not nested); `readme` → `../README.md` (verified Cargo packages a readme outside the crate directory correctly). - `cli-engine/LICENSE`: copied so `cargo publish` still bundles a license file (previously implicit since LICENSE and Cargo.toml shared a directory). - `release-please-config.json` / `.release-please-manifest.json`: package key `"."` → `"cli-engine"` (component/tag name unaffected — releases still tag as `cli-engine-vX.Y.Z`). - `.github/workflows/ci.yml` and `release.yml`: the two `cargo publish` steps that ran at repo root now use `-p cli-engine` explicitly (a virtual workspace has no default package to publish; verified `cargo publish` with no `-p` in a multi-member virtual workspace would otherwise try to publish every member in one shot). Other steps (`fmt --all`, `check/clippy/test/doc --all-targets`) are left as bare workspace-wide commands — `cli-engine-macros` now gets covered by them too, which it silently wasn't before. - Doc wording in `AGENTS.md`, `README.md`, `CONTRIBUTING.md`, and `cli-engine/docs/design.md` updated to describe the new workspace shape and fix relative links. ## Test plan - [x] `cargo generate-lockfile` reverted (it does a full fresh resolve, not what we want) — used `cargo check` instead; confirmed `Cargo.lock` has zero diff (path deps don't encode filesystem paths) - [x] `cargo fmt --all --check` - [x] `cargo clippy --all-targets -- -D warnings` (+ `--features pkce-auth`) - [x] `cargo test --all-targets` (+ pkce-auth) — all passing, 0 failures - [x] `RUSTDOCFLAGS='-D warnings' cargo doc --no-deps` (+ pkce-auth) and `cargo test --doc` (+ pkce-auth) - [x] `cargo rustdoc --lib -p cli-engine -- -W missing-docs` — zero missing docs - [x] `cargo package --list -p cli-engine` — confirms `LICENSE` and `README.md` (via `../README.md`) are correctly bundled - [x] `cargo publish --dry-run -p cli-engine` and `cd cli-engine-macros && cargo publish --dry-run` — both succeed, correctly resolving the path dependency - [ ] After merge: watch the next `release-please` Action run's log for the `Rust` strategy trace — should now show "single crate found, updating Cargo.toml" for `cli-engine` instead of "found workspace with N members, upgrading all" 🤖 Generated with [Claude Code](https://claude.com/claude-code)
github-actions
Bot
force-pushed
the
release-please--branches--main
branch
from
August 3, 2026 20:37
f6bf94d to
3226048
Compare
The move to cli-engine/ (#77) changed release-please's per-path commit filtering — file diffs for commits made before the move (#72, #73) point at the old src/ paths, not cli-engine/, so release-please's regenerated changelog only picked up commits made after the move. Nothing was lost from git history or the shipped code; this just restores the visible changelog entry to the full set of changes since 0.6.0.
Contributor
Author
|
🤖 Created releases: 🌻 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 I have created a release beep boop
cli-engine: 0.6.1
0.6.1 (2026-08-03)
Features
Bug Fixes
This PR was generated with Release Please. See documentation.