Groups and shared release identity
A configured group forces multiple packages to share one planned version and one outward release identity.
[package.sdk-core]
path = "cargo/sdk-core"
type = "cargo"
[package.web-sdk]
path = "packages/web-sdk"
type = "npm"
[group.sdk]
packages = ["sdk-core", "web-sdk"]
tag = true
release = true
version_format = "primary"
Groups can also use version_format = "namespaced" or a custom tag template such as version_format = "{{ name }}/v{{ version }}". Custom formats support {{ name }}, {{ version }}, and {{ ecosystem }}, must include {{ version }}, and must render unique valid Git tag names.
When any member releases:
- the highest required bump in the group wins
- every member in the group receives that bump
- one planned group version is calculated from the highest current member version
- the group owns outward release identity
- member package changelogs can still be updated individually
- group changelog and group
versioned_filescan also be updated - grouped packages can use
empty_update_messagewhen their own changelog needs a version-only update with no direct notes - dependents of newly synced members still receive propagated parent bumps
- unmatched members (not found during discovery) produce warnings; unresolvable members (invalid IDs) produce errors
- mismatched current versions produce warnings when
warn_on_group_mismatch = true
A changeset may reference the group id:
---
sdk: minor
---
#### coordinated SDK release
But a changeset may not reference both the group id and one of its members in the same file.
To keep a group changelog focused on public surfaces while leaving package changelogs detailed, configure the grouped changelog table:
[group.sdk.changelog]
path = "changelog.md"
include = ["sdk-cli"]
Direct group-targeted changesets are always included. Member-targeted changesets are filtered only for the group changelog; package changelogs and release planning remain unchanged.
The filter curates the committed changelog, and nothing else. A provider release body still describes every change the release shipped, so a group whose changelog hides internal notes cannot publish a release that appears to contain nothing. Each change is listed once, in its configured section, with the packages it affects:
Grouped release for `sdk`.
## Fixes
- **Fix shared bug.** _Packages:_ ๐ _core_, ๐ข _cli_ _Owner:_ @ifiokjr ยท _Review:_ [PR #725](https://github.com/monochange/monochange/pull/725)