Skip to content

Add first-class --rsc-pro install generator mode#2821

Closed
justin808 wants to merge 8 commits intomainfrom
jg-codex/2793-rsc-pro-generator-mode
Closed

Add first-class --rsc-pro install generator mode#2821
justin808 wants to merge 8 commits intomainfrom
jg-codex/2793-rsc-pro-generator-mode

Conversation

@justin808
Copy link
Copy Markdown
Member

@justin808 justin808 commented Mar 24, 2026

Summary

  • add a first-class --rsc-pro install flag and treat it as pro + rsc across generator flow
  • route/install messaging through --rsc-pro for recovery commands, dirty-worktree prerequisites, and post-install verification guidance
  • update Pro auto-install context handling so --rsc-pro is surfaced correctly and uses exact version pinning for the bundle add command
  • add RSC npm install fallback: try version-pinned react-on-rails-rsc@<gem-version>, then retry unversioned package when that pinned version is unavailable
  • expand generator specs for the new mode and fallback behavior

Closes #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:2743
  • bundle 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.rb

Note

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-pro mode to the Rails react_on_rails:install generator 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-pro vs --rsc/--pro) and to exact-pin the react_on_rails_pro gem version in RSC Pro mode (including prerelease handling).

Improves JS dependency installation reliability by treating package_json manager add returning nil as success, and by pinning react-on-rails-rsc to 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

    • Added --rsc-pro CLI flag to install a combined Pro+RSC mode and display an RSC Pro verification checklist after install.
  • Improvements

    • RSC installs prefer version‑pinned packages matching the release and fall back to unpinned packages if pinned install fails.
    • Install/recovery messages and suggested commands now prefer the correct mode flag (--rsc-pro / --rsc / --pro).
    • Package installation helpers now report success/failure for proper fallback handling.
  • Tests

    • Added coverage for --rsc-pro behavior, RSC package pinning, and package-install fallback scenarios.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 24, 2026

Note

Reviews paused

It 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 reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds a first-class --rsc-pro generator mode, updates generator flag logic and error/recovery messaging, pins matched Pro/RSC gem and npm versions during generation, and enhances RSC dependency installation to try version-pinned packages then fall back to unpinned packages with warnings and retry.

Changes

Cohort / File(s) Summary
Generator Helper Methods
react_on_rails/lib/generators/react_on_rails/generator_helper.rb
Added use_rsc_pro_mode?; updated use_pro? and use_rsc? to consider :rsc_pro and the combined :rsc && :pro case; adjusted add_npm_dependencies/add_package return behavior and updated comments.
Install Generator
react_on_rails/lib/generators/react_on_rails/install_generator.rb
Added class_option :rsc_pro; forward child generator flags via use_pro?/use_rsc?; prefer --rsc-pro in recovery commands and dirty-worktree messaging; added rsc_pro_verification_message, route constants, and extended post-install output.
JS Dependency Management
react_on_rails/lib/generators/react_on_rails/js_dependency_manager.rb
Added RSC version constants and rsc_packages_with_version; add_rsc_dependencies tries pinned packages first and retries with unversioned packages on failure while emitting warnings; add_package now reflects underlying manager result.
Pro Setup Logic
react_on_rails/lib/generators/react_on_rails/pro_setup.rb
Centralized helpers for Pro-related flag/reporting and gem requirement text; introduced pro_gem_version_requirement to pin exact gem version in RSC Pro mode and adjusted auto-install and Gemfile fallback messaging.
Generator Tests (helper & install & pro)
react_on_rails/spec/react_on_rails/generators/generator_helper_spec.rb, react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb, react_on_rails/spec/react_on_rails/generators/pro_generator_spec.rb
Added options test helper; updated add_npm_dependencies/add_package expectations for boolean returns; added --rsc-pro contexts and verification tests, precedence tests, and a pro_flag_specified_for_context? test delegating to use_pro?.
JS Dependency Manager Tests
react_on_rails/spec/react_on_rails/generators/js_dependency_manager_spec.rb
Added tests for rsc_packages_with_version, pinned-install then fallback retry behavior, and add_package boolean-return semantics.

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
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 I hopped through flags and version strings,

