diff --git a/CHANGELOG.md b/CHANGELOG.md index 086fcb2..d94123c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,21 @@ - *(release)* Refuse a release without notes (#343) ## [0.42.0] - 2026-10-15 + +No changes since 0.41.0. The 0.41.0 release PR waited on review long enough for #340 and #341 to merge ahead of it, so they shipped in 0.41.0 and this tag carries the same code; the release-notes guard in #343 prevents this recurring. ## [0.41.0] - 2026-10-15 +### 🚀 Features + +- *(databases)* Add `--if-not-exists` to `create`: get-or-create by name, matching the SDK (#340) +- *(databases)* Add `--database ` to `load`, for loading by id when a fork shares the catalog alias (#341) + +### 🐛 Bug Fixes + +- *(databases)* `tables show` on a catalog alias shared by a fork now reports the ambiguity instead of "no catalog" (#341) +- *(query)* `-d`/`-o` accepted after `status`, so `hotdata query status -d ` works (#341) +- *(jobs)* `jobs ` on a `database_fork` job no longer fails to parse; `--job-type database_fork` accepted (#338) + ### 💼 Other - *(deps)* Bump hotdata SDK to 0.20.0 (#338) diff --git a/scripts/validate-changelog.py b/scripts/validate-changelog.py index fb975f9..212d1e8 100755 --- a/scripts/validate-changelog.py +++ b/scripts/validate-changelog.py @@ -61,12 +61,28 @@ def main() -> None: ) failed = True elif cur_sections[ver] != body: - print( - f"CHANGELOG.md: section [{ver}] differs from {base} " - "(released sections must not be rewritten)", - file=sys.stderr, - ) - failed = True + # A released section may gain notes (a correction after the fact, + # as when the 0.41.0 notes missed two PRs that merged while its + # release PR waited for review) but never lose any: every bullet + # the base carries must still be there verbatim. That keeps the + # guard against git-cliff regenerations dropping history while + # letting an additive fix through. + missing = [ + line + for line in body.splitlines() + if line.startswith("- ") and line not in cur_sections[ver].splitlines() + ] + if missing: + print( + f"CHANGELOG.md: section [{ver}] drops bullets present on {base} " + "(released notes may be added to, never rewritten):", + file=sys.stderr, + ) + for line in missing: + print(f" {line}", file=sys.stderr) + failed = True + else: + print(f"changelog: section [{ver}] amended additively") if failed: sys.exit(1)