Skip to content

chore: release main - #74

Merged
jpage-godaddy merged 2 commits into
mainfrom
release-please--branches--main
Aug 3, 2026
Merged

chore: release main#74
jpage-godaddy merged 2 commits into
mainfrom
release-please--branches--main

Conversation

@github-actions

@github-actions github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

🤖 I have created a release beep boop

cli-engine: 0.6.1

0.6.1 (2026-08-03)

Features

  • command: add context-aware typed constructors and ArgGroup support (#73) (748efc6)
  • output: support nested table output in human rendering (#72) (8ca7479)

Bug Fixes

  • workspace: drop redundant "." self-reference from workspace members (#75) (b769528)
  • workspace: restructure into a true sibling Cargo workspace (#77) (05b8b29)

This PR was generated with Release Please. See documentation.

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
github-actions Bot force-pushed the release-please--branches--main branch 2 times, most recently from 4e67fa8 to f6bf94d Compare August 3, 2026 19:05
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
github-actions Bot force-pushed the release-please--branches--main branch from f6bf94d to 3226048 Compare August 3, 2026 20:37
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.
@jpage-godaddy
jpage-godaddy merged commit fc3db94 into main Aug 3, 2026
3 checks passed
@jpage-godaddy
jpage-godaddy deleted the release-please--branches--main branch August 3, 2026 21:18
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Created releases:

🌻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant