fix: update CHANGELOG for 16.4.0.rc.9 and fix orphaned prerelease link cleanup#2596
fix: update CHANGELOG for 16.4.0.rc.9 and fix orphaned prerelease link cleanup#2596
Conversation
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Co-Authored-By: Claude Opus 4.6 <[email protected]>
WalkthroughAdds release notes for 16.4.0.rc.9 to CHANGELOG.md and introduces logic to collapse prerelease compare links when preparing the changelog, plus tests verifying cleanup behavior for orphaned prerelease links. Changes
Sequence Diagram(s)(omitted) Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
📝 Coding Plan
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
|
||
| ### [16.4.0.rc.8] - 2026-03-10 | ||
|
|
||
| Changes since the last non-beta release. |
There was a problem hiding this comment.
This sentence was the introductory text for the removed ### [16.4.0.rc.8] section header, but now it's orphaned mid-way through the [16.4.0.rc.9] section — between the #### Pro > ##### Added block (lines 43-48) and the #### Added block below. It should be removed (or, if the intent is to document the cumulative scope of rc.9, reworded and placed right after the ### [16.4.0.rc.9] heading).
|
|
||
| #### Pro | ||
|
|
||
| ##### Added |
There was a problem hiding this comment.
This ##### Added (h5) is missing its parent #### Pro (h4) heading. The diff removed the #### Pro heading that preceded it (it was the start of rc.8's Pro subsection), but left the ##### Added behind. Without the parent heading, these Pro-specific entries (CSP nonce, license verification task) are structurally detached from the #### Pro scope.
Suggested fix: add #### Pro above this line.
| ##### Added | |
| #### Pro | |
| ##### Added |
Greptile SummaryThis PR stamps the
Confidence Score: 4/5
Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["### [Unreleased]"] --> B["### [16.4.0.rc.9] - 2026-03-12"]
B --> C["#### Improved\n(PR 2439 ✨ new, PR 2571)"]
B --> D["#### Fixed\n(PR 2477 ✨ new)"]
B --> E["#### Changed\n(PR 2590)"]
B --> F["#### Pro\n##### Added\n(PR 2554 ✨ new, PR 2585)"]
F --> G["⚠️ 'Changes since the last non-beta release.'\n(misplaced rc.8 intro)"]
G --> H["#### Added (from rc.8)\n(PRs 2570, 2516, 2430, 2539, 2418)"]
H --> I["#### Fixed (from rc.8)\n(PRs 2489, 2411, 2536, 2513)"]
I --> J["#### Pro ##### Fixed (from rc.8)\n(PRs 2562, 2532, 2407, 2531, 2535...)"]
J --> K["#### Improved / #### Fixed (from rc.8)"]
K --> L["⚠️ ##### Added (ORPHANED — no parent #### Pro)\n(PRs 2398, 2385)"]
L --> M["##### Changed / ##### Improved / ##### Fixed\n(PRs 2454, 2403, 2562, 2416...)"]
N["### [16.4.0.rc.8] — REMOVED ✂️"] -.-> B
Last reviewed commit: 02943f8 |
|
|
||
| ### [16.4.0.rc.8] - 2026-03-10 | ||
|
|
||
| Changes since the last non-beta release. |
There was a problem hiding this comment.
Misplaced intro sentence from rc.8
The line Changes since the last non-beta release. was originally positioned immediately after the ### [16.4.0.rc.8] - 2026-03-10 heading, serving as an intro paragraph for that release block. After collapsing rc.8 into rc.9, this sentence is now stranded inside the #### Pro > ##### Added subsection, floating between the new Pro items (PR 2554, PR 2585) and the formerly-rc.8 #### Added section. It reads as orphaned prose mid-section and no longer adds meaning.
Consider either removing this line entirely, or if you want to document that rc.9 encompasses all changes since the last stable release, move it to immediately after the ### [16.4.0.rc.9] heading:
| Changes since the last non-beta release. |
(remove this line)
<sub>Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!</sub>
|
|
||
| #### Pro | ||
|
|
||
| ##### Added |
There was a problem hiding this comment.
Orphaned Pro subsections after #### Pro removal
The diff removes the #### Pro heading that previously appeared before this ##### Added section (along with the subsequent ##### Changed, ##### Improved, and ##### Fixed at lines 117, 121, and 125). Those sections contain clearly Pro-specific entries — CSP nonce for immediate hydration (PR 2398), license verification rake task (PR 2385), breaking legacy key-file license removal (PR 2454), etc. — but now they have no parent #### Pro heading.
Without that heading, these #####-level subsections appear visually nested under the preceding #### Fixed section (ending at line 110), making it ambiguous whether those Pro entries are OSS fixed items or a separate Pro block. The #### Pro heading at line 43 only covers the new ##### Added items (PR 2554, PR 2585) introduced in rc.9; the formerly-rc.8 Pro subsections at line 112+ are a separate block that needs its own #### Pro heading restored.
Consider adding back the #### Pro heading before line 112:
| ##### Added | |
| #### Pro | |
| ##### Added |
| - **Auto-install `react_on_rails_pro` gem for `--rsc`/`--pro` generator flags**: Running `rails g react_on_rails:install --rsc` or `--pro` now automatically installs the `react_on_rails_pro` gem via `bundle add` instead of only printing an error, matching how Shakapacker is handled in the same generator. [PR 2439](https://github.com/shakacode/react_on_rails/pull/2439) by [justin808](https://github.com/justin808). | ||
| - **create-react-on-rails-app validation and test coverage**: Tightened app name validation (must start with a letter), added Rails 7.0+ prerequisite validation, and expanded validator/setup test coverage (including `validateAll` success path). [PR 2571](https://github.com/shakacode/react_on_rails/pull/2571) by [justin808](https://github.com/justin808). | ||
|
|
||
| #### Fixed |
There was a problem hiding this comment.
Because rc.8 is being collapsed into rc.9, the resulting section ends up with duplicate subsection headings:
#### Improvedappears at line 30 and again at line 89 (from rc.8)#### Fixedappears here at line 35, and again at line 60, and again at line 93 (both from rc.8)
Changelog parsers and human readers expect each subsection to appear once per version. The fix would be to merge the rc.8 #### Fixed entries (lines 62–65) up into this block, and similarly consolidate #### Improved/#### Added.
Review: CHANGELOG structure issues from collapsing rc.8 into rc.9The new entries (PRs 2439, 2477, 2554) are well-written and accurate. The version stamp and compare links look correct. However, collapsing 16.4.0.rc.8 into 16.4.0.rc.9 by simply removing the rc.8 section header introduces three structural problems: 1. Orphaned introductory text (line 50) 2. Broken heading hierarchy at line 112 3. Duplicate subsection headings within [16.4.0.rc.9]
Standard changelog practice expects each category once per version. Fix: merge the rc.8 #### Fixed bullets (CSS modules/rspack, private_output_path, --pretend dry-run) into the new #### Fixed at line 35, and fold rc.8's #### Improved bullet into the new #### Improved at line 30. None of these affect runtime behaviour, but they make the changelog harder to read and can trip up automation that parses it. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 02943f8a77
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
|
||
| [unreleased]: https://github.com/shakacode/react_on_rails/compare/16.4.0.rc.8...master | ||
| [unreleased]: https://github.com/shakacode/react_on_rails/compare/16.4.0.rc.9...master | ||
| [16.4.0.rc.9]: https://github.com/shakacode/react_on_rails/compare/16.4.0.rc.8...16.4.0.rc.9 |
There was a problem hiding this comment.
Point rc.9 compare link at full collapsed prerelease range
This commit collapses the previous prerelease content into the new 16.4.0.rc.9 section (the section now includes Changes since the last non-beta release.), but the footer link for [16.4.0.rc.9] only compares 16.4.0.rc.8...16.4.0.rc.9; that makes the version link inconsistent with the section content and hides most commits documented in the section when users click through. Update the link target to match the full collapsed range (or keep rc.8 as its own section).
Useful? React with 👍 / 👎.
…tions The rake task's collapse_prerelease_sections removed section headers but left behind orphaned compare links at the bottom of CHANGELOG.md. Added cleanup_collapsed_prerelease_links to remove these links and update [unreleased] to compare from the last stable version. Fixes the current CHANGELOG.md which had a stale [16.4.0.rc.8] link. Co-Authored-By: Claude Opus 4.6 <[email protected]>
There was a problem hiding this comment.
🧹 Nitpick comments (1)
react_on_rails/rakelib/update_changelog.rake (1)
203-223: Consider edge case: prerelease links exist but none point to a stable version.If all prerelease compare links only reference other prereleases (e.g.,
rc.2 → rc.1 → rc.0 → rc.-1),stable_fromwill remainnil. The[unreleased]link won't be updated, but prerelease links will still be removed at line 222, potentially leaving[unreleased]pointing to a deleted reference.This may be acceptable if the release workflow guarantees at least one prerelease always links back to a stable version. If so, consider adding a brief comment documenting this assumption.
💡 Optional: Add a comment documenting the assumption
# After collapsing prerelease sections, remove their orphaned compare links # and update [unreleased] to compare from the last stable version. +# Assumes at least one prerelease link references a stable version as its "from" point. def cleanup_collapsed_prerelease_links(changelog, base_version)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@react_on_rails/rakelib/update_changelog.rake` around lines 203 - 223, The function cleanup_collapsed_prerelease_links can remove prerelease compare link lines even when none of those prereleases point back to a stable version (stable_from remains nil), which can leave the [unreleased] reference dangling; update the function cleanup_collapsed_prerelease_links to guard against this by returning the original changelog early when stable_from is nil (i.e., do not strip prerelease links if we couldn't find a stable_from), and add a short comment documenting the assumption/intent (mention stable_from and the [unreleased] replacement) so future maintainers understand why we skip removal when no stable link is found.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@react_on_rails/rakelib/update_changelog.rake`:
- Around line 203-223: The function cleanup_collapsed_prerelease_links can
remove prerelease compare link lines even when none of those prereleases point
back to a stable version (stable_from remains nil), which can leave the
[unreleased] reference dangling; update the function
cleanup_collapsed_prerelease_links to guard against this by returning the
original changelog early when stable_from is nil (i.e., do not strip prerelease
links if we couldn't find a stable_from), and add a short comment documenting
the assumption/intent (mention stable_from and the [unreleased] replacement) so
future maintainers understand why we skip removal when no stable link is found.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: e38c2970-e2a0-4fd3-9927-38a1b766edf7
📒 Files selected for processing (3)
CHANGELOG.mdreact_on_rails/rakelib/update_changelog.rakereact_on_rails/spec/react_on_rails/update_changelog_rake_helpers_spec.rb
🚧 Files skipped from review as they are similar to previous changes (1)
- CHANGELOG.md
|
Review: fix/changelog-16.4.0.rc.9 - The bug fix and new cleanup_collapsed_prerelease_links function are logically correct and unit tests cover the primary scenarios. Issues: 1) stable_from interpolated into String-sub replacement string at update_changelog.rake line 217 - Ruby treats backslash sequences as back-references, block form is safer. 2) Hardcoded master branch in pattern - silent failure if branch renamed. 3) Integration tests for prepare_changelog_for_auto_version lack compare-link footers so cleanup step is not exercised end-to-end. CHANGELOG: 'Changes since the last non-beta release.' at line 50 is orphaned mid-section after removing the rc.8 header; should be removed or repositioned. Pre-existing: PRs 2489, 2411, 2536 duplicated at lines 62-64 and 95-97, carried over from rc.8. Overall: logic is correct, above are improvements not blockers. |
| # Update [unreleased] link to compare from the stable version instead of the old prerelease | ||
| changelog = changelog.sub( | ||
| /^(\[unreleased\]:\s*#{compare_prefix})\S+(\.\.\.master)/i, | ||
| "\\1#{stable_from}\\2" |
There was a problem hiding this comment.
Unsafe replacement string interpolation
stable_from is interpolated directly into a String#sub replacement string. Ruby treats \1, \2, and \\ as special sequences in replacement strings — if stable_from ever contained a backslash followed by a digit (e.g., from a malformed CHANGELOG), the substitution would produce silently wrong output.
Version strings like v16.3.0 are safe in practice, but the block form is more defensive:
| "\\1#{stable_from}\\2" | |
| "#{Regexp.last_match(1)}#{stable_from}#{Regexp.last_match(2)}" |
| if stable_from | ||
| # Update [unreleased] link to compare from the stable version instead of the old prerelease | ||
| changelog = changelog.sub( | ||
| /^(\[unreleased\]:\s*#{compare_prefix})\S+(\.\.\.master)/i, |
There was a problem hiding this comment.
Hardcoded master branch
\.\.\.master is consistent with the rest of this file, but if the default branch is ever renamed (or this code is reused in a repo with a different default branch), [unreleased] will silently not be updated while orphaned prerelease links are still removed — leaving the changelog in a broken state.
At minimum a comment noting the assumption would help. Alternatively, extract the branch name as a constant or parameter:
| /^(\[unreleased\]:\s*#{compare_prefix})\S+(\.\.\.master)/i, | |
| /^(\[unreleased\]:\s*#{compare_prefix})\S+(\.\.\.(?:master|main))/i, |
| result = cleanup_collapsed_prerelease_links(changelog, "16.4.0") | ||
|
|
||
| expect(result).to eq(changelog) | ||
| end |
There was a problem hiding this comment.
Missing integration test for the link-cleanup step in prepare_changelog_for_auto_version
The compute_auto_version / prepare_changelog_for_auto_version integration tests above (lines 202-244) use fixture changelogs without compare-link footers. The new cleanup_collapsed_prerelease_links call in prepare_changelog_for_auto_version therefore runs but has no real effect — it is only exercised by these isolated unit tests.
Consider adding a test (here or in the integration section) where the fixture changelog includes compare links, verifying that after prepare_changelog_for_auto_version the prerelease links are removed and [unreleased] is updated to the stable version.
## Summary Syncs recent improvements from shakacode/react_on_rails (PRs [#2596](shakacode/react_on_rails#2596), [#2608](shakacode/react_on_rails#2608), [#2628](shakacode/react_on_rails#2628)) into the `/update-changelog` command. **Changes to `.claude/commands/update-changelog.md`:** - **Explicit version argument**: `/update-changelog 9.7.0.rc.10` now stamps the exact version provided, skipping auto-computation - **Git-tags-only RC index**: RC/beta index computation now uses only git tags, not changelog headers (headers are drafts, tags are shipped versions) - **Ambiguous bump explanation**: Version confirmation step now explains reasoning when bump type is ambiguous and asks user to confirm/override - **Tag reconciliation step**: New Step 2 catches missing version sections by comparing git tags against changelog headers (the #1 source of errors when skipped) - **Auto-commit/push/PR**: When stamping versions (`release`/`rc`/`beta`/explicit), automatically creates branch, commits, pushes, and opens PR - **Heading consolidation**: Prerelease collapse now consolidates duplicate category headings (e.g., two `### Fixed` become one) - **Orphaned link cleanup**: Prerelease collapse removes leftover compare links for collapsed prerelease sections - **v prefix clarity**: Explicit note that compare links must use `v` prefix to match git tags - **Header placement rule**: New version header must go immediately after `## [Unreleased]` **No changes to `rakelib/release.rake` or `docs/releasing.md`** — react_on_rails had no changes to those files in the last 3 days. ## Test plan - [ ] Run `/update-changelog` and verify the new tag reconciliation step (Step 2) runs before adding entries - [ ] Run `/update-changelog rc` and verify RC index is computed from git tags only - [ ] Run `/update-changelog 9.7.0` and verify explicit version stamps correctly - [ ] Run `/update-changelog release` and verify it auto-commits, pushes, and opens PR 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk because this PR only updates the `.claude/commands/update-changelog.md` documentation/workflow guidance and does not change runtime code paths. > > **Overview** > Updates the `/update-changelog` command guide to support *explicit version stamping* and to clarify that RC/beta increments must be derived **only from git tags** (not draft changelog headers), with improved user confirmation when version bump type is ambiguous. > > Reworks the process steps to add an upfront **tag-vs-changelog reconciliation** phase for missing release sections, clarifies compare-link `v`-prefix requirements and header placement, and expands prerelease-collapsing rules (merge duplicate category headings, remove orphaned diff links). When stamping versions (`release`/`rc`/`beta`/explicit), the guide now instructs auto-creating a branch, committing, pushing, and opening a PR. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit b116cc2. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Added explicit-version option and validation requiring it to be newer than existing tags. * Updated 5-step workflow with a reconciliation step that creates/moves version sections and consolidates prereleases. * Enforced v-prefix for bottom compare links and expanded formatting/verification guidance, plus CRITICAL insertion position note. * **New Features** * Shows computed version with confirmation prompt, explains ambiguous bumps, and summarizes actions taken. * Optional auto-commit/PR creation limited to CHANGELOG.md. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Claude Opus 4.6 <[email protected]>
## Summary Syncs recent improvements from shakacode/react_on_rails (PRs [#2596](shakacode/react_on_rails#2596), [#2608](shakacode/react_on_rails#2608), [#2628](shakacode/react_on_rails#2628)) into the `/update-changelog` command. **Changes to `.claude/commands/update-changelog.md`:** - **Explicit version argument**: `/update-changelog 9.7.0.rc.10` now stamps the exact version provided, skipping auto-computation - **Git-tags-only RC index**: RC/beta index computation now uses only git tags, not changelog headers (headers are drafts, tags are shipped versions) - **Ambiguous bump explanation**: Version confirmation step now explains reasoning when bump type is ambiguous and asks user to confirm/override - **Tag reconciliation step**: New Step 2 catches missing version sections by comparing git tags against changelog headers (the #1 source of errors when skipped) - **Auto-commit/push/PR**: When stamping versions (`release`/`rc`/`beta`/explicit), automatically creates branch, commits, pushes, and opens PR - **Heading consolidation**: Prerelease collapse now consolidates duplicate category headings (e.g., two `### Fixed` become one) - **Orphaned link cleanup**: Prerelease collapse removes leftover compare links for collapsed prerelease sections - **v prefix clarity**: Explicit note that compare links must use `v` prefix to match git tags - **Header placement rule**: New version header must go immediately after `## [Unreleased]` **No changes to `rakelib/release.rake` or `docs/releasing.md`** — react_on_rails had no changes to those files in the last 3 days. ## Test plan - [ ] Run `/update-changelog` and verify the new tag reconciliation step (Step 2) runs before adding entries - [ ] Run `/update-changelog rc` and verify RC index is computed from git tags only - [ ] Run `/update-changelog 9.7.0` and verify explicit version stamps correctly - [ ] Run `/update-changelog release` and verify it auto-commits, pushes, and opens PR 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk because this PR only updates the `.claude/commands/update-changelog.md` documentation/workflow guidance and does not change runtime code paths. > > **Overview** > Updates the `/update-changelog` command guide to support *explicit version stamping* and to clarify that RC/beta increments must be derived **only from git tags** (not draft changelog headers), with improved user confirmation when version bump type is ambiguous. > > Reworks the process steps to add an upfront **tag-vs-changelog reconciliation** phase for missing release sections, clarifies compare-link `v`-prefix requirements and header placement, and expands prerelease-collapsing rules (merge duplicate category headings, remove orphaned diff links). When stamping versions (`release`/`rc`/`beta`/explicit), the guide now instructs auto-creating a branch, committing, pushing, and opening a PR. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit b116cc2. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Added explicit-version option and validation requiring it to be newer than existing tags. * Updated 5-step workflow with a reconciliation step that creates/moves version sections and consolidates prereleases. * Enforced v-prefix for bottom compare links and expanded formatting/verification guidance, plus CRITICAL insertion position note. * **New Features** * Shows computed version with confirmation prompt, explains ambiguous bumps, and summarizes actions taken. * Optional auto-commit/PR creation limited to CHANGELOG.md. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Claude Opus 4.6 <[email protected]>
…k cleanup (#2596) ## Summary - Added missing changelog entries for PRs #2439, #2477, #2554 - Stamped version header for 16.4.0.rc.9 (collapsed rc.8 into rc.9) - **Fixed rake task bug**: `collapse_prerelease_sections` removed section headers but left behind orphaned compare links at the bottom of CHANGELOG.md. Added `cleanup_collapsed_prerelease_links` to remove these links and update `[unreleased]` to compare from the last stable version. ## Changes 1. **CHANGELOG.md**: New entries + rc.9 stamp + removed orphaned `[16.4.0.rc.8]` link 2. **update_changelog.rake**: Added `cleanup_collapsed_prerelease_links` function, called from `prepare_changelog_for_auto_version` 3. **update_changelog_rake_helpers_spec.rb**: 3 new tests covering link cleanup (multi-prerelease chain, single prerelease, no prereleases) ## Skipped PRs (not user-visible) - #2593 — test only (lock instrumentation) - #2591 — test only (Jest clearMocks) - #2588 — internal refactoring (Thor shell output) - #2584 — docs restructuring - #2587 — internal tooling (release script) - #2589 — docs fix (JWT claim name) - #2586 — docs/CI (dead link removal) ## Test plan - [x] All 13 rake helper tests pass (3 new) - [ ] CI passes - [ ] After merge, run `rake release` to publish 16.4.0.rc.9 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Fixed bin/setup failing in pnpm workspace member directories. * **New Features** * Added host configuration option for the Node Renderer Fastify worker. * **Improvements / Changed** * Automatic installation of react_on_rails_pro enabled for --rsc/--pro flags. * Clarified Pro-installation signaling related to immediate hydration warnings. * Updated changelog to include RC9 entries and ensure Unreleased links point to the correct base. * **Documentation** * Added startup warning and remediation guidance for unsafe compression middleware callbacks. * **Tests** * Added tests covering changelog prerelease-link cleanup behavior. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Claude Opus 4.6 <[email protected]>
…k cleanup (#2596) ## Summary - Added missing changelog entries for PRs #2439, #2477, #2554 - Stamped version header for 16.4.0.rc.9 (collapsed rc.8 into rc.9) - **Fixed rake task bug**: `collapse_prerelease_sections` removed section headers but left behind orphaned compare links at the bottom of CHANGELOG.md. Added `cleanup_collapsed_prerelease_links` to remove these links and update `[unreleased]` to compare from the last stable version. ## Changes 1. **CHANGELOG.md**: New entries + rc.9 stamp + removed orphaned `[16.4.0.rc.8]` link 2. **update_changelog.rake**: Added `cleanup_collapsed_prerelease_links` function, called from `prepare_changelog_for_auto_version` 3. **update_changelog_rake_helpers_spec.rb**: 3 new tests covering link cleanup (multi-prerelease chain, single prerelease, no prereleases) ## Skipped PRs (not user-visible) - #2593 — test only (lock instrumentation) - #2591 — test only (Jest clearMocks) - #2588 — internal refactoring (Thor shell output) - #2584 — docs restructuring - #2587 — internal tooling (release script) - #2589 — docs fix (JWT claim name) - #2586 — docs/CI (dead link removal) ## Test plan - [x] All 13 rake helper tests pass (3 new) - [ ] CI passes - [ ] After merge, run `rake release` to publish 16.4.0.rc.9 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Fixed bin/setup failing in pnpm workspace member directories. * **New Features** * Added host configuration option for the Node Renderer Fastify worker. * **Improvements / Changed** * Automatic installation of react_on_rails_pro enabled for --rsc/--pro flags. * Clarified Pro-installation signaling related to immediate hydration warnings. * Updated changelog to include RC9 entries and ensure Unreleased links point to the correct base. * **Documentation** * Added startup warning and remediation guidance for unsafe compression middleware callbacks. * **Tests** * Added tests covering changelog prerelease-link cleanup behavior. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Claude Opus 4.6 <[email protected]>
Summary
collapse_prerelease_sectionsremoved section headers but left behind orphaned compare links at the bottom of CHANGELOG.md. Addedcleanup_collapsed_prerelease_linksto remove these links and update[unreleased]to compare from the last stable version.Changes
[16.4.0.rc.8]linkcleanup_collapsed_prerelease_linksfunction, called fromprepare_changelog_for_auto_versionSkipped PRs (not user-visible)
Test plan
rake releaseto publish 16.4.0.rc.9🤖 Generated with Claude Code
Summary by CodeRabbit
Bug Fixes
New Features
Improvements / Changed
Documentation
Tests