Skip to content

Mono repo automatic support, and prerelease fixes#1930

Open
ryanobjc wants to merge 8 commits into
knope-dev:mainfrom
ryanobjc:feat/prerelease-changelog
Open

Mono repo automatic support, and prerelease fixes#1930
ryanobjc wants to merge 8 commits into
knope-dev:mainfrom
ryanobjc:feat/prerelease-changelog

Conversation

@ryanobjc

Copy link
Copy Markdown
Contributor

There are 3/4 distinct fixes in this branch/PR:

  • Automatically bumping dependencies in monorepo, with policy control over patch/minor semantics for dependents
  • Derive the internal dependencies from manifests (subfeature of the above)
  • Determine scope from paths touched in commit
  • Pre-releases are made based on the last pre-release, so the changelogs are incremental in the pre-release branch

ryanobjc and others added 8 commits June 12, 2026 12:31
Defaulting to "patch" changed behavior for existing configs: any
package with {path, dependency} versioned_files entries would start
receiving automatic releases on upgrade. Propagation is now opt-in.

- internal_dependency_updates test now verifies the default does NOT
  propagate (dep strings still sync)
- transitive test gets explicit config with "patch" policies, since
  auto-detected packages can't set one
- with_changelog test sets "patch" explicitly, covering that value
Knope already parses every versioned file at release time, so the
dependency graph for propagation can be read straight from manifests:
if an opted-in package's Cargo.toml or package.json declares a
dependency matching another package's manifest name, the relationship
is detected with no configuration beyond update_internal_dependencies.

This is the same information the workspace auto-detection uses at
config-load time, applied to explicit [packages] configs. Dependency
strings inside manifests are still only updated through explicit
{path, dependency} versioned_files entries; internal_dependencies
remains the override for relationships neither mechanism can see.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
I like having computers do work I will inevitably forget to do.

Tests added:

- track_paths_basic: commits route to packages via versioned-file dirs
- track_paths_explicit: explicit paths override the fallback
- track_paths_multi: one commit can apply to multiple packages
- track_paths_orphan: commits outside every territory are dropped
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
In prerelease mode, conventional commits are gathered since the most
recent tag of any kind, not just the last stable. Iterative prerelease
workflows (alpha.1 -> alpha.2) then only summarize the commits added
since the previous prerelease, and packages with no new commits don't
get re-released on every run.

Because the delta may imply a lower stable target than an existing
prerelease line (a fix following a feature that already shipped in
rc.0), calculate_pre now continues the nearest existing prerelease
line above the rule-derived version instead of regressing below a
version that has already been pre-released. Rule-derived versions
matching an existing line keep it, so deliberately-newer hand-tagged
lines still don't take over.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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