pinned Pro and RSC with careful rings,
tried a pinned install, then tried once more,
retried unpinned and opened the door,
a rabbit cheers: “Generation springs!”

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 30.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately and concisely summarizes the main change: adding a first-class --rsc-pro install generator mode.
Linked Issues check ✅ Passed All coding objectives from #2793 are met: --rsc-pro generator flag added, matching gem/npm versions pinned, post-install verification output included, and generator tests added covering new app boot and /hello_server routing.
Out of Scope Changes check ✅ Passed All changes are scoped to the generator and related helpers as specified in #2793; no unrelated CLI flag infrastructure or non-generator changes are present.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jg-codex/2793-rsc-pro-generator-mode

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Comment thread react_on_rails/lib/generators/react_on_rails/pro_setup.rb Outdated
Comment thread react_on_rails/lib/generators/react_on_rails/pro_setup.rb Outdated
Comment thread react_on_rails/lib/generators/react_on_rails/install_generator.rb Outdated
Comment thread react_on_rails/lib/generators/react_on_rails/js_dependency_manager.rb Outdated
@greptile-apps
Copy link
Copy Markdown

greptile-apps Bot commented Mar 24, 2026

Greptile Summary

This PR introduces a first-class --rsc-pro install flag that combines --pro and --rsc behaviour into a single semantic mode. It threads the new flag through all generator decision points: option declaration, sub-generator invocation, recovery/error messages, dirty-worktree prerequisites, and post-install verification. It also adds version-pinned RSC npm install with a graceful unversioned fallback, and uses exact version pinning (rather than ~>) for the Pro gem bundle add command when in RSC Pro mode.

Key changes:

  • New use_rsc_pro_mode? helper in GeneratorHelper; use_pro? and use_rsc? extended to recognise :rsc_pro.
  • install_generator.rb: new --rsc-pro option, updated invoke_generators, recovery_install_command, installation_prerequisites_met?, plus rsc_pro_verification_message post-install checklist.
  • js_dependency_manager.rb: rsc_packages_with_version pins RSC npm package to the gem version; add_rsc_dependencies retries with the unversioned package if the pinned install fails.
  • pro_setup.rb: pro_gem_auto_install_command uses exact version pinning for --rsc-pro; context-line helpers are extracted for better error messaging.
  • Comprehensive spec coverage for all new paths (flag logic, file generation, dirty-worktree error, exact bundle-add version, fallback npm install).

Minor observations:

  • The manual fallback instruction in both the dirty-worktree error (install_generator.rb line 256) and missing_pro_gem? (pro_setup.rb line 72) still suggests gem 'react_on_rails_pro', '~> version' even in --rsc-pro mode, while the auto-install command uses exact pinning. This is a small messaging inconsistency worth a comment or alignment.
  • missing_pro_required_flag (install_generator.rb) and pro_requirement_flag (pro_setup.rb) are near-duplicate flag-name resolvers with slightly different internal implementations; consider consolidating into GeneratorHelper.

Confidence Score: 4/5

  • Safe to merge; the new flag is additive, well-tested, and doesn't break existing --rsc or --pro paths.
  • All new and modified code paths are covered by targeted specs, the flag propagation logic is correct and consistent across generator boundaries, and the fallback npm-install behaviour is thoroughly exercised. The only gaps are minor messaging inconsistencies (exact-vs-pessimistic version in manual fallback instructions) and duplicated flag-name resolution logic — neither affects runtime correctness.
  • pro_setup.rb and install_generator.rb — the dual flag-name resolution methods and the ~> vs exact-pinning inconsistency in manual fallback messages are worth a second look before merge.

Important Files Changed

