Add first-class --rsc-pro install generator mode#2821
Add first-class --rsc-pro install generator mode#2821
Conversation
|
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 a first-class Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant CLI as Install Generator
participant Helper as Generator Helper
participant ProSetup as Pro Setup
participant DepMgr as JS Dependency Manager
participant NPM as npm Registry
User->>CLI: run generator with --rsc-pro
CLI->>Helper: use_rsc_pro_mode?()
Helper-->>CLI: true
CLI->>Helper: use_pro?(), use_rsc?()
Helper-->>CLI: true / true
CLI->>ProSetup: validate Pro gem / prepare auto-install
ProSetup-->>CLI: gem present or `bundle add ... --version='...' --strict` command
CLI->>DepMgr: add_rsc_dependencies()
DepMgr->>DepMgr: rsc_packages_with_version()
DepMgr->>NPM: install pinned RSC packages
alt pinned install succeeds
NPM-->>DepMgr: success
else pinned install fails
DepMgr-->>CLI: emit warning about pinned mismatch
DepMgr->>NPM: install unversioned RSC packages
NPM-->>DepMgr: success
end
CLI->>CLI: generate files (hello-server, scripts)
CLI-->>User: emit rsc_pro_verification_message and completion info
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 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 introduces a first-class Key changes:
Minor observations:
Confidence Score: 4/5
Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[rails generate react_on_rails:install] --> B{Flag check}
B -->|--rsc-pro| C[use_rsc_pro_mode? = true\nuse_rsc? = true\nuse_pro? = true]
B -->|--rsc AND --pro| C
B -->|--rsc only| D[use_rsc_pro_mode? = false\nuse_rsc? = true\nuse_pro? = true]
B -->|--pro only| E[use_rsc_pro_mode? = false\nuse_rsc? = false\nuse_pro? = true]
C --> F[pro_gem_auto_install_command\nuses EXACT version pinning\nbundle add react_on_rails_pro\n--version='16.x.y']
D --> G[pro_gem_auto_install_command\nuses pessimistic constraint\nbundle add react_on_rails_pro\n--version='~> 16.x.y']
E --> G
C --> H[add_rsc_dependencies\nTry [email protected]\nFallback to react-on-rails-rsc]
D --> H
C --> I[recovery_install_command\n--rsc-pro flag]
D --> J[recovery_install_command\n--rsc flag]
E --> K[recovery_install_command\n--pro flag]
C --> L[Post-install: rsc_pro_verification_message\nshown]
D --> M[Post-install: standard message only]
E --> M
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5cee15a4dd
ℹ️ 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".
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb (1)
1492-1500: Also assert the pinnedreact-on-rails-rscentry here.The example says it "installs the RSC dependency", but Lines 1495-1500 only verify the Pro packages. Adding the
react-on-rails-rscassertion would close the gap on the new--rsc-proversion-matching contract.✅ Minimal assertion to add
assert_file "package.json" do |content| package_json = JSON.parse(content) deps = package_json["dependencies"] || {} expect(deps["react-on-rails-pro"]).to eq(expected_npm_version) expect(deps["react-on-rails-pro-node-renderer"]).to eq(expected_npm_version) + expect(deps["react-on-rails-rsc"]).to eq(expected_npm_version) end🤖 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/install_generator_spec.rb` around lines 1492 - 1500, The test "pins Pro dependencies and installs the RSC dependency" currently asserts the pinned versions for "react-on-rails-pro" and "react-on-rails-pro-node-renderer" but omits the RSC package; update the assertion block in the spec that parses package_json and deps (using expected_npm_version from ReactOnRails::VersionSyntaxConverter.new.rubygem_to_npm(ReactOnRails::VERSION)) to also assert expect(deps["react-on-rails-rsc"]).to eq(expected_npm_version) so the --rsc-pro version-matching contract is validated.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@react_on_rails/lib/generators/react_on_rails/js_dependency_manager.rb`:
- Around line 384-395: The retry fallback for pinned RSC packages is ineffective
because you call add_packages(rsc_packages) (using rsc_packages_with_version)
before the actual install step, so a missing npm package will still be written
and the failure surfaces later in install_js_dependencies; fix by moving the
retry logic to wrap the install phase (or call the resolver that checks
availability) so you attempt to install rsc_packages_with_version and, on
failure, retry with RSC_DEPENDENCIES: change the flow around add_packages and
install_js_dependencies so the install of rsc_packages is attempted and its
failure triggers a retry with RSC_DEPENDENCIES (use the same
add_packages/install_js_dependencies sequence for both attempts and ensure
manual_install_packages is set accordingly).
In `@react_on_rails/lib/generators/react_on_rails/pro_setup.rb`:
- Around line 475-480: The bundle add line currently uses
recommended_pro_gem_version which strips prerelease suffixes; change it to use
the raw/full gem version helper (the variant that includes prerelease metadata)
when constructing version_requirement for the exact --rsc-pro install path so
the gem pin matches the npm pro package pins; update the same value used for the
manual Gemfile guidance too (i.e., replace recommended_pro_gem_version with the
helper that returns the unstripped/raw gem version when building the "bundle add
#{PRO_GEM_NAME} --version='#{version_requirement}' --strict" command and any
corresponding Gemfile example).
---
Nitpick comments:
In `@react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb`:
- Around line 1492-1500: The test "pins Pro dependencies and installs the RSC
dependency" currently asserts the pinned versions for "react-on-rails-pro" and
"react-on-rails-pro-node-renderer" but omits the RSC package; update the
assertion block in the spec that parses package_json and deps (using
expected_npm_version from
ReactOnRails::VersionSyntaxConverter.new.rubygem_to_npm(ReactOnRails::VERSION))
to also assert expect(deps["react-on-rails-rsc"]).to eq(expected_npm_version) so
the --rsc-pro version-matching contract is validated.
🪄 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: 330b783e-f98f-47fc-bd80-71fe256752f0
📒 Files selected for processing (7)
react_on_rails/lib/generators/react_on_rails/generator_helper.rbreact_on_rails/lib/generators/react_on_rails/install_generator.rbreact_on_rails/lib/generators/react_on_rails/js_dependency_manager.rbreact_on_rails/lib/generators/react_on_rails/pro_setup.rbreact_on_rails/spec/react_on_rails/generators/generator_helper_spec.rbreact_on_rails/spec/react_on_rails/generators/install_generator_spec.rbreact_on_rails/spec/react_on_rails/generators/js_dependency_manager_spec.rb
Code ReviewOverall this is a clean addition of a first-class Issues posted as inline comments
Minor observations (no action required)
|
|
Addressed the CI regression for RSC install modes. What I changed:
Validation run locally:
Commit: |
|
Overall the PR is well-structured. The rsc-pro flag is a clean ergonomic improvement, the fallback for version-pinned RSC packages is a solid reliability win, and the test coverage is thorough. Inline comments have been posted on the specific issues. Summary of findings: (1) Must-fix: The respond_to guard on use_rsc_pro_mode? in pro_setup.rb lines 91 and 475 silently swallows NoMethodError if modules are mis-combined. (2) Must-fix: The dirty-worktree error message always shows a pessimistic version constraint but pro_gem_auto_install_command uses exact pinning for rsc-pro - inconsistent guidance. (3) Should-fix: The rsc_packages != RSC_DEPENDENCIES comparison relies on object identity from the fallback path returning the constant itself - fragile to future refactoring. (4) Nit: result ? true : false is equivalent to !!result. (5) Nit: Hardcoded localhost:3000 in verification message. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Autofix Details
Bugbot Autofix prepared a fix for the issue found in the latest run.
- ✅ Fixed: Inconsistent return value handling between
add_packageandadd_npm_dependencies- Updated add_npm_dependencies to return true after a successful add call regardless of the package_json gem method return value, matching add_package semantics.
Or push these changes by commenting:
@cursor push c269e17ff7
Preview (c269e17ff7)
diff --git a/react_on_rails/lib/generators/react_on_rails/generator_helper.rb b/react_on_rails/lib/generators/react_on_rails/generator_helper.rb
--- a/react_on_rails/lib/generators/react_on_rails/generator_helper.rb
+++ b/react_on_rails/lib/generators/react_on_rails/generator_helper.rb
@@ -26,12 +26,12 @@
return false unless pj
begin
- result = if dev
- pj.manager.add(packages, type: :dev, exact: true)
- else
- pj.manager.add(packages, exact: true)
- end
- result ? true : false
+ if dev
+ pj.manager.add(packages, type: :dev, exact: true)
+ else
+ pj.manager.add(packages, exact: true)
+ end
+ true
rescue StandardError => e
say_status :warning, "Could not add packages via package_json gem: #{e.message}", :yellow
say_status :warning, "Will fall back to direct npm commands.", :yellowThere was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix prepared fixes for both issues found in the latest run.
- ✅ Fixed: Recovery command loses RSC Pro mode for
--rsc --pro- Updated
recovery_install_commandto useuse_rsc_pro_mode?so--rsc --pronow correctly recovers as--rsc-pro.
- Updated
- ✅ Fixed: Redundant
missing_pro_required_flagwrapspro_requirement_flagidentically- Removed
missing_pro_required_flagand replaced its only call site withpro_requirement_flagdirectly to eliminate unnecessary indirection.
- Removed
Or push these changes by commenting:
@cursor push 3f001d2103
Preview (3f001d2103)
diff --git a/react_on_rails/lib/generators/react_on_rails/install_generator.rb b/react_on_rails/lib/generators/react_on_rails/install_generator.rb
--- a/react_on_rails/lib/generators/react_on_rails/install_generator.rb
+++ b/react_on_rails/lib/generators/react_on_rails/install_generator.rb
@@ -248,7 +248,7 @@
# it on a clean worktree. On a dirty tree, use the read-only pro_gem_installed?
# check to catch a missing gem without triggering auto-install.
if has_worktree_issues && use_pro? && !pro_gem_installed?
- required_flag = missing_pro_required_flag
+ required_flag = pro_requirement_flag
GeneratorMessages.add_error(<<~MSG.strip)
🚫 react_on_rails_pro gem is required for #{required_flag} but is not installed.
Auto-install was skipped because the worktree has uncommitted changes.
@@ -453,7 +453,7 @@
flags << "--typescript" if options.typescript?
flags << "--rspack" if options.rspack?
- if options.rsc_pro?
+ if use_rsc_pro_mode?
flags << "--rsc-pro"
elsif options.rsc?
flags << "--rsc"
@@ -475,10 +475,6 @@
MSG
end
- def missing_pro_required_flag
- pro_requirement_flag
- end
-
def recovery_working_tree_lines
[
"If this run created or changed files, clean up your working tree before rerunning",|
Code Review Overall: Clean addition of a first-class --rsc-pro mode. The option routing, sub-generator propagation, and RSC fallback logic are well-structured. A few items below. Must-fix:
install_generator_spec.rb:1492-1500 - The example is named "pins Pro dependencies and installs the RSC dependency" but only asserts react-on-rails-pro and react-on-rails-pro-node-renderer. The react-on-rails-rsc pin is not validated. See inline suggestion.
js_dependency_manager.rb:377-379 - The newly added rsc_packages_with_version correctly logs e.message in its rescue block, but the pre-existing pro_packages_with_version uses a bare rescue StandardError without capturing the exception. Since this PR introduces the sister method and establishes the pattern, fix the inconsistency: change to rescue StandardError => e and include e.message in the warning. Do NOT apply Cursor Bugbot autofix: Cursor Bugbot proposed fix changes add_npm_dependencies to always return true after pj.manager.add. This would be a regression. The intentional change in this PR flips both add_npm_dependencies and add_package from unconditional true to result ? true : false. This makes the RSC fallback in add_rsc_dependencies work: a false return from add_packages(rsc_packages_with_version) signals the pinned package is unavailable and triggers the unversioned retry. Reverting to always returning true would make the fallback never fire. Nits (no action required):
|
Review SummaryThe overall approach is sound — adding A few issues worth addressing before merge: Medium — Potential regression in
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: aabc0e8da8
ℹ️ 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".
There was a problem hiding this comment.
🧹 Nitpick comments (2)
react_on_rails/lib/generators/react_on_rails/js_dependency_manager.rb (2)
384-395: Persist the pinned-to-latest fallback inGeneratorMessages.Right now this downgrade is only surfaced via
say_status, so a successful fallback can still leave the final post-install summary looking like a fully pinned success. I’d carry the warning intoGeneratorMessagestoo so the relaxed version matching is harder to miss.♻️ Proposed tweak
if used_version_pins - say_status :warning, - "Could not install version-pinned RSC dependency. Retrying latest available package.", - :yellow + warning = "Could not install version-pinned RSC dependency. Retrying latest available package." + say_status :warning, warning, :yellow + GeneratorMessages.add_warning("⚠️ #{warning}") return if add_packages(RSC_DEPENDENCIES) manual_install_packages = RSC_DEPENDENCIES 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/js_dependency_manager.rb` around lines 384 - 395, When add_packages fails for a version-pinned set returned by rsc_packages_with_version, persist the fact that we fell back to the unpinned RSC_DEPENDENCIES into the generator summary instead of only saying a warning; update the branch that currently says_status :warning (inside the block using used_version_pins) to also append a message to GeneratorMessages (or call its appropriate method) indicating the pinned-to-latest fallback for RSC dependencies so the final post-install summary reflects the relaxed version matching; ensure this uses the same unique identifiers (rsc_packages_with_version, add_packages, RSC_DEPENDENCIES, GeneratorMessages) so the behavior is recorded whenever the retry path is taken.
483-488: Extract themanager.addsuccess coercion into one helper.The
nil/falsehandling now lives here and inGeneratorHelper#add_npm_dependencies. Keeping that conversion in one place will reduce drift the next time thepackage_jsongem changes its return contract.🤖 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/js_dependency_manager.rb` around lines 483 - 488, Extract the nil/false coercion of package_json's manager.add into a single helper (e.g., add_result_success or normalize_add_result) and use it from both ReactOnRails::JsDependencyManager where manager.add is called and GeneratorHelper#add_npm_dependencies; specifically, replace the inline coercion (!result.nil? && result != false) around manager.add with a call to the new helper that returns a boolean success, implement the helper to accept the raw manager.add return value and return true for any truthy/non-false/nil result and false otherwise, and update both call sites to use that helper.
🤖 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/lib/generators/react_on_rails/js_dependency_manager.rb`:
- Around line 384-395: When add_packages fails for a version-pinned set returned
by rsc_packages_with_version, persist the fact that we fell back to the unpinned
RSC_DEPENDENCIES into the generator summary instead of only saying a warning;
update the branch that currently says_status :warning (inside the block using
used_version_pins) to also append a message to GeneratorMessages (or call its
appropriate method) indicating the pinned-to-latest fallback for RSC
dependencies so the final post-install summary reflects the relaxed version
matching; ensure this uses the same unique identifiers
(rsc_packages_with_version, add_packages, RSC_DEPENDENCIES, GeneratorMessages)
so the behavior is recorded whenever the retry path is taken.
- Around line 483-488: Extract the nil/false coercion of package_json's
manager.add into a single helper (e.g., add_result_success or
normalize_add_result) and use it from both ReactOnRails::JsDependencyManager
where manager.add is called and GeneratorHelper#add_npm_dependencies;
specifically, replace the inline coercion (!result.nil? && result != false)
around manager.add with a call to the new helper that returns a boolean success,
implement the helper to accept the raw manager.add return value and return true
for any truthy/non-false/nil result and false otherwise, and update both call
sites to use that helper.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: daca4cc6-087c-4518-bfec-a87419153f88
📒 Files selected for processing (6)
react_on_rails/lib/generators/react_on_rails/generator_helper.rbreact_on_rails/lib/generators/react_on_rails/install_generator.rbreact_on_rails/lib/generators/react_on_rails/js_dependency_manager.rbreact_on_rails/lib/generators/react_on_rails/pro_setup.rbreact_on_rails/spec/react_on_rails/generators/install_generator_spec.rbreact_on_rails/spec/react_on_rails/generators/js_dependency_manager_spec.rb
🚧 Files skipped from review as they are similar to previous changes (2)
- react_on_rails/lib/generators/react_on_rails/pro_setup.rb
- react_on_rails/spec/react_on_rails/generators/js_dependency_manager_spec.rb
ReviewOverall the PR is well-structured and the expanded test coverage gives good confidence in the new flag semantics. A few things worth addressing before merge: IssuesDouble blank line in error message (pro_setup.rb:71)
Hardcoded Nits / Design feedback
|
|
Closing as redundant: current generator semantics already treat --rsc as including Pro by design, so introducing --rsc-pro adds an unnecessary parallel mode. |
The --rsc-pro flag was redundant with --rsc (which already implies Pro) and was originally closed as an "unnecessary parallel mode" in #2821 before shipping unintentionally alongside the Pro upgrade automation in #2822. Fold the useful behaviors previously gated on --rsc-pro into --rsc: - Pro verification checklist message now fires on any --rsc install instead of only when use_rsc_pro_mode? was true. - Prerelease installation note (rsc_prerelease_note) now fires on any --rsc install with a prerelease gem version. - Exact version pin for the Pro gem now triggers on Gem::Version.new(ReactOnRails::VERSION).prerelease? instead of the flag. This is the real underlying reason: Bundler's ~> does not match prerelease versions, so stable --rsc installs continue to use ~> while prerelease cycles get an exact pin that actually installs. Side effect: plain --rsc on a prerelease gem version now installs correctly where it previously would have failed against ~> pinning. Removes: - class_option :rsc_pro - use_rsc_pro_mode? helper - the --rsc-pro branches in use_pro?, use_rsc?, pro_requirement_flag, recovery_install_command - all --rsc-pro test contexts in install_generator_spec and the RSC Pro mode helpers describe block in generator_helper_spec Does not touch pro_generator.rb or pro_generator_spec.rb; those cover the #2626 upgrade automation scope (independent of this flag), and the silent-failure bugs there are tracked separately in #3104. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
The --rsc-pro flag was redundant with --rsc (which already implies Pro) and was originally closed as an "unnecessary parallel mode" in #2821 before shipping unintentionally alongside the Pro upgrade automation in #2822. Fold the useful behaviors previously gated on --rsc-pro into --rsc: - Pro verification checklist message now fires on any --rsc install instead of only when use_rsc_pro_mode? was true. - Prerelease installation note (rsc_prerelease_note) now fires on any --rsc install with a prerelease gem version. - Exact version pin for the Pro gem now triggers on Gem::Version.new(ReactOnRails::VERSION).prerelease? instead of the flag. This is the real underlying reason: Bundler's ~> does not match prerelease versions, so stable --rsc installs continue to use ~> while prerelease cycles get an exact pin that actually installs. Side effect: plain --rsc on a prerelease gem version now installs correctly where it previously would have failed against ~> pinning. Removes: - class_option :rsc_pro - use_rsc_pro_mode? helper - the --rsc-pro branches in use_pro?, use_rsc?, pro_requirement_flag, recovery_install_command - all --rsc-pro test contexts in install_generator_spec and the RSC Pro mode helpers describe block in generator_helper_spec Does not touch pro_generator.rb or pro_generator_spec.rb; those cover the #2626 upgrade automation scope (independent of this flag), and the silent-failure bugs there are tracked separately in #3104. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
## Summary #2821 introduced a dedicated `--rsc-pro` install flag. It was closed the next day with: "Closing as redundant: current generator semantics already treat --rsc as including Pro by design, so introducing --rsc-pro adds an unnecessary parallel mode." The flag then shipped anyway in #2822, which was primarily about the Pro upgrade automation (#2626 — Gemfile swap, import rewriter). The --rsc-pro bits rode along as a ~10% passenger in that larger PR and were never removed after #2821's close. #3098 was then opened to add more tests for the flag, further entrenching something that was explicitly called redundant. This PR completes the intent behind #2821's close: removes the flag and folds its useful behaviors into --rsc, where they belong. ## What moves from --rsc-pro to --rsc - Pro verification checklist now fires on any --rsc install - Prerelease installation note now fires on any --rsc install with a prerelease gem version - Exact version pin for the Pro gem now triggers on `Gem::Version.new(ReactOnRails::VERSION).prerelease?` instead of the flag — this is the real reason exact pinning matters (Bundler's `~>` doesn't match prereleases), not a flag-specific behavior Side effect: plain `--rsc` on a prerelease gem version now installs correctly where it previously would have failed against `~>` pinning. ## What is removed - `class_option :rsc_pro` - `use_rsc_pro_mode?` helper - `--rsc-pro` branches in `use_pro?`, `use_rsc?`, `pro_requirement_flag`, `recovery_install_command` - All `--rsc-pro` test contexts ## What is NOT touched `pro_generator.rb` and `pro_generator_spec.rb` (the #2626 upgrade automation — Gemfile swap, import rewriter) are independent of this flag and untouched. Bugs in that code are tracked separately in #3104. ## Closes / supersedes Supersedes #3098 (its test assertions were inside `context "with --rsc-pro"`, which no longer exists). ## Test plan - `bundle exec rubocop` on all modified files — clean - CI to run the full rspec suite 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Removed** * The Pro-specific install flag `--rsc-pro` has been removed. * **Changed** * Pro-related behaviors that previously required `--rsc-pro` now apply when using `--rsc` (post-install verification checklist, prerelease install notes, and exact Pro gem pinning for prereleases). * **Chore** * Added a URL exclusion to link-checking configuration to skip a specific domain. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>


Summary
--rsc-proinstall flag and treat it aspro + rscacross generator flow--rsc-profor recovery commands, dirty-worktree prerequisites, and post-install verification guidance--rsc-prois surfaced correctly and uses exact version pinning for thebundle addcommandreact-on-rails-rsc@<gem-version>, then retry unversioned package when that pinned version is unavailableCloses #2793
Test Plan
bundle exec rspec react_on_rails/spec/react_on_rails/generators/generator_helper_spec.rb:182 react_on_rails/spec/react_on_rails/generators/js_dependency_manager_spec.rb:446 react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb:1492 react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb:1503 react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb:1773 react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb:1805 react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb:1914 react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb:2593 react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb:2743bundle exec rubocop react_on_rails/lib/generators/react_on_rails/install_generator.rb react_on_rails/lib/generators/react_on_rails/pro_setup.rb react_on_rails/lib/generators/react_on_rails/js_dependency_manager.rb react_on_rails/spec/react_on_rails/generators/js_dependency_manager_spec.rb react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb react_on_rails/spec/react_on_rails/generators/generator_helper_spec.rbNote
Medium Risk
Moderate risk: changes generator flag semantics, Pro gem auto-install/version pinning, and JS dependency installation behavior, which can affect fresh installs and upgrade flows.
Overview
Adds a first-class
--rsc-promode to the Railsreact_on_rails:installgenerator and treats it equivalently to Pro+RSC throughout the flow (sub-generator invocation, recovery command generation, dirty-worktree prerequisite errors, and post-install messaging).Updates Pro gem auto-install and manual instructions to surface the correct flag (
--rsc-provs--rsc/--pro) and to exact-pin thereact_on_rails_progem version in RSC Pro mode (including prerelease handling).Improves JS dependency installation reliability by treating
package_jsonmanageraddreturningnilas success, and by pinningreact-on-rails-rscto a specific compatibility version with a fallback retry to the unpinned package when the pinned version is unavailable; expands generator specs to cover the new mode and fallback paths.Written by Cursor Bugbot for commit 7b0c892. This will update automatically on new commits. Configure here.
Summary by CodeRabbit
New Features
Improvements
Tests