chore: pin changelog-action to the version that parses commit subjects only

Merged
2Y
1d ago
+1-1

[skip changelog]

Why

The release for #204 failed at "Finalize release version" with The first changelog entry does not match the release source, so v2.960.7 was never tagged: https://github.com/speakeasy-api/openapi-generation/actions/runs/42701453993/job/129447302255

The "Update CHANGELOG" step runs speakeasy-api/changelog-action, pinned to 40b363f. That version passes the full commit message to @conventional-commits/parser@0.4.1. The parser reads a body line made of a single word followed by an opening parenthesis, with the closing parenthesis on a later line, as a type(scope) token, and throws. The squash commit of #204 carries a multi-line Python call in its body, so the action logged it as [INVALID] and skipped it. The other commits in the range were docs: and ci:, which are excluded types, so no changelog entry was written and the finalize script rejected the changelog.

The "Conventional Commits" step uses a different parser, accepted the same commit, and computed v2.960.7. The two steps disagreed.

What changed

  • Pin speakeasy-api/changelog-action to dc59e58 (speakeasy-api/changelog-action#1). It parses only the subject line for type, scope and subject, and detects BREAKING CHANGE footers with a regex over the full message. The action never used the parsed body for anything else, so changelog output is unchanged for commits that already parsed.

Testing

  • Ran @conventional-commits/parser@0.4.1 on the three commits in the failed release range. Full message: the #204 commit throws. Subject only, as in dc59e58: it parses as fix(python), and the other two parse as docs and ci.
  • The workflow itself was not run. Merging this PR re-runs the release on main; its range still contains the #204 commit, so the run should publish v2.960.7 with that entry.

Public-safety check

  • This change contains no credentials, customer documents, private repository URLs, private filesystem paths, or unredacted private logs.
  • Title, body, comments, and commit messages name no customers or customer-derived identifiers, private paths or trackers, or workflow provenance, and are understandable without private context (.claude/skills/public-repo-communication/SKILL.md).
  • Generated fixtures and review SDK changes are public-safe.
  • I reviewed git diff --check.

Summary by cubic

Pins speakeasy-api/changelog-action to a version that parses only commit subjects, fixing the release that failed to tag v2.960.7. The old version passed the full commit message to the parser, which threw on a multi-line commit body, skipped that commit as [INVALID], and left the changelog empty so the finalize step rejected it. The new version detects BREAKING CHANGE footers with a regex and produces unchanged output for commits that already parsed.