Filename Overview
react_on_rails/lib/generators/react_on_rails/generator_helper.rb Adds use_rsc_pro_mode?, updates use_pro? and use_rsc? to handle the new :rsc_pro option. Logic is straightforward and well-documented.
react_on_rails/lib/generators/react_on_rails/install_generator.rb Declares --rsc-pro option; routes it correctly through invoke_generators, recovery_install_command, and installation_prerequisites_met?. Adds rsc_pro_verification_message and missing_pro_required_flag. Minor inconsistency: dirty-worktree manual fallback still shows ~> while auto-install uses exact pinning in --rsc-pro mode.
react_on_rails/lib/generators/react_on_rails/js_dependency_manager.rb Adds rsc_packages_with_version for version-pinned RSC installs and implements a two-attempt fallback in add_rsc_dependencies (versioned → unversioned). Logic is clean and mirrors existing pro_packages_with_version pattern.
react_on_rails/lib/generators/react_on_rails/pro_setup.rb Extracts pro_gem_requirement_context_line, adds pro_flag_specified_for_context? / pro_requirement_flag, and changes pro_gem_auto_install_command to use exact version pinning for --rsc-pro. The respond_to?(:use_rsc_pro_mode?) guards are necessary for standalone ProGenerator compatibility. Minor duplication with missing_pro_required_flag in install_generator.
react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb Comprehensive new specs covering --rsc-pro file generation, verification message, sub-generator invocation, dirty-worktree error, and exact bundle-add version. Good coverage of both happy-path and failure scenarios.

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
Loading

Comments Outside Diff (1)

  1. react_on_rails/lib/generators/react_on_rails/install_generator.rb, line 251-258 (link)

    P2 Inconsistent version constraint in --rsc-pro manual fallback

    When --rsc-pro is active, pro_gem_auto_install_command deliberately uses exact version pinning (no ~>). However, the manual fallback instruction in this dirty-worktree error, as well as the one inside missing_pro_gem? (pro_setup.rb line 72), both still suggest ~>:

    gem 'react_on_rails_pro', '~> #{recommended_pro_gem_version}'
    

    A user who hits the auto-install failure path and must install manually will see a different constraint than what the generator attempted automatically. Consider either:

    • Surfacing the exact constraint when use_rsc_pro_mode? is true (consistent with the bundle add command), or
    • Adding a clarifying comment explaining the intentional difference (strict auto-install, flexible manual fallback).

Reviews (1): Last reviewed commit: "Add first-class --rsc-pro install mode" | Re-trigger Greptile

Comment thread react_on_rails/lib/generators/react_on_rails/pro_setup.rb
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread react_on_rails/lib/generators/react_on_rails/js_dependency_manager.rb Outdated
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 pinned react-on-rails-rsc entry here.

The example says it "installs the RSC dependency", but Lines 1495-1500 only verify the Pro packages. Adding the react-on-rails-rsc assertion would close the gap on the new --rsc-pro version-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

📥 Commits

Reviewing files that changed from the base of the PR and between c8267da and 5cee15a.

📒 Files selected for processing (7)
  • react_on_rails/lib/generators/react_on_rails/generator_helper.rb
  • react_on_rails/lib/generators/react_on_rails/install_generator.rb
  • react_on_rails/lib/generators/react_on_rails/js_dependency_manager.rb
  • react_on_rails/lib/generators/react_on_rails/pro_setup.rb
  • react_on_rails/spec/react_on_rails/generators/generator_helper_spec.rb
  • react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb
  • react_on_rails/spec/react_on_rails/generators/js_dependency_manager_spec.rb

Comment thread react_on_rails/lib/generators/react_on_rails/js_dependency_manager.rb Outdated
Comment thread react_on_rails/lib/generators/react_on_rails/pro_setup.rb Outdated
@claude
Copy link
Copy Markdown
Contributor

claude Bot commented Mar 24, 2026

Code Review

Overall this is a clean addition of a first-class --rsc-pro mode. The option routing, sub-generator propagation, and fallback logic are all sound. A few issues worth addressing before merge:

