Skip to content

fix: root format implies unified versioning#76

Merged
Slokh merged 3 commits intomasterfrom
fix/root-format-unified-versioning
Mar 18, 2026
Merged

fix: root format implies unified versioning#76
Slokh merged 3 commits intomasterfrom
fix/root-format-unified-versioning

Conversation

@Slokh
Copy link
Contributor

@Slokh Slokh commented Mar 18, 2026

When using format = "root", all non-ignored workspace packages are now implicitly treated as one fixed group. This means:

  • All packages share the highest bump level from any changelog entry
  • The root CHANGELOG.md gets a single version heading (no duplicates)
  • No need to manually configure [[fixed]] groups when using root format

This makes format = "root" behave as expected for monorepos shipping a single product. The config simplifies from:

dependent_bump = "patch"

[[fixed]]
members = ["common", "wallet", "request"]

ignore = ["sign", "test"]

[changelog]
format = "root"

To just:

ignore = ["sign", "test"]

[changelog]
format = "root"

Backward-compatible: explicit [[fixed]] groups still work, per-crate format is unaffected, and single-package workspaces are unchanged.

Includes the heading-merge fix from #75 plus a new golden test (root-fixed-group) and updated root-changelog golden.

@github-actions
Copy link
Contributor

github-actions bot commented Mar 18, 2026

⚠️ Changelog not found.

A changelog entry is required before merging. We've generated a suggested changelog based on your changes:

Preview
---
changelogs: minor
---

Added support for unified versioning in root changelog format by implicitly treating all workspace packages as a fixed group, added workspace version inheritance support for Rust (`version.workspace = true`), and fixed deduplication of changelog entries when multiple packages share the same version in root format.

Add changelog to commit this to your branch.

…pport

When using format = "root", all non-ignored workspace packages are now
implicitly treated as one fixed group. This means:
- All packages share the highest bump level from any changelog entry
- The root CHANGELOG.md gets a single version heading (no duplicates)

Also adds support for Cargo workspace version inheritance:
- read_version handles version.workspace = true by reading from root
- write_version writes to [workspace.package].version when inherited
- Crate Cargo.toml files with version.workspace = true are untouched

This is backward-compatible: explicit [[fixed]] groups still work,
per-crate format is unaffected, and crates with inline versions work
as before.

Amp-Thread-ID: https://ampcode.com/threads/T-019d023f-0695-753a-832d-a14fa0ca8540
Co-authored-by: Amp <amp@ampcode.com>
@Slokh Slokh force-pushed the fix/root-format-unified-versioning branch from 167846a to 1d77e8d Compare March 18, 2026 19:10
@Slokh Slokh merged commit a8e1f6d into master Mar 18, 2026
3 checks passed
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