Conversation
Add PR #2597 (clean stale webpack config on --rspack install) to changelog and stamp 16.4.0.rc.10 version header. Also update the /update-changelog skill to: - Auto-commit, push, and open a PR after stamping a version - Ask for user confirmation on ambiguous version bumps Co-Authored-By: Claude Opus 4.6 <[email protected]>
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughAdds explicit-version support to /update-changelog (accepts semver with optional .rc.N/.beta.N), requires user confirmation when a suggested bump is ambiguous, automates branch/commit/push/PR for release/rc/beta modes, consolidates changelog blocks when collapsing prerelease sections, and adds CHANGELOG entry 16.4.0.rc.10. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant LocalRepo as Repo
participant Rake
participant GitRemote as Remote
participant GitHub as PR
User->>Repo: run /update-changelog [explicit-version?]
alt explicit version provided
Repo->>Rake: invoke with explicit version (stamp header from provided version)
Rake-->>Repo: generate changelog diff, verify stamped header and links
else mode-based or auto
Repo->>Rake: invoke auto-compute mode
Rake-->>Repo: compute suggested bump (may be ambiguous)
Repo->>User: prompt to confirm or override bump (requires justification if ambiguous)
end
Repo->>Repo: update CHANGELOG and render consolidated Unreleased (merge identical headings)
alt release/rc/beta mode (or mode stamping)
Repo->>Repo: create branch, commit changelog + related files
Repo->>GitRemote: push branch
GitRemote->>GitHub: open PR with changelog diff
GitHub-->>User: PR created (reminder: post-merge release steps)
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 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 |
Greptile SummaryThis PR stamps the
Confidence Score: 3/5
Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["Run /update-changelog rc"] --> B["Analyze commits & PRs since last tag"]
B --> C["Add new entries under Unreleased"]
C --> D["Collapse prior rc.9 section into rc.10"]
D --> E["Stamp 16.4.0.rc.10 header with date"]
E --> F["Update version comparison links"]
F --> G["Auto-commit, push, open PR"]
G --> H["User merges PR & runs rake release"]
Last reviewed commit: 596cc76 |
Review: CHANGELOG +
|
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
CHANGELOG.md (1)
30-44:⚠️ Potential issue | 🟠 MajorConsolidate duplicate
#### Fixedsections.The release entry for
16.4.0.rc.10has two separate#### Fixedsections (line 30 and line 42). According to changelog conventions, each section heading should appear only once per release. All bug fix entries should be consolidated under a single#### Fixedheading.📋 Proposed fix to consolidate Fixed sections
Move the entry from the second
#### Fixedsection (line 44) up to the first#### Fixedsection:#### Fixed - **Ruby 3.4 compatibility for heredocs**: Replaced legacy `strip_heredoc` usage with native squiggly heredocs (`<<~`) and removed redundant chaining where indentation is already normalized by Ruby. [PR 2599](https://github.com/shakacode/react_on_rails/pull/2599) by [justin808](https://github.com/justin808). - **Fix install generator load path for `ReactOnRails::GitUtils`**: Added an explicit `require "react_on_rails/git_utils"` so generator execution does not rely on broader app boot side effects for this constant to be available. [PR 2599](https://github.com/shakacode/react_on_rails/pull/2599) by [justin808](https://github.com/justin808). - **`server_render_js` now handles non-Error throws safely**: Defensive error serialization now supports thrown primitives and `null` values without raising secondary `TypeError` exceptions while building SSR error payloads. [PR 2599](https://github.com/shakacode/react_on_rails/pull/2599) by [justin808](https://github.com/justin808). - **Clean stale webpack config on `--rspack` install**: Running `rails g react_on_rails:install --rspack` now removes leftover `config/webpack/` files when switching from webpack to rspack, preventing Shakapacker deprecation warnings. Only known stock/generated webpack configs are removed; custom files are preserved with a warning. [PR 2597](https://github.com/shakacode/react_on_rails/pull/2597) by [justin808](https://github.com/justin808). Fixes [Issue 2549](https://github.com/shakacode/react_on_rails/issues/2549). +- **Fixed `bin/setup` failing on pnpm workspace member directories**: `bin/setup` now checks for the presence of `pnpm-lock.yaml` before running `pnpm install --frozen-lockfile`, preventing failures in workspace member directories (e.g., `spec/dummy`) where dependencies are managed by the workspace root. [PR 2477](https://github.com/shakacode/react_on_rails/pull/2477) by [justin808](https://github.com/justin808). #### Improved - **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 - -- **Fixed `bin/setup` failing on pnpm workspace member directories**: `bin/setup` now checks for the presence of `pnpm-lock.yaml` before running `pnpm install --frozen-lockfile`, preventing failures in workspace member directories (e.g., `spec/dummy`) where dependencies are managed by the workspace root. [PR 2477](https://github.com/shakacode/react_on_rails/pull/2477) by [justin808](https://github.com/justin808). - #### Changed🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@CHANGELOG.md` around lines 30 - 44, The CHANGELOG for release 16.4.0.rc.10 has two separate "#### Fixed" headings; consolidate them by moving the "Fixed `bin/setup` failing on pnpm workspace member directories" bullet into the first "#### Fixed" section (which already contains the Ruby heredoc, GitUtils require, server_render_js, and Clean stale webpack config bullets) and remove the duplicate second "#### Fixed" heading so there is a single "#### Fixed" heading for that release.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CHANGELOG.md`:
- Line 28: The release header for version "16.4.0.rc.10" in CHANGELOG.md
currently shows "2026-03-14" but should match the PR's intended stamp date;
update the date in the version header line "### [16.4.0.rc.10] - 2026-03-14" to
the correct date (e.g., "2026-03-15") so the header matches the PR description
and creation date.
---
Outside diff comments:
In `@CHANGELOG.md`:
- Around line 30-44: The CHANGELOG for release 16.4.0.rc.10 has two separate
"#### Fixed" headings; consolidate them by moving the "Fixed `bin/setup` failing
on pnpm workspace member directories" bullet into the first "#### Fixed" section
(which already contains the Ruby heredoc, GitUtils require, server_render_js,
and Clean stale webpack config bullets) and remove the duplicate second "####
Fixed" heading so there is a single "#### Fixed" heading for that release.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 1cf746e3-3a38-401a-9fc3-a31d0bf3fa68
📒 Files selected for processing (2)
.claude/commands/update-changelog.mdCHANGELOG.md
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 596cc76ef0
ℹ️ 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".
e.g., `/update-changelog 16.5.0.rc.10` stamps that exact version instead of auto-computing. Infers the mode (rc/beta/release) from the version string. Co-Authored-By: Claude Opus 4.6 <[email protected]>
The rake task's RC collapsing logic removed the #### Pro header while keeping its ##### sub-headings, leaving orphaned h5 entries. Co-Authored-By: Claude Opus 4.6 <[email protected]>
Merged the second #### Fixed section (bin/setup pnpm entry from rc.9) into the first, so each heading appears only once per release. Co-Authored-By: Claude Opus 4.6 <[email protected]>
Review SummaryOverall: Documentation-only PR, low risk. The CHANGELOG update and skill improvements are straightforward, but there are three issues worth addressing before merge. Issues Found1. Duplicate 2. Hardcoded personal branch prefix in skill docs 3. Explicit-version flow is roundabout |
Review NotesOverall this is a clean documentation-only PR with two minor issues worth addressing. CHANGELOG.mdThe RC-collapse approach (merging One pre-existing structural artifact surfaced during the collapse: line 54 contains floating prose (
|
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
.claude/commands/update-changelog.md (1)
327-329: Use the repo branch naming convention in the example.The example branch
jg/changelog-16.4.0.rc.10does not follow the documentedtype/descriptive-nameconvention. Prefer something likechore/changelog-16.4.0.rc.10(ordocs/...if that’s the repo’s chosen type taxonomy). Based on learnings: Use branch naming conventiontype/descriptive-name(e.g.,fix/ssr-hydration-mismatch).🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.claude/commands/update-changelog.md around lines 327 - 329, Update the example branch name to follow the repo branch naming convention `type/descriptive-name`; replace `jg/changelog-16.4.0.rc.10` with a name like `chore/changelog-16.4.0.rc.10` (or `docs/changelog-16.4.0.rc.10` if docs is preferred) in the step that says "Create a feature branch (e.g., ...)" so the example demonstrates the documented `type/descriptive-name` pattern.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.claude/commands/update-changelog.md:
- Around line 295-309: Update the explicit-version docs to call the existing
rake task with the user-provided version string instead of inferring a mode;
replace the instruction that runs bundle exec rake
"update_changelog[rc|beta|release]" with a command that passes the explicit
version (e.g., bundle exec rake "update_changelog[16.5.0.rc.10]") and change the
verification step to confirm the stamped header and diff links match the
requested version; reference the rake task name update_changelog and its
mode_or_tag parameter when editing the text.
---
Nitpick comments:
In @.claude/commands/update-changelog.md:
- Around line 327-329: Update the example branch name to follow the repo branch
naming convention `type/descriptive-name`; replace `jg/changelog-16.4.0.rc.10`
with a name like `chore/changelog-16.4.0.rc.10` (or
`docs/changelog-16.4.0.rc.10` if docs is preferred) in the step that says
"Create a feature branch (e.g., ...)" so the example demonstrates the documented
`type/descriptive-name` pattern.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: a916274a-ebd5-45cc-9a58-5905fe463704
📒 Files selected for processing (2)
.claude/commands/update-changelog.mdCHANGELOG.md
🚧 Files skipped from review as they are similar to previous changes (1)
- CHANGELOG.md
|
Review of PR 2608 — Update CHANGELOG for 16.4.0.rc.10 Overall this is a clean documentation-only PR. Two minor issues in the skill doc and one structural issue in CHANGELOG.md worth addressing before merge. CHANGELOG.md — duplicate Fixed sections within rc.10 The 16.4.0.rc.10 block currently has two separate
Having Fixed -> Improved -> Fixed within one version block is non-standard and will confuse readers scanning the changelog. The bin/setup entry should be merged up into the first Fixed block. Since that entry was reorganized as part of this PR's move away from rc.9, this is the right time to fold it in. update-changelog.md — two nits (inline comments already filed)
|
The rake task's collapse_prerelease_sections used .uniq on flat blocks, which deduplicated header-only blocks like "#### Pro" and left duplicate "#### Fixed" sections when the same heading appeared in both Unreleased and the collapsed RC section. Replace .uniq + simple append with consolidate_changelog_blocks, which merges blocks sharing the same heading while preserving structural parent headers. Also strips the "Changes since the last non-beta release." marker text during consolidation. Co-Authored-By: Claude Opus 4.6 <[email protected]>
Review SummaryOverall this is a clean, low-risk PR — changelog stamping + tooling improvements. Three issues worth addressing: Bug: stray marker text in CHANGELOG.md (line ~54)
|
Review: CHANGELOG restructuring for 16.4.0.rc.10Overall this is a clean and well-organized consolidation — collapsing rc.9 into rc.10, converting Three issues found: |
| [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/v16.3.0...16.4.0.rc.9 | ||
| [unreleased]: https://github.com/shakacode/react_on_rails/compare/16.4.0.rc.10...master | ||
| [16.4.0.rc.10]: https://github.com/shakacode/react_on_rails/compare/v16.3.0...16.4.0.rc.10 |
There was a problem hiding this comment.
The compare base here is v16.3.0, but 16.4.0 stable was already released on 2026-03-10. This RC sits on top of that stable release, so the base should be v16.4.0. With the current URL, the GitHub diff view will include the entire 16.4.0 release history, duplicating it.
| [16.4.0.rc.10]: https://github.com/shakacode/react_on_rails/compare/v16.3.0...16.4.0.rc.10 | |
| [16.4.0.rc.10]: https://github.com/shakacode/react_on_rails/compare/v16.4.0...16.4.0.rc.10 |
| [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/v16.3.0...16.4.0.rc.9 | ||
| [unreleased]: https://github.com/shakacode/react_on_rails/compare/16.4.0.rc.10...master | ||
| [16.4.0.rc.10]: https://github.com/shakacode/react_on_rails/compare/v16.3.0...16.4.0.rc.10 |
There was a problem hiding this comment.
The 16.4.0 stable release is present in the changelog body but has no corresponding compare link entry — the links jump from [16.4.0.rc.10] straight to [16.3.0]. A [16.4.0] link should be added here:
| [16.4.0.rc.10]: https://github.com/shakacode/react_on_rails/compare/v16.3.0...16.4.0.rc.10 | |
| [16.4.0.rc.10]: https://github.com/shakacode/react_on_rails/compare/v16.4.0...16.4.0.rc.10 | |
| [16.4.0]: https://github.com/shakacode/react_on_rails/compare/v16.3.0...v16.4.0 |
| - **[Pro]** **TanStack Router SSR integration**: Added `createTanStackRouterRenderFunction` and `serverRenderTanStackAppAsync` via `react-on-rails-pro/tanstack-router` for TanStack Router SSR with the Pro Node Renderer. Uses TanStack Router's public `router.load()` API for reliable async SSR. Requires `rendering_returns_promises = true` in Pro config. [PR 2516](https://github.com/shakacode/react_on_rails/pull/2516) by [justin808](https://github.com/justin808). | ||
| - **`create-react-on-rails-app --rsc` flow**: Added `--rsc` support to `npx create-react-on-rails-app` so a single command can scaffold an RSC-ready app. The CLI now installs `react_on_rails_pro`, passes `--rsc` to `react_on_rails:install`, and points users to `/hello_server` after setup. [PR 2430](https://github.com/shakacode/react_on_rails/pull/2430) by [justin808](https://github.com/justin808). | ||
| - **Environment-variable-driven ports in Procfile templates**: Procfile templates now use `${PORT:-3000}` and `${SHAKAPACKER_DEV_SERVER_PORT:-3035}` instead of hardcoded ports, enabling multiple worktrees to run `bin/dev` concurrently without port conflicts. Includes a `PortSelector` that auto-detects free ports when defaults are occupied, plus a generated `.env.example` documenting manual overrides. [PR 2539](https://github.com/shakacode/react_on_rails/pull/2539) by [ihabadham](https://github.com/ihabadham). | ||
| - **CSP nonce support for RSC streaming and console replay scripts**: Added `cspNonce` to `rails_context` and threaded nonce values through Pro RSC streaming paths (server-side HTML stream injection and client-side console replay script insertion), with nonce sanitization. [PR 2418](https://github.com/shakacode/react_on_rails/pull/2418) by [justin808](https://github.com/justin808). |
There was a problem hiding this comment.
This entry describes Pro-specific functionality ("threaded nonce values through Pro RSC streaming paths"). The immediately related entry at line 50 (CSP nonce for immediate hydration scripts, PR 2398) correctly carries **[Pro]**. This one should too.
| - **CSP nonce support for RSC streaming and console replay scripts**: Added `cspNonce` to `rails_context` and threaded nonce values through Pro RSC streaming paths (server-side HTML stream injection and client-side console replay script insertion), with nonce sanitization. [PR 2418](https://github.com/shakacode/react_on_rails/pull/2418) by [justin808](https://github.com/justin808). | |
| - **[Pro]** **CSP nonce support for RSC streaming and console replay scripts**: Added `cspNonce` to `rails_context` and threaded nonce values through Pro RSC streaming paths (server-side HTML stream injection and client-side console replay script insertion), with nonce sanitization. [PR 2418](https://github.com/shakacode/react_on_rails/pull/2418) by [justin808](https://github.com/justin808). |
Prevent destructive git operations (force-push, reset --hard) that can destroy prior work on branches. Recommend worktrees or new branches for isolated testing instead. Co-Authored-By: Claude Opus 4.6 <[email protected]>
53c6e2d to
5e3f581
Compare
| - **[Pro]** **Fixed RSC stream tee backpressure deadlock for large payloads**. Replaced `pipe()`-based stream teeing with manual `on('data')` + `push()` forwarding to prevent deadlocks when RSC payloads exceed the 32KB default highWaterMark buffer, which caused the stream to hang indefinitely. [PR 2444](https://github.com/shakacode/react_on_rails/pull/2444) by [AbanoubGhadban](https://github.com/AbanoubGhadban). | ||
|
|
||
| ##### Added | ||
| #### Improved |
There was a problem hiding this comment.
The 16.4.0.rc.9 section has a duplicate #### Improved heading. PR 2439 and PR 2571 both appear here and at lines 40-41 (the earlier #### Improved block), so they're listed twice in the same version section.
Similarly, #### Changed appears twice in 16.4.0.rc.9 — once above #### Fixed (PR 2482) and again below it (PR 2590). Those two entries should be under a single #### Changed heading.
The consolidate_changelog_blocks helper in the rake task deduplicates these during RC collapses, but the 16.4.0.rc.9 section is already stamped so it won't be collapsed again. The duplicates need to be fixed manually here:
- Remove lines 84-88 (the second
#### Improvedblock) and append the unique entry (PR 2354) to the first#### Improvedblock at line 38. - Merge the second
#### Changedentry (PR 2590) into the first#### Changedblock at line 43.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5e3f581eea
ℹ️ 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".
| entries << current_entry if current_entry | ||
| current_entry = nil | ||
| pending_subheading << line | ||
| elsif line.match?(/\A\s*- /) |
There was a problem hiding this comment.
Keep nested bullet lines attached during PR deduplication
This parser treats any indented - line as a new entry, so nested bullets are split away from their parent item before PR-based deduplication runs. In a collapsed prerelease where the same PR appears twice with sub-bullets, deduplication drops one parent bullet but keeps both detached nested lines, which leaves duplicated/orphaned details in the final changelog text. Limiting new-entry detection to top-level bullets avoids corrupting multi-line entries.
Useful? React with 👍 / 👎.
Review NotesCHANGELOG.md — duplicate entries in 16.4.0.rc.9The 16.4.0.rc.9 section has two
The
|
The rake task was computing rc.11 instead of rc.10 because it used changelog headers (which are drafts) in addition to git tags (which represent shipped versions) to determine the next prerelease index. Since rc.10 was never tagged/released, only the rc.9 tag should count. Two fixes to update_changelog.rake: - compute_auto_version now uses only git tags for the next RC index - deduplicate_block_entries now deduplicates by full entry text instead of PR number, preserving distinct entries from the same PR Also adds PR 2613 (incomplete install message) and collapses rc.9+rc.10 into rc.10 in the CHANGELOG. Co-Authored-By: Claude Opus 4.6 <[email protected]>
| # rubocop:enable Metrics/AbcSize | ||
|
|
||
| def compute_auto_version(changelog, mode, monorepo_root, changelog_for_bump: changelog) | ||
| def compute_auto_version(changelog_for_bump, mode, monorepo_root) |
There was a problem hiding this comment.
Bug: existing spec tests will now fail with ArgumentError.
This PR simplifies the signature from:
def compute_auto_version(changelog, mode, monorepo_root, changelog_for_bump: changelog)to the current 3-positional-arg form. However, two pre-existing spec tests in update_changelog_rake_helpers_spec.rb still call with the old signature:
# spec line ~451
version = compute_auto_version(changelog, "release", repo_dir, changelog_for_bump: prepared_changelog)
# spec line ~473
version = compute_auto_version(changelog, "rc", repo_dir, changelog_for_bump: prepared_changelog)These calls will raise ArgumentError: wrong number of arguments (given 4, expected 3) with the new signature. The spec tests need to be updated to pass prepared_changelog as the first positional argument:
version = compute_auto_version(prepared_changelog, "release", repo_dir)
version = compute_auto_version(prepared_changelog, "rc", repo_dir)Note the semantic difference: the old code used changelog (original) as position-1 and prepared_changelog as the keyword, while the new code expects prepared_changelog as position-1. The tests should also drop the assertion expect(prepared_changelog).not_to include("### [16.4.0.rc.1]") from the release test since that checks prepare_changelog_for_auto_version behavior, not compute_auto_version.
|
Review posted inline. See discussion_r2937677113 for the main finding (spec ArgumentError). Summary: 3 issues found: (1) Critical - existing compute_auto_version spec tests use the old 4-arg signature that was removed in this PR and will raise ArgumentError; (2) Dead code - prerelease_indices_from_changelog is defined but no longer called; (3) Silent failure - update_changelog_links returns nil silently when compare links pattern not found. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6289bf754c
ℹ️ 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".
| # rubocop:enable Metrics/AbcSize | ||
|
|
||
| def compute_auto_version(changelog, mode, monorepo_root, changelog_for_bump: changelog) | ||
| def compute_auto_version(changelog_for_bump, mode, monorepo_root) |
There was a problem hiding this comment.
Keep compute_auto_version call signature compatible
Changing compute_auto_version to accept only three positional arguments breaks existing callers that still pass the prior keyword form (changelog_for_bump:), which now raises ArgumentError: wrong number of arguments (given 4, expected 3). In this repo, react_on_rails/spec/react_on_rails/update_changelog_rake_helpers_spec.rb still uses the old call shape (lines 451 and 473), so the helper spec suite will fail until the call contract is made backward-compatible or all callers are updated together.
Useful? React with 👍 / 👎.
Keep compute_auto_version backward compatible for keyword callers and ensure nested bullet lines stay attached to their parent entries when deduplicating changelog blocks. Update helper specs to reflect tag-driven prerelease indexing and add regression coverage for nested bullets.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2c60556dc4
ℹ️ 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".
| heading_key = normalize_heading_key(heading_match[1]) | ||
|
|
||
| if heading_indices.key?(heading_key) |
There was a problem hiding this comment.
Include parent context when deduplicating heading blocks
consolidate_changelog_blocks keys duplicates only by the heading text/level, so ##### Fixed blocks from different parent sections are merged even when they belong under separate #### headers. In a collapsed prerelease where Unreleased already has #### Pro + ##### Added, and another section has #### Pro + ##### Fixed plus an intervening #### Fixed, this logic emits ##### Fixed after #### Fixed (orphaned from #### Pro), which misclassifies Pro notes and corrupts changelog structure.
Useful? React with 👍 / 👎.
| # Append this block's content (lines after heading) to existing block | ||
| idx = heading_indices[heading_key] | ||
| content_after_heading = cleaned.lines.drop(1).join.gsub(/\A\n+/, "").rstrip | ||
| consolidated[idx] = "#{consolidated[idx].rstrip}\n#{content_after_heading}" unless content_after_heading.empty? |
There was a problem hiding this comment.
Minor observation: the rstrip call here means a block that ends with a blank line will lose that trailing blank. That's typically harmless for changelog text, but worth noting in case the formatting of some blocks depends on trailing whitespace. The unless content_after_heading.empty? guard is correct — it prevents appending empty strings to header-only blocks like #### Pro.
| # Only use git tags to determine the next prerelease index. | ||
| # Changelog headers are drafts that may not have been released yet — | ||
| # git tags are the authoritative source of shipped versions. | ||
| indices = prerelease_indices_from_tags(monorepo_root, base_version, mode) |
There was a problem hiding this comment.
The removal of prerelease_indices_from_changelog from the index computation is the right call — changelog headers are drafts, git tags are authoritative.
One side effect: prerelease_indices_from_changelog (defined at line 126) is now dead code. No callers remain after this change. It should be removed to avoid confusing future readers into thinking changelog headers are still consulted for RC index computation.
| def compute_auto_version(changelog, mode, monorepo_root, changelog_for_bump: nil) | ||
| # Keep backward compatibility with older callers that pass changelog_for_bump | ||
| # as a keyword while allowing the new 3-argument call shape. | ||
| changelog_for_bump ||= changelog |
There was a problem hiding this comment.
The backward-compatibility shim (changelog_for_bump ||= changelog) keeping the old keyword-arg call shape is necessary for the compute_auto_version test that passes changelog_for_bump: explicitly. That said, changelog_for_bump is only needed because the rake task prepares a different changelog for bump-type inference (with prerelease sections collapsed) vs the one passed to the version computation. If the rake task path (line ~476-478) always passes the prepared changelog as changelog, the two arguments collapse into one. Worth considering for a future cleanup if the call sites stabilize.
| # Deduplicate by full entry text (keep first occurrence). | ||
| # This preserves distinct entries that share the same PR number. | ||
| seen_texts = {} | ||
| unique_entries = entries.select do |entry| |
There was a problem hiding this comment.
Deduplication keyed on entry.strip (full text equality) is intentional — the comment above correctly explains it preserves distinct entries that share a PR number. One edge case worth being aware of: if the same fix is described with slightly different wording across two RC sections (human-edited), it won't be deduplicated. That's probably the desired behavior, but it means the deduplication is purely mechanical and doesn't catch semantic duplicates. The existing tests cover the identity-equality cases well.
Review: PR #2608 — Update CHANGELOG for 16.4.0.rc.10Overall this is well-executed. The changelog entries are complete and correctly formatted, the Main finding: dead code in
|
## 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]>
## Summary - **Add PR #2597** (clean stale webpack config on `--rspack` install) to changelog under `#### Fixed` - **Stamp `16.4.0.rc.10`** version header with today's date - **Improve `/update-changelog` skill**: auto-commit/push/PR after stamping, ask for confirmation on ambiguous version bumps ## Test plan - [ ] Verify CHANGELOG.md formatting and version links are correct - [ ] Verify `/update-changelog` skill reads correctly for future invocations 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Documentation-only updates to the changelog and the Claude `/update-changelog` command instructions; no runtime code paths changed. > > **Overview** > Stamps a new `### [16.4.0.rc.10] - 2026-03-14` section in `CHANGELOG.md`, folding in the `--rspack` stale `config/webpack/` cleanup fix and updating the compare links. > > Updates the `/update-changelog` command docs to (1) require explicit user confirmation when the suggested bump type is ambiguous and (2) switch release/rc/beta mode guidance from manual “commit/push” steps to **automatically creating a branch, committing, pushing, and opening a PR** after stamping. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 596cc76. 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 * **Bug Fixes** * Ruby 3.4 heredoc compatibility, pnpm workspace setup guard, SSR error serialization, CSS module SSR behavior, stale webpack cleanup, and private path handling on fresh installs. * **New Features** * Explicit version stamping for changelogs (supports .rc/.beta), clearer prerelease/RC/Beta flows, automated changelog PR creation, and consolidation of duplicate changelog headings. * **Tests** * Added/updated tests to verify changelog consolidation and ordering. * **Chores** * Improved bump confirmation messaging and expanded workflow documentation. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Claude Opus 4.6 <[email protected]>
## Summary - **Add PR #2597** (clean stale webpack config on `--rspack` install) to changelog under `#### Fixed` - **Stamp `16.4.0.rc.10`** version header with today's date - **Improve `/update-changelog` skill**: auto-commit/push/PR after stamping, ask for confirmation on ambiguous version bumps ## Test plan - [ ] Verify CHANGELOG.md formatting and version links are correct - [ ] Verify `/update-changelog` skill reads correctly for future invocations 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Documentation-only updates to the changelog and the Claude `/update-changelog` command instructions; no runtime code paths changed. > > **Overview** > Stamps a new `### [16.4.0.rc.10] - 2026-03-14` section in `CHANGELOG.md`, folding in the `--rspack` stale `config/webpack/` cleanup fix and updating the compare links. > > Updates the `/update-changelog` command docs to (1) require explicit user confirmation when the suggested bump type is ambiguous and (2) switch release/rc/beta mode guidance from manual “commit/push” steps to **automatically creating a branch, committing, pushing, and opening a PR** after stamping. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 596cc76. 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 * **Bug Fixes** * Ruby 3.4 heredoc compatibility, pnpm workspace setup guard, SSR error serialization, CSS module SSR behavior, stale webpack cleanup, and private path handling on fresh installs. * **New Features** * Explicit version stamping for changelogs (supports .rc/.beta), clearer prerelease/RC/Beta flows, automated changelog PR creation, and consolidation of duplicate changelog headings. * **Tests** * Added/updated tests to verify changelog consolidation and ordering. * **Chores** * Improved bump confirmation messaging and expanded workflow documentation. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Claude Opus 4.6 <[email protected]>
Summary
--rspackinstall) to changelog under#### Fixed16.4.0.rc.10version header with today's date/update-changelogskill: auto-commit/push/PR after stamping, ask for confirmation on ambiguous version bumpsTest plan
/update-changelogskill reads correctly for future invocations🤖 Generated with Claude Code
Note
Low Risk
Documentation-only updates to the changelog and the Claude
/update-changelogcommand instructions; no runtime code paths changed.Overview
Stamps a new
### [16.4.0.rc.10] - 2026-03-14section inCHANGELOG.md, folding in the--rspackstaleconfig/webpack/cleanup fix and updating the compare links.Updates the
/update-changelogcommand docs to (1) require explicit user confirmation when the suggested bump type is ambiguous and (2) switch release/rc/beta mode guidance from manual “commit/push” steps to automatically creating a branch, committing, pushing, and opening a PR after stamping.Written by Cursor Bugbot for commit 596cc76. Configure here.
Summary by CodeRabbit
Bug Fixes
New Features
Tests
Chores