Skip to content

fix(release): full channel changelog in GitHub release notes#364

Merged
Wibias merged 4 commits into
devfrom
fix/release-notes-full-changelog
Jul 23, 2026
Merged

fix(release): full channel changelog in GitHub release notes#364
Wibias merged 4 commits into
devfrom
fix/release-notes-full-changelog

Conversation

@Wibias

@Wibias Wibias commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Release notes for both preview and latest now keep GitHub generate-notes PR categories and append a ## Commits section from the channel-scoped previous tag (branch merges + direct commits that PR-only notes omit).
  • Create and edit paths both use the same --notes-file body so republishing a tag gets the same full notes.
  • Contract test asserts the commits log and that --generate-notes is no longer used alone on create.

Test plan

  • bun test tests/ci-workflows.test.ts
  • Next preview/latest workflow_dispatch publish: verify release body has PR categories, Commits list, and Full Changelog compare link

Summary by CodeRabbit

  • Improvements

    • GitHub releases now consistently generate complete release notes from pull request content using a dedicated notes document.
    • Notes include a regenerated single “Full Changelog” compare link and a curated “Commits” section for the relevant range.
    • Release creation behavior is now uniform, with prerelease handling supported and tagging performed after notes are assembled.
  • Tests

    • CI assertions were expanded to verify the release-notes generation flow, commit formatting/range, and that note-generation failures are not silently ignored.

generate-notes is PR-only, so preview/latest changelogs missed branch merges and direct commits; append the full channel git log for both create and edit paths.
@github-actions github-actions Bot added the bug Something isn't working label Jul 23, 2026
@coderabbitai

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as resolved.

chatgpt-codex-connector[bot]

This comment was marked as resolved.

Wibias added 2 commits July 24, 2026 01:21
Address CodeRabbit: require generate-notes success, always create (preflight already blocks existing releases), keep a 100-commit cap only for first-channel history, and tighten workflow contract tests.
Avoid leaving a remote tag when generate-notes fails; preflight would otherwise block retries after a partial publish.
@Wibias

Wibias commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator Author

Dual review (security + bugs/edge cases)

CodeRabbit threads addressed on 355320d0 (see disposition below). Independent second look after those fixes.

CodeRabbit disposition

Finding Action
Fail closed on generate-notes (|| true) Fixed — API failure aborts the step
Remove --max-count=100 on first-channel history Declined — no previous channel tag means unbounded repo history; keep a 100-commit cap to stay within GitHub release body limits. Channel deltas (the normal path) remain uncapped via ${previous_tag}..${GITHUB_SHA}
Unreachable gh release edit vs preflight Fixed — edit path removed; create-only matches preflight
Strengthen contract tests Fixed — create/commit_range/no-edit/no-soft-fail assertions; notes-before-tag order check

Extra fix from this review: assemble notes before git tag/git push so a notes API failure does not leave a remote tag that preflight then blocks on retry.

Security

Verdict: merge-ready for security (no blockers).

Checked:

  • Inputs still reach the shell only via env: (no ${{ inputs.* }} in run:)
  • No permission / token scope expansion; still contents: write + github.token
  • Fail-closed notes improves metadata integrity vs silent empty PR categories
  • Create-only removes the only path that could overwrite an existing release’s notes
  • Commit subjects in notes are ordinary public changelog risk (merge + maintainer dispatch); not newly elevated

Bugs / edge cases

Verdict: merge-ready after the notes-before-tag reorder. Remaining residuals are operational, not blockers:

  1. npm may already be published if the GitHub Release step fails later (pre-existing ordering: Publish → registry smoke → Create release). Manual gh release create recovery still needed in that case; not introduced here.
  2. HTTP 200 with empty body from generate-notes still creates a release with Commits + compare link only. Acceptable; true API failures fail closed.
  3. PR section + Commits section overlap (merge commits / PR titles appear twice) is intentional for the “full channel log” goal.

Checks

  • bun test tests/ci-workflows.test.ts green locally after both follow-ups

coderabbitai[bot]

This comment was marked as resolved.

Omitting previous_tag_name lets GitHub baseline the newest repo tag, which can be the other channel on a first preview/stable cut. Use commits-only notes in that case.
@Wibias
Wibias merged commit 5157c49 into dev Jul 23, 2026
11 checks passed
@lidge-jun
lidge-jun deleted the fix/release-notes-full-changelog branch July 24, 2026 02:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant