Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
1502b93
Detect stale Pro migration module specifiers
justin808 Apr 30, 2026
fa3c407
Add changelog for Pro doctor specifier scan
justin808 Apr 30, 2026
fec385e
Clarify Pro doctor base package reference warning
justin808 May 4, 2026
1460984
Merge remote-tracking branch 'origin/main' into codex/pr-3232-reviews
justin808 May 4, 2026
43aa8c2
Cover Vitest base package references
justin808 May 4, 2026
a27ad34
Cover stale mock helper references
justin808 May 5, 2026
04179fc
Merge remote-tracking branch 'origin/main' into codex/pr-3232-reviews
justin808 May 5, 2026
0b64a12
Polish base package reference checks
justin808 May 5, 2026
365c11b
Polish doctor reference scanner review feedback
justin808 May 5, 2026
fe9e0bb
Cover additional Pro package reference cases
justin808 May 5, 2026
97c4fb8
Polish doctor reference review nits
justin808 May 5, 2026
db2c69e
Harden doctor base reference scanning
justin808 May 5, 2026
aa4971d
Avoid fragile encoding rescue in doctor scan
justin808 May 5, 2026
2f47435
Clarify doctor base reference scanner
justin808 May 5, 2026
5d92d98
Tighten doctor base reference patterns
justin808 May 5, 2026
2787d3b
Resolve doctor review feedback after main merge
justin808 May 8, 2026
0764cd5
Restore conditional FIX guidance
justin808 May 9, 2026
8d255a2
Merge main into doctor module specifier checks
justin808 May 9, 2026
1c81e00
Use canonical GitHub file link
justin808 May 9, 2026
88805bf
Harden doctor Pro package scan
justin808 May 9, 2026
02113fe
Harden base package reference scanning
justin808 May 9, 2026
783e45e
Clarify base package scan warnings
justin808 May 9, 2026
a21dc9c
Merge remote-tracking branch 'origin/main' into codex/doctor-pro-modu…
ihabadham May 14, 2026
75a864d
fix(pro_generator): rewrite jest.mock and declare module specifiers d…
ihabadham May 14, 2026
33e512a
fix(pro_generator): preserve user's Gemfile version pin during Pro ge…
ihabadham May 14, 2026
20ad179
fix(doctor): detect side-effect imports of the base package
ihabadham May 14, 2026
18df6d8
fix(pro_generator): rewrite version-pin regex to avoid ReDoS
ihabadham May 14, 2026
4acda83
fix(pro_generator): narrow rescue in base_react_on_rails_gem_in_gemfile?
ihabadham May 14, 2026
8e5ac75
refactor(pro_generator): hoist rewriter patterns to module-level cons…
ihabadham May 14, 2026
2700df9
fix(pro_generator): drop spurious bare importActual/importMock rewrit…
ihabadham May 15, 2026
edab0e4
Merge branch 'main' into codex/doctor-pro-module-specifiers
ihabadham May 15, 2026
460c9ea
docs(pro_setup): document the Gemfile-swap defer path in missing_pro_…
ihabadham May 15, 2026
794e61e
fix(doctor): correct inaccurate bare importActual/importMock comment
ihabadham May 15, 2026
ab821f9
fix(doctor): scan vue/svelte files to stay a superset of the rewriter
ihabadham May 15, 2026
53bb0d2
fix(doctor): skip node_modules in base package reference scan
ihabadham May 15, 2026
f117480
test(pro_generator): cover git: argument alongside the version pin
ihabadham May 15, 2026
6523a33
fix pro migration module specifier rewrites
ihabadham May 15, 2026
f5ae390
refactor pro migration shared handling
ihabadham May 15, 2026
48815a3
Avoid regex ambiguity in Pro migration parsing
ihabadham May 15, 2026
53bcb49
fix(doctor): rescue IOError in base_package_reference_file? for sibli…
ihabadham May 15, 2026
d34199a
chore(generator): track the CQS-smell refactor in an issue, not an in…
ihabadham May 15, 2026
7b8426b
fix(pro_migration): strip Ruby inline comments without a regex
ihabadham May 15, 2026
60ca5c3
fix pro gem swap for postfix guards
ihabadham May 16, 2026
bffd344
Merge remote-tracking branch 'origin/main' into codex/doctor-pro-modu…
ihabadham May 16, 2026
a134cf5
fix pro gem swap duplicate declarations
ihabadham May 16, 2026
fa798dc
fix pro gem swap to remove stale base gem when pro entry exists
ihabadham May 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .lychee.toml
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,12 @@ exclude = [
# return 5xx responses to lychee in CI, even when the pages are live.
'^https://github\.com/shakacode/react_on_rails/compare/',
'^https://github\.com/shakacode/react_on_rails/pull/[0-9]+$', # Intermittent 5xx from GitHub PR pages in CI
'^https://github\.com/shakacode/react_on_rails/actions/workflows/pro-test-package-and-gem\.yml$', # Intermittent 502 from GitHub Actions workflow pages in CI
'^https://github\.com/shakacode/react_on_rails/issues/2766$', # Intermittent 502 from GitHub issue pages in CI
'^https://github\.com/rack/rack/blob/main/SPEC\.rdoc$', # Intermittent 502 from GitHub blob pages in CI
'^https://github\.com/shakacode/shakapacker/blob/cdf32835d3e0949952b8b4b53063807f714f9b24/package/environments/base\.js(#.*)?$', # Intermittent 502 from GitHub blob view in CI
'^https://github\.com/npm/cli/issues/6253$', # Intermittent 502 from GitHub issue pages in CI
'^https://github\.com/search\?q=gem\+react_on_rails&ref=advsearch&type=repositories&utf8=%E2%9C%93$', # Intermittent 502 from GitHub search in CI

# ============================================================================
# EXTERNAL DOC PAGES WITH CI CONNECTIVITY FAILURES
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ After a release, run `/update-changelog` in Claude Code to analyze commits, writ

#### Fixed

- **[Pro]** **Pro migration generator rewrites all base-package references and preserves Gemfile pins**: `rails generate react_on_rails:pro` now rewrites Jest/Vitest mock helpers (`jest.mock`, `vi.mock`, `requireActual`/`importActual`, and the rest) and TypeScript `declare module 'react-on-rails'` blocks alongside its existing `import`/`require`/dynamic-import handling, and the Gemfile swap now preserves the user's existing version pin (and other gem options) instead of overwriting them with the running gem's version. `react_on_rails:doctor` is widened to match: it also flags stale side-effect imports (`import 'react-on-rails';`), Jest/Vitest mock helpers, and `declare module` blocks, and the new side-effect-import pattern keeps the doctor a superset of the rewriter so anything the rewriter doesn't reach gets surfaced. Closes [Issue 3104](https://github.com/shakacode/react_on_rails/issues/3104). [PR 3232](https://github.com/shakacode/react_on_rails/pull/3232) by [justin808](https://github.com/justin808).
- **Doctor now honors nested JavaScript package roots**: `react_on_rails:doctor` now checks package-manager lockfiles, `package.json`, and installed React from the configured `node_modules_location`, reducing false diagnostics for legacy apps that keep dependencies under `client/`. The Vite migration guide now documents the supported thin-wrapper pattern for those layouts. Note: a missing `package.json` at the configured `node_modules_location` now emits a warning instead of being silently skipped, so apps misconfigured against a nonexistent path will see new diagnostics on upgrade. Fixes [Issue 3205](https://github.com/shakacode/react_on_rails/issues/3205). [PR 3220](https://github.com/shakacode/react_on_rails/pull/3220) by [justin808](https://github.com/justin808).
- **Generated pack regeneration is now serialized**: `generate_packs_if_stale` now uses a Rails `tmp/` lock file, re-checks staleness after waiting, and avoids concurrent cleanup/regeneration races when multiple processes trigger auto-bundling at the same time. Fixes [Issue 1627](https://github.com/shakacode/react_on_rails/issues/1627). [PR 3231](https://github.com/shakacode/react_on_rails/pull/3231) by [justin808](https://github.com/justin808).
- **Install generator validates the selected JavaScript package manager**: The install generator now checks the manager selected from `REACT_ON_RAILS_PACKAGE_MANAGER`, the `packageManager` field in `package.json`, or a lockfile on disk — instead of passing when any JavaScript package manager is installed. When the selected command is missing, the error names the selected manager, the source that selected it, and the available alternatives. The generator also warns when `REACT_ON_RAILS_PACKAGE_MANAGER` is set to a value outside the supported set (`npm`, `pnpm`, `yarn`, `bun`). Addresses package manager validation from [Issue 1958](https://github.com/shakacode/react_on_rails/issues/1958). [PR 3229](https://github.com/shakacode/react_on_rails/pull/3229) by [justin808](https://github.com/justin808).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ def pro_gem_installed?
@pro_gem_installed = Gem.loaded_specs.key?("react_on_rails_pro") || gem_in_lockfile?("react_on_rails_pro")
end

# TODO: CQS smell: mark_pro_gem_installed! makes pro_gem_installed? return true before install. See #3303.
def mark_pro_gem_installed!
Comment thread
ihabadham marked this conversation as resolved.
@pro_gem_installed = true
end
Comment thread
ihabadham marked this conversation as resolved.
Expand Down
Loading
Loading