Conversation
WalkthroughThe CHANGELOG.md file was updated to promote the release candidate version 16.6.0.rc.1 to final release 16.6.0 (dated April 9), adjust comparison links accordingly, reorganize fixed/improved entries, and add documentation for node-renderer exception messages and render-request diagnostics. Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~2 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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 Confidence Score: 5/5Safe to merge — documentation-only change with no code modifications. The PR only modifies CHANGELOG.md. All new entries are accurately attributed to their PRs, the section headers are well-formed, the [Unreleased] section is correctly left empty, and the comparison links at the bottom correctly point from v16.5.1 to v16.6.0.rc.1. No issues found. No files require special attention.
|
| Filename | Overview |
|---|---|
| CHANGELOG.md | Adds the 16.6.0.rc.1 release section, moves Fixed entries from the old rc.0 position, adds new entries for PRs #2834, #3063, #3069, #2921, #3070, #3068, #2932, #2881, #2918, and updates comparison links — all structurally correct and complete. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["### [Unreleased] (empty)"] --> B["### [16.6.0.rc.1] - 2026-04-07"]
B --> C[Removed\nimmediate_hydration – PR 2834]
B --> D[Added\nENV password, interactive prompt,\nkeep-alive timeout, Pro upgrade – PRs 2921/3063/3069/2822]
B --> E[Improved\nDoctor, error messages, sync_versions,\nnode renderer errors – PRs 3070/3068/2823/2849]
B --> F[Fixed\nTanStack, fork loop, generator rewrites,\nSSR stale connections, etc. – PRs 2932/2881/2918/3069/2901/2891/2652/2885]
B --> G["### [16.5.1] - 2026-03-27 (unchanged)"]
H["[unreleased] link → compare/v16.6.0.rc.1...main"]
I["[16.6.0.rc.1] link → compare/v16.5.1...v16.6.0.rc.1"]
Reviews (1): Last reviewed commit: "Update CHANGELOG.md for 16.6.0.rc.1" | Re-trigger Greptile
|
|
||
| - **[Pro]** **Auto-resolve renderer password from ENV**: `setup_renderer_password` now falls back to `ENV["RENDERER_PASSWORD"]` when neither `config.renderer_password` nor a URL-embedded password is set, aligning Rails-side behavior with the Node Renderer defaults. Blank values (`nil` or `""`) are treated identically and fall through the full resolution chain: config → URL → ENV. [PR 2921](https://github.com/shakacode/react_on_rails/pull/2921) by [justin808](https://github.com/justin808). | ||
| - **Interactive mode prompt for `create-react-on-rails-app`**: Running `npx create-react-on-rails-app` without `--pro` or `--rsc` now shows an interactive prompt to choose between Standard, Pro, and RSC modes (default: RSC recommended). Explicit flags skip the prompt, and non-interactive environments fall back to standard mode automatically. [PR 3063](https://github.com/shakacode/react_on_rails/pull/3063) by [justin808](https://github.com/justin808). | ||
| - **[Pro] Configurable HTTP keep-alive timeout for node renderer connections**: Added `renderer_http_keep_alive_timeout` configuration option (default: 30s) to control how long idle persistent HTTP/2 connections to the node renderer are kept alive, preventing SSR failures from stale connections. [PR 3069](https://github.com/shakacode/react_on_rails/pull/3069) by [justin808](https://github.com/justin808). |
There was a problem hiding this comment.
The [Pro] tag formatting here (and on lines 47, 54, 55, 56) differs from the project's documented convention. Per .claude/docs/changelog-guidelines.md, the format should be **[Pro]** as a separate bold token followed by a separate bold feature name:
| - **[Pro] Configurable HTTP keep-alive timeout for node renderer connections**: Added `renderer_http_keep_alive_timeout` configuration option (default: 30s) to control how long idle persistent HTTP/2 connections to the node renderer are kept alive, preventing SSR failures from stale connections. [PR 3069](https://github.com/shakacode/react_on_rails/pull/3069) by [justin808](https://github.com/justin808). | |
| - **[Pro]** **Configurable HTTP keep-alive timeout for node renderer connections**: Added `renderer_http_keep_alive_timeout` configuration option (default: 30s) to control how long idle persistent HTTP/2 connections to the node renderer are kept alive, preventing SSR failures from stale connections. [PR 3069](https://github.com/shakacode/react_on_rails/pull/3069) by [justin808](https://github.com/justin808). |
Affected lines using the merged **[Pro] Feature name** style: 47, 54, 55, 56 (same fix needed on each).
| - **[Pro]** **Fixed TanStack Router SSR hydration mismatches in the async path**: Client hydration now restores server match data before first render, uses `RouterProvider` directly to match the server-rendered tree, and stops the post-hydration load when a custom `router.options.hydrate` callback fails instead of continuing with partially hydrated client state. [PR 2932](https://github.com/shakacode/react_on_rails/pull/2932) by [justin808](https://github.com/justin808). | ||
| - **[Pro] Fixed infinite fork loop when node renderer worker fails to bind port**: When a worker failed during `app.listen()` (e.g., `EADDRINUSE`), the master previously reforked unconditionally, causing an infinite fork/crash loop that consumed CPU and filled logs. Workers now send a `WORKER_STARTUP_FAILURE` IPC message to the master before exiting; the master sets an abort flag and exits with a clear error message instead of reforking. Scheduled restarts and runtime crashes continue to refork as before. [PR 2881](https://github.com/shakacode/react_on_rails/pull/2881) by [justin808](https://github.com/justin808). | ||
| - **[Pro] Fixed Pro generator multiline and template-literal rewrites**: The Pro install generator now correctly handles multiline non-parenthesized `gem "react_on_rails"` declarations while preserving trailing options, and correctly rewrites module specifiers around template literals by preserving escaped sequences and detecting multiline template-literal starts after a closed inline template. [PR 2918](https://github.com/shakacode/react_on_rails/pull/2918) by [justin808](https://github.com/justin808). | ||
| - **[Pro] Fixed SSR failures from stale persistent HTTP/2 connections to the node renderer**: When idle connections became stale (closed by the node renderer but still considered active by the Ruby side), render requests could be truncated mid-flight, producing confusing `FST_ERR_CTP_INVALID_CONTENT_LENGTH` and "INVALID NIL or NULL result for rendering" errors. The new `renderer_http_keep_alive_timeout` config (default: 30s) prevents this by closing idle connections before they go stale. Content-Length mismatches now produce specific diagnostic messages instead of generic errors, and sensitive field names are filtered from diagnostic output. Fixes [Issue 3071](https://github.com/shakacode/react_on_rails/issues/3071). [PR 3069](https://github.com/shakacode/react_on_rails/pull/3069) by [justin808](https://github.com/justin808). |
There was a problem hiding this comment.
PR #3069 also appears in the Added section above (the renderer_http_keep_alive_timeout config entry). That's intentional and accurate — one PR contributing both a new feature and a bug fix — but it's worth a quick sanity-check that the two entries together tell a complete, non-redundant story. The current split looks fine: the Added entry describes the new knob, this Fixed entry describes the underlying stale-connection bug it solves.
Changelog Review — 16.6.0.rc.1This is a changelog-only PR and the overall structure is correct: empty Issues
The project convention (per Several new entries in this PR use a merged form ( PR #3069 appears in both Added and Fixed (noted inline, not a bug) The dual appearance is accurate — the PR introduced a new config option and fixed a stale-connection bug — but it's called out on line 56 for awareness. Everything else looks good
|
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
packages/react-on-rails-pro-node-renderer/src/worker/handleRenderRequest.ts (1)
177-194:⚠️ Potential issue | 🟠 MajorPlease keep
handleNewBundlesProvidedonPromise.allto preserve the existing protocol behavior.Line 182’s
Promise.allSettledmigration changes the established per-bundle orchestration contract in this path. This should stay onPromise.allunless protocol-level behavior changes are coordinated end-to-end.Suggested patch
- // Defensive: use allSettled so that if handleNewBundleProvided ever throws - // unexpectedly, all in-flight operations still complete before the handler - // returns and the onResponse hook deletes req.uploadDir. Currently - // handleNewBundleProvided catches its own errors, so Promise.all would also - // wait for every promise. - const settled = await Promise.allSettled(handlingPromises); - const firstFailure = settled.find((r): r is PromiseRejectedResult => r.status === 'rejected'); - if (firstFailure) { - throw firstFailure.reason; - } - - // handleNewBundleProvided returns undefined on success or a ResponseResult on - // failure (e.g., lock timeout). Find the first error response, if any. - const results = settled - .filter((r): r is PromiseFulfilledResult<ResponseResult | undefined> => r.status === 'fulfilled') - .map((r) => r.value); + const results = await Promise.all(handlingPromises); return results.find((result) => result !== undefined);Based on learnings: In
packages/react-on-rails-pro-node-renderer, thePromise.allpattern for per-bundle operations is intentional, and switching toPromise.allSettledrequires Ruby-side protocol changes.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@packages/react-on-rails-pro-node-renderer/src/worker/handleRenderRequest.ts` around lines 177 - 194, The code changed per-bundle orchestration from Promise.all to Promise.allSettled, altering the protocol; revert to using Promise.all on the handlingPromises array so failures short-circuit as before: replace the Promise.allSettled(handlingPromises) call with Promise.all(handlingPromises), remove the PromiseRejectedResult/PromiseFulfilledResult handling (the settled/find-first-failure logic), and then treat the resolved array directly (it will be an array of ResponseResult | undefined) and return the first non-undefined result; reference symbols: handlingPromises, handleNewBundleProvided, and the surrounding function in handleRenderRequest.ts.
🧹 Nitpick comments (3)
react_on_rails/lib/generators/react_on_rails/templates/base/base/bin/switch-bundler (1)
93-96: Consider extracting package-name normalization into a helper.The same regex appears in both loops (Line 93 and Line 96). A tiny helper would reduce duplication and make future edits safer.
♻️ Optional refactor
+ def package_name(dep) + dep[%r{\A(@[^/]+/[^@]+|[^@]+)}] + end + def update_dependencies @@ remove_deps[:dependencies].each do |dep| - package_json["dependencies"]&.delete(dep[%r{\A(@[^/]+/[^@]+|[^@]+)}]) + package_json["dependencies"]&.delete(package_name(dep)) end remove_deps[:dev_dependencies].each do |dep| - package_json["devDependencies"]&.delete(dep[%r{\A(@[^/]+/[^@]+|[^@]+)}]) + package_json["devDependencies"]&.delete(package_name(dep)) end🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@react_on_rails/lib/generators/react_on_rails/templates/base/base/bin/switch-bundler` around lines 93 - 96, The package-name extraction regex is duplicated in the loops that delete entries from package_json ("dependencies" and "devDependencies"); extract that regex into a small helper (e.g., normalize_package_name or package_basename) and replace the inline dep[%r{\A(@[^/]+/[^@]+|[^@]+)}] calls with a call to that helper in both remove_deps[:dependencies] and remove_deps[:dev_dependencies] loops, keeping behavior identical; ensure the helper is defined near the surrounding code so it’s visible to the deletion logic and reuse it wherever this pattern appears.react_on_rails/spec/react_on_rails/generators/js_dependency_manager_spec.rb (1)
713-714: Reduce duplicated Babel preset literal to avoid drift.These three selectors can reference the existing constant instead of repeating the versioned string.
♻️ Proposed refactor
+ let(:babel_preset) do + ReactOnRails::Generators::JsDependencyManager::BABEL_REACT_DEPENDENCIES.first + end + describe "#add_js_dependencies" do @@ babel_calls = instance.add_npm_dependencies_calls.select do |call| - call[:packages].include?("@babel/preset-react@^7.0.0") + call[:packages].include?(babel_preset) end @@ babel_calls = instance.add_npm_dependencies_calls.select do |call| - call[:packages].include?("@babel/preset-react@^7.0.0") + call[:packages].include?(babel_preset) end @@ babel_calls = instance.add_npm_dependencies_calls.select do |call| - call[:packages].include?("@babel/preset-react@^7.0.0") + call[:packages].include?(babel_preset) endAlso applies to: 725-726, 749-750
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@react_on_rails/spec/react_on_rails/generators/js_dependency_manager_spec.rb` around lines 713 - 714, The spec duplicates the literal "@babel/preset-react@^7.0.0" in multiple selectors (e.g., call[:packages].include?("@babel/preset-react@^7.0.0") at the shown diff and also at lines referenced 725-726 and 749-750); replace those repeated string literals with the existing constant that already holds that versioned preset value (use the project's defined Babel preset constant instead of repeating the string) so all include? checks reference the single constant.packages/react-on-rails-pro-node-renderer/src/worker/handleRenderRequest.ts (1)
84-91: Update stale JSDoc params forhandleNewBundleProvided.The doc block still references
bundleFilePathPerTimestampandrenderingRequest, but Line 91 now takesrequestContext: RequestInfo. Please sync the param docs with the current signature.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@packages/react-on-rails-pro-node-renderer/src/worker/handleRenderRequest.ts` around lines 84 - 91, Update the JSDoc for the function handleNewBundleProvided to match its current signature by replacing or removing outdated params like bundleFilePathPerTimestamp and renderingRequest and documenting the actual parameter requestContext: RequestInfo (and any other real params used in the function). Ensure the JSDoc `@param` entries reference the correct symbol names (e.g., requestContext) and describe their types/roles consistently with the implementation in handleNewBundleProvided.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Outside diff comments:
In `@packages/react-on-rails-pro-node-renderer/src/worker/handleRenderRequest.ts`:
- Around line 177-194: The code changed per-bundle orchestration from
Promise.all to Promise.allSettled, altering the protocol; revert to using
Promise.all on the handlingPromises array so failures short-circuit as before:
replace the Promise.allSettled(handlingPromises) call with
Promise.all(handlingPromises), remove the
PromiseRejectedResult/PromiseFulfilledResult handling (the
settled/find-first-failure logic), and then treat the resolved array directly
(it will be an array of ResponseResult | undefined) and return the first
non-undefined result; reference symbols: handlingPromises,
handleNewBundleProvided, and the surrounding function in handleRenderRequest.ts.
---
Nitpick comments:
In `@packages/react-on-rails-pro-node-renderer/src/worker/handleRenderRequest.ts`:
- Around line 84-91: Update the JSDoc for the function handleNewBundleProvided
to match its current signature by replacing or removing outdated params like
bundleFilePathPerTimestamp and renderingRequest and documenting the actual
parameter requestContext: RequestInfo (and any other real params used in the
function). Ensure the JSDoc `@param` entries reference the correct symbol names
(e.g., requestContext) and describe their types/roles consistently with the
implementation in handleNewBundleProvided.
In
`@react_on_rails/lib/generators/react_on_rails/templates/base/base/bin/switch-bundler`:
- Around line 93-96: The package-name extraction regex is duplicated in the
loops that delete entries from package_json ("dependencies" and
"devDependencies"); extract that regex into a small helper (e.g.,
normalize_package_name or package_basename) and replace the inline
dep[%r{\A(@[^/]+/[^@]+|[^@]+)}] calls with a call to that helper in both
remove_deps[:dependencies] and remove_deps[:dev_dependencies] loops, keeping
behavior identical; ensure the helper is defined near the surrounding code so
it’s visible to the deletion logic and reuse it wherever this pattern appears.
In `@react_on_rails/spec/react_on_rails/generators/js_dependency_manager_spec.rb`:
- Around line 713-714: The spec duplicates the literal
"@babel/preset-react@^7.0.0" in multiple selectors (e.g.,
call[:packages].include?("@babel/preset-react@^7.0.0") at the shown diff and
also at lines referenced 725-726 and 749-750); replace those repeated string
literals with the existing constant that already holds that versioned preset
value (use the project's defined Babel preset constant instead of repeating the
string) so all include? checks reference the single constant.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: e86c4fc5-8ada-49f6-86c0-bb95ab75e49e
⛔ Files ignored due to path filters (6)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yamlreact_on_rails/Gemfile.lockis excluded by!**/*.lockreact_on_rails/spec/dummy/Gemfile.lockis excluded by!**/*.lockreact_on_rails_pro/Gemfile.lockis excluded by!**/*.lockreact_on_rails_pro/spec/dummy/Gemfile.lockis excluded by!**/*.lockreact_on_rails_pro/spec/execjs-compatible-dummy/Gemfile.lockis excluded by!**/*.lock
📒 Files selected for processing (18)
CHANGELOG.mdpackage.jsonpackages/create-react-on-rails-app/package.jsonpackages/react-on-rails-pro-node-renderer/package.jsonpackages/react-on-rails-pro-node-renderer/src/shared/utils.tspackages/react-on-rails-pro-node-renderer/src/worker.tspackages/react-on-rails-pro-node-renderer/src/worker/handleRenderRequest.tspackages/react-on-rails-pro-node-renderer/src/worker/vm.tspackages/react-on-rails-pro/package.jsonpackages/react-on-rails/package.jsonreact_on_rails/lib/generators/react_on_rails/js_dependency_manager.rbreact_on_rails/lib/generators/react_on_rails/templates/base/base/bin/switch-bundlerreact_on_rails/lib/react_on_rails/version.rbreact_on_rails/spec/dummy/package.jsonreact_on_rails/spec/react_on_rails/generators/install_generator_spec.rbreact_on_rails/spec/react_on_rails/generators/js_dependency_manager_spec.rbreact_on_rails_pro/lib/react_on_rails_pro/version.rbreact_on_rails_pro/spec/dummy/package.json
✅ Files skipped from review due to trivial changes (12)
- packages/create-react-on-rails-app/package.json
- react_on_rails_pro/spec/dummy/package.json
- react_on_rails/spec/dummy/package.json
- package.json
- react_on_rails/lib/react_on_rails/version.rb
- packages/react-on-rails-pro-node-renderer/package.json
- packages/react-on-rails-pro/package.json
- packages/react-on-rails/package.json
- react_on_rails/lib/generators/react_on_rails/js_dependency_manager.rb
- react_on_rails_pro/lib/react_on_rails_pro/version.rb
- react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb
- CHANGELOG.md
Adds missing changelog entries to the `[Unreleased]` section for PRs merged since `v16.6.0.rc.0`. Analyzed 19 commits on `origin/main` since the last tag, identified 1 missing user-visible PR (#3069), and skipped 10 non-user-visible PRs (docs, tests, internal refactors). **New entries added:** - **Added**: `[Pro] Configurable HTTP keep-alive timeout for node renderer connections` (PR #3069) - **Fixed**: `[Pro] Fixed SSR failures from stale persistent HTTP/2 connections` (PR #3069) **Entries already present** (added in prior changelog updates): PRs **Skipped** (not user-visible): #2893 (docs), #2916 (docs), #2922 (test fix), #2923 (test fix), #2925 (internal refactor), #3064 (docs), #3065 (docs), #3066 (docs), #3067 (docs), #3072 (docs). - [x] ~Add/update test to cover these changes~ - [x] ~Update documentation~ - [x] Update CHANGELOG file No code changes — CHANGELOG.md only. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk because this PR only changes documentation (`CHANGELOG.md`) and does not modify runtime code. > > **Overview** > Updates `CHANGELOG.md` *[Unreleased]* to include missing Pro release notes for PR `#3069`, documenting the new `renderer_http_keep_alive_timeout` config and the associated fix for SSR failures from stale persistent HTTP/2 connections to the node renderer. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 8d1a480. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> * **New Features** * Interactive mode selection prompt for CLI tool when no explicit mode is specified * Configurable keep-alive timeout setting for Pro users (default 30 seconds) * **Bug Fixes** * Enhanced validation and error handling for invalid request payloads * Improved template literal handling in code generation * Better HTTP connection stability with enhanced diagnostic messaging <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
c15b4f2 to
956cc0f
Compare
|
Review: LGTM This is a clean documentation-only changelog update. All changes look correct:
One minor note: the PR description says "consolidate rc.0 and rc.1" but only rc.1 appears in the diff — rc.0 content was presumably already folded into rc.1 in a prior PR. No action needed, just noting it in case the description is revised. |
## Summary - Consolidate rc.0 and rc.1 prerelease sections into a single 16.6.0 stable release section - Add new entries for PRs merged since rc.1 (PR 3086, PR 2877, PR 3083) - Reorder sections per changelog guidelines (Removed -> Added -> Improved -> Fixed) - Remove orphaned RC diff links ## Test plan - [ ] Verify changelog formatting is correct - [ ] Verify version diff links at bottom of file After merge, run `rake release` to publish and auto-create the GitHub release. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Fixed third-party dependency version pinning in the generator. * **Improvements** * Enhanced exception messages for clearer context in node-renderer requests. * Improved diagnostic output for invalid render requests with updated documentation guidance. <!-- end of auto-generated comment: release notes by coderabbit.ai --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Documentation-only change updating release notes and compare links; no runtime behavior is modified. > > **Overview** > Publishes the **`16.6.0`** changelog section (dated 2026-04-09) by consolidating the prior RC content and reordering entries to match the changelog guidelines. > > Adds release-note entries for recently merged work (notably Pro node-renderer diagnostic/error-message improvements and generator npm dependency pinning), and updates the bottom compare links to reference `v16.6.0` instead of the RC tag. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 956cc0f. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
## Summary - Consolidate rc.0 and rc.1 prerelease sections into a single 16.6.0 stable release section - Add new entries for PRs merged since rc.1 (PR 3086, PR 2877, PR 3083) - Reorder sections per changelog guidelines (Removed -> Added -> Improved -> Fixed) - Remove orphaned RC diff links ## Test plan - [ ] Verify changelog formatting is correct - [ ] Verify version diff links at bottom of file After merge, run `rake release` to publish and auto-create the GitHub release. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Fixed third-party dependency version pinning in the generator. * **Improvements** * Enhanced exception messages for clearer context in node-renderer requests. * Improved diagnostic output for invalid render requests with updated documentation guidance. <!-- end of auto-generated comment: release notes by coderabbit.ai --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Documentation-only change updating release notes and compare links; no runtime behavior is modified. > > **Overview** > Publishes the **`16.6.0`** changelog section (dated 2026-04-09) by consolidating the prior RC content and reordering entries to match the changelog guidelines. > > Adds release-note entries for recently merged work (notably Pro node-renderer diagnostic/error-message improvements and generator npm dependency pinning), and updates the bottom compare links to reference `v16.6.0` instead of the RC tag. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 956cc0f. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
## Summary - Consolidate rc.0 and rc.1 prerelease sections into a single 16.6.0 stable release section - Add new entries for PRs merged since rc.1 (PR 3086, PR 2877, PR 3083) - Reorder sections per changelog guidelines (Removed -> Added -> Improved -> Fixed) - Remove orphaned RC diff links ## Test plan - [ ] Verify changelog formatting is correct - [ ] Verify version diff links at bottom of file After merge, run `rake release` to publish and auto-create the GitHub release. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Fixed third-party dependency version pinning in the generator. * **Improvements** * Enhanced exception messages for clearer context in node-renderer requests. * Improved diagnostic output for invalid render requests with updated documentation guidance. <!-- end of auto-generated comment: release notes by coderabbit.ai --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Documentation-only change updating release notes and compare links; no runtime behavior is modified. > > **Overview** > Publishes the **`16.6.0`** changelog section (dated 2026-04-09) by consolidating the prior RC content and reordering entries to match the changelog guidelines. > > Adds release-note entries for recently merged work (notably Pro node-renderer diagnostic/error-message improvements and generator npm dependency pinning), and updates the bottom compare links to reference `v16.6.0` instead of the RC tag. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 956cc0f. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ages * origin/main: (44 commits) Consolidate CSP nonce sanitization into shared module (#2828) Add comprehensive --rsc-pro generator tests (#3098) fix: cross-env validation and docs for renderer password (#3090) Improve package metadata and Pro upgrade CTAs (#3112) docs: standardize warning syntax to GFM alert format (#3115) docs: improve react-intl documentation for React Server Components (#3085) Fix generator CI SSR regression on main (#3110) Refocus GitHub README on docs navigation (#3113) Add manual dev environment testing checklist for coding agents (#3074) Bump version to 16.6.0 Update CHANGELOG.md for 16.6.0 (#3078) fix: node-renderer diagnostic improvements (#3086) fix: pin third-party npm deps in generator to prevent peer dep conflicts (#3083) chore(deps): bump lodash from 4.17.23 to 4.18.1 in the npm-security group across 1 directory (#2920) fix: refactor formatExceptionMessage to accept generic request context (#2877) Bump version to 16.6.0.rc.1 Update CHANGELOG.md for 16.6.0.rc.1 (#3079) Update CHANGELOG.md unreleased section (#3077) Fix Content-Length mismatch and null renderingRequest errors in node renderer (#3069) Improve memory debugging docs with simpler heap snapshot approach (#3072) ... # Conflicts: # docs/pro/home-pro.md # docs/pro/react-on-rails-pro.md # docs/sidebars.ts
Summary
Test plan
After merge, run
rake releaseto publish and auto-create the GitHub release.Summary by CodeRabbit
Bug Fixes
Improvements
Note
Low Risk
Documentation-only change updating release notes and compare links; no runtime behavior is modified.
Overview
Publishes the
16.6.0changelog section (dated 2026-04-09) by consolidating the prior RC content and reordering entries to match the changelog guidelines.Adds release-note entries for recently merged work (notably Pro node-renderer diagnostic/error-message improvements and generator npm dependency pinning), and updates the bottom compare links to reference
v16.6.0instead of the RC tag.Reviewed by Cursor Bugbot for commit 956cc0f. Bugbot is set up for automated code reviews on this repo. Configure here.