Issues posted as inline comments

  1. respond_to?(:use_rsc_pro_mode?) guards in pro_setup.rb (lines 96 & 475) — the module's own docs already require includers to also include GeneratorHelper, so these defensive guards hide a missing-include bug rather than surfacing it. Either drop the guards (rely on the documented contract) or add a default stub def use_rsc_pro_mode? = false inside ProSetup so the method is always defined.

  2. Manual gem-install instructions don't match auto-install pinning (install_generator.rb:256 and pro_setup.rb:72) — pro_gem_auto_install_command uses an exact version for --rsc-pro, but the manual fallback messages still emit ~>. A user on a dirty worktree who follows the manual path will install a potentially-different version than what auto-install would have pinned.

  3. Silent error suppression in rsc_packages_with_version (js_dependency_manager.rb) — the bare rescue StandardError discards the exception message. Including e.message in the warning would make version-resolution failures easier to diagnose.

Minor observations (no action required)

  • add_rsc_dependencies compares rsc_packages != RSC_DEPENDENCIES to detect whether a versioned install was attempted. This works correctly (including the rescue path), but a named boolean flag would make intent slightly more explicit.
  • The rsc_pro_verification_message uses Rainbow for styled output; the standalone --rsc path has no equivalent post-install guidance. Worth a comment clarifying whether that omission is intentional.

@justin808
Copy link
Copy Markdown
Member Author

Addressed the CI regression for RSC install modes.

What I changed:

  • Fixed GeneratorHelper#add_npm_dependencies to respect the return value from package_json manager add operations (it can return false without raising).
    • This allows add_rsc_dependencies to correctly detect the failed pinned add ([email protected]) and fall back to unpinned react-on-rails-rsc.
  • Updated recovery_install_command to emit --rsc-pro only when --rsc-pro is explicitly set. For --rsc installs (even if pro is true internally), recovery now keeps --rsc as expected.
  • Added/updated specs in generator_helper_spec for boolean return handling from manager.add.

Validation run locally:

  • bundle exec rspec react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb:1421 react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb:1531 react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb:1563 react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb:1613 react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb:1748 react_on_rails/spec/react_on_rails/generators/generator_helper_spec.rb:71 (10 examples, 0 failures)
  • bundle exec rubocop react_on_rails/lib/generators/react_on_rails/generator_helper.rb react_on_rails/lib/generators/react_on_rails/install_generator.rb react_on_rails/spec/react_on_rails/generators/generator_helper_spec.rb

Commit: 4322e7be

Comment thread react_on_rails/lib/generators/react_on_rails/pro_setup.rb Outdated
Comment thread react_on_rails/lib/generators/react_on_rails/pro_setup.rb
Comment thread react_on_rails/lib/generators/react_on_rails/generator_helper.rb
Comment thread react_on_rails/lib/generators/react_on_rails/js_dependency_manager.rb Outdated
Comment thread react_on_rails/lib/generators/react_on_rails/install_generator.rb
Comment thread react_on_rails/lib/generators/react_on_rails/install_generator.rb
@claude
Copy link
Copy Markdown
Contributor

claude Bot commented Mar 24, 2026

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.

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_package and add_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.

Create PR

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.", :yellow

Comment thread react_on_rails/lib/generators/react_on_rails/generator_helper.rb Outdated
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

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_command to use use_rsc_pro_mode? so --rsc --pro now correctly recovers as --rsc-pro.
  • ✅ Fixed: Redundant missing_pro_required_flag wraps pro_requirement_flag identically
    • Removed missing_pro_required_flag and replaced its only call site with pro_requirement_flag directly to eliminate unnecessary indirection.

Create PR

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",

Comment thread react_on_rails/lib/generators/react_on_rails/install_generator.rb
Comment thread react_on_rails/lib/generators/react_on_rails/install_generator.rb Outdated
@claude
Copy link
Copy Markdown
Contributor

