diff --git a/scripts/releaser/release.go b/scripts/releaser/release.go index 8c63ff7c46..9d9723c7c3 100644 --- a/scripts/releaser/release.go +++ b/scripts/releaser/release.go @@ -536,6 +536,28 @@ func runRelease(ctx context.Context, inv *serpent.Invocation, executor ReleaseEx } fmt.Fprintln(w) + // --- Adjust changelog base for initial releases --- + // When the new version is a .0 release (e.g. v2.33.0) and + // prevVersion is an RC (e.g. v2.33.0-rc.3), the release + // notes should show all changes since the last stable + // release in the previous minor series (e.g. v2.32.X), + // not just the delta from the last RC. + if !onMain && newVersion.Patch == 0 && !newVersion.IsRC() && prevVersion != nil && prevVersion.IsRC() { + var lastStable *version + for _, t := range allTags { + if t.Pre == "" && t.Major == newVersion.Major && t.Minor < newVersion.Minor { + lastStable = &t + break + } + } + if lastStable != nil { + infof(w, "Changelog base: %s (last stable release before %s series).", lastStable, newVersion) + prevVersion = lastStable + } else { + warnf(w, "No previous stable release found; changelog will diff from RC %s.", prevVersion) + } + } + // --- Generate release notes --- infof(w, "Generating release notes...")