claude Bot commented Mar 24, 2026

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:

  1. Missing react-on-rails-rsc version assertion in the --rsc-pro test (inline comment posted)

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.

  1. pro_packages_with_version silently drops the error message in its rescue

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):

  • Hardcoded localhost:3000 (install_generator.rb:473) - The verification message includes a styled link to http://localhost:3000/hello_server with an "(or your configured port)" note. Users on non-3000 ports see the hardcoded URL highlighted. Consider omitting the full URL and just referencing the path.

  • missing_pro_required_flag proxy (install_generator.rb:478-480) - This method is a one-liner that delegates straight to pro_requirement_flag from ProSetup. The indirection adds no value.

  • CodeRabbit RSC fallback concern - CodeRabbit flags the retry as "ineffective" claiming add_packages runs before the install step. This is a false positive: the package_json gem's manager.add handles both updating package.json and running the package manager install atomically. When a pinned npm version does not exist, the add call fails (returning false), which the fallback correctly detects.

Comment thread react_on_rails/lib/generators/react_on_rails/pro_setup.rb
Comment thread react_on_rails/lib/generators/react_on_rails/install_generator.rb Outdated
Comment thread react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb Outdated
Comment thread react_on_rails/lib/generators/react_on_rails/pro_setup.rb
@claude
Copy link
Copy Markdown
Contributor

claude Bot commented Mar 24, 2026

Review Summary

The overall approach is sound — adding --rsc-pro as a first-class flag with proper fallthrough to use_pro?/use_rsc?, exact version pinning for the paired RSC npm package, and clear recovery messaging is a clean design. The test coverage is good breadth.

A few issues worth addressing before merge:

Medium — Potential regression in add_npm_dependencies / add_package

Both generator_helper.rb and js_dependency_manager.rb now check !result.nil? && result != false to determine success. The original code always returned true after a non-raising call. This is only safe if the package_json gem guarantees a truthy return on success and false specifically on failure — if the gem uses Ruby's void convention and returns nil on success, every successful package install will now be misreported as failure, triggering spurious fallback warnings. The test suite mocks the return value so it can't catch this. Worth verifying the package_json gem's documented return contract. (Inline comments on both affected lines.)

Medium — options.key? vs options[key] in pro_flag_specified_for_context?

Thor always populates the options hash with declared option defaults, so options.key?(:rsc_pro) is true even when the user didn't pass any flag. As a result, pro_gem_requirement_context_line can say "You specified --pro" for a plain rails generate react_on_rails:install invocation. This was a pre-existing issue with :pro/:rsc, but it's now slightly more likely to trigger via InstallGenerator (which declares all three). Fix: check options[:pro] || options[:rsc] || options[:rsc_pro]. (Inline comment.)

Low — Exact version + --strict may block pre-release auto-install

bundle add react_on_rails_pro --version='16.4.0.rc.5' --strict fails immediately if that exact RC hasn't been published to RubyGems yet — a common situation when developing both gems in the same cycle. A graceful fallback or a clearer error message would help. (Inline comment.)

Low — Hardcoded hello_server route in verification message

The rsc_pro_verification_message hard-codes /hello_server as the verification URL. If the template renames this route, the message becomes silently stale. Linking it to the template source (or a shared constant) would keep the two in sync. (Inline comment.)

Nit — Incomplete version assertion for RSC dep in --rsc-pro spec

The test checks deps["react-on-rails-pro"] for exact version equality but only checks include("react-on-rails-rsc") without asserting the version. A silent version-pin fallback would go undetected. (Inline comment.)

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread react_on_rails/lib/generators/react_on_rails/js_dependency_manager.rb Outdated
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
react_on_rails/lib/generators/react_on_rails/js_dependency_manager.rb (2)

384-395: Persist the pinned-to-latest fallback in GeneratorMessages.

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 into GeneratorMessages too 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 the manager.add success coercion into one helper.

The nil/false handling now lives here and in GeneratorHelper#add_npm_dependencies. Keeping that conversion in one place will reduce drift the next time the package_json gem 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

📥 Commits

Reviewing files that changed from the base of the PR and between 8cd9397 and aabc0e8.

📒 Files selected for processing (6)
  • react_on_rails/lib/generators/react_on_rails/generator_helper.rb
  • react_on_rails/lib/generators/react_on_rails/install_generator.rb
  • react_on_rails/lib/generators/react_on_rails/js_dependency_manager.rb
  • react_on_rails/lib/generators/react_on_rails/pro_setup.rb
  • react_on_rails/spec/react_on_rails/generators/install_generator_spec.rb
  • react_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

@claude
Copy link
Copy Markdown
Contributor

claude Bot commented Mar 24, 2026

Review

Overall 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:

Issues

Double blank line in error message (pro_setup.rb:71)
When rsc_pro_prerelease_note returns "" (the common case - no prerelease, or not RSC Pro mode), the heredoc interpolation leaves a blank line in the output, producing a double blank gap before "Please add manually...". Minor but visually rough; guard the interpolation so the note line is omitted entirely when empty.

bundle add --strict + pre-release version = silent hard failure (pro_setup.rb:490)
In RSC Pro mode pro_gem_version_requirement returns the exact gem version string including any pre-release suffix. Paired with --strict, Bundler will refuse to install if that exact version is not on RubyGems yet. The rsc_pro_prerelease_note in the error path helps, but the auto-install attempt fails silently with no diagnostic about why. Worth surfacing the captured bundle-add output in the failure branch, or at least noting in the auto-install log that exact-version pinning plus --strict may be the cause.

Hardcoded RSC_PACKAGE_VERSION_PIN (js_dependency_manager.rb:129)
This constant is intentionally independent of gem versioning (RSC follows the React 19.0.x line), but there is no mechanism to remind maintainers to bump it on releases. Should be documented in the release checklist or CHANGELOG guidelines - otherwise it will silently go stale.

Nits / Design feedback

rsc_packages_with_version / used_version_pins tuple - The two-element return value and the used_version_pins flag exist solely to support a hypothetical future subclass override (no override exists today). The resulting complexity in add_rsc_dependencies (destructuring, conditional branch, manual_install_packages) could be simplified to a straightforward pinned-then-fallback sequence without the tuple API.

pro_flag_specified_for_context? - Single-line wrapper around use_pro? with no distinguishing logic. Either document the override contract or inline the call.

manual_install_packages dead code in exception path - In the rescue block, manual_install_packages is never read; the block always interpolates RSC_DEPENDENCIES directly. No bug, but worth a brief comment to avoid confusion for the next reader.

Comment thread react_on_rails/lib/generators/react_on_rails/js_dependency_manager.rb Outdated
Comment thread react_on_rails/lib/generators/react_on_rails/pro_setup.rb
Comment thread react_on_rails/lib/generators/react_on_rails/pro_setup.rb
Comment thread react_on_rails/lib/generators/react_on_rails/pro_setup.rb
Comment thread react_on_rails/lib/generators/react_on_rails/pro_setup.rb
@justin808
Copy link
Copy Markdown
Member Author

Closing as redundant: current generator semantics already treat --rsc as including Pro by design, so introducing --rsc-pro adds an unnecessary parallel mode.

@justin808 justin808 closed this Mar 25, 2026
justin808 added a commit that referenced this pull request Mar 28, 2026
justin808 added a commit that referenced this pull request Mar 29, 2026
justin808 added a commit that referenced this pull request Apr 2, 2026
ihabadham added a commit that referenced this pull request Apr 10, 2026
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]>
ihabadham added a commit that referenced this pull request Apr 21, 2026
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]>
ihabadham added a commit that referenced this pull request Apr 21, 2026
## 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]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

codex PRs created from codex-named branches full-ci review-needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Track A: add --rsc-pro generator mode with matched Pro/RSC defaults

1 participant