Docs route cleanup: canonicalize worst verbose URL slugs#3067
Docs route cleanup: canonicalize worst verbose URL slugs#3067
Conversation
Add slug frontmatter to the four worst-offender docs pages to create clean canonical URLs without renaming files: - auto-bundling-file-system-based-automated-bundle-generation → auto-bundling - installation-into-an-existing-rails-app → existing-rails-app - how-to-conditionally-server-render-based-on-device-type → conditional-server-rendering - how-to-use-different-files-for-client-and-server-rendering → client-server-files Update all hardcoded full URLs in Ruby source, error messages, rake tasks, specs, llms.txt, and package README to use the new canonical routes. Also fix a stale /docs/guides/ URL in generate_packs.rake. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
The slug cleanup in the previous commit creates new canonical URLs that won't be live until the docs are redeployed. Add temporary excludes so the pre-push link checker passes during the transition. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
WalkthroughAdded canonical slugs to four docs pages, updated internal docs URLs to shorter routes, adjusted error messages and tests to reference the new URLs, and extended Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
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 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 |
|
test |
|
PR Review: Docs Route Cleanup Overall this is a clean, low-risk PR with good systematic coverage. One potential CI issue found. Potential CI issue: lychee exclude pattern misses fragment URL The lychee exclude for auto-bundling uses a hard end-anchor (/?$): But packer_utils.rb contains a URL with a fragment anchor: The $ at the end prevents the pattern from matching the fragment variant, so lychee may try to fetch it and fail before the docs deploy. Fix: remove the $ so the pattern matches any URL starting with that base path. Minor observations .lychee.toml - out-of-scope exclude added silently building-features slugs need no hardcoded URL updates Relative cross-links remain valid internal/planning/ still has old URL strings |
size-limit report 📦
|
There was a problem hiding this comment.
🧹 Nitpick comments (2)
.lychee.toml (1)
74-76: Tighten theexisting-rails-appexclude regex to avoid overmatching.The Line 74 pattern is broader than the adjacent entries and can hide unrelated broken links under that path. Prefer anchoring to the exact route (with optional trailing slash).
♻️ Suggested patch
- '^https://reactonrails\.com/docs/getting-started/existing-rails-app', # `#2929` slug cleanup - live after docs deploy + '^https://reactonrails\.com/docs/getting-started/existing-rails-app/?$', # `#2929` slug cleanup - live after docs deploy🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.lychee.toml around lines 74 - 76, The exclude regex for the existing-rails-app entry is too broad; update the pattern '^https://reactonrails\.com/docs/getting-started/existing-rails-app' to anchor the end and allow an optional trailing slash (e.g., change to a pattern equivalent to '^https://reactonrails\.com/docs/getting-started/existing-rails-app/?$') so it no longer overmatches other paths; modify the string in the .lychee.toml list where the current '^https://reactonrails\.com/docs/getting-started/existing-rails-app' literal appears.react_on_rails/spec/dummy/spec/packs_generator_spec.rb (1)
126-185: Deduplicate the canonical auto-bundling URL used in multiple expectations.The same URL appears in three message fixtures; extracting it to a single
let(or constant) will make future slug changes less error-prone.♻️ Suggested patch
let(:old_auto_load_bundle) { ReactOnRails.configuration.auto_load_bundle } + let(:auto_bundling_docs_url) { "https://reactonrails.com/docs/core-concepts/auto-bundling/" } @@ - information, please see https://reactonrails.com/docs/core-concepts/auto-bundling/ + information, please see #{auto_bundling_docs_url} @@ - information, please see https://reactonrails.com/docs/core-concepts/auto-bundling/ + information, please see #{auto_bundling_docs_url} @@ - information, please see https://reactonrails.com/docs/core-concepts/auto-bundling/ + information, please see #{auto_bundling_docs_url}🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@react_on_rails/spec/dummy/spec/packs_generator_spec.rb` around lines 126 - 185, Extract the shared auto-bundling URL string into a single variable (e.g. a let(:auto_bundling_url) or constant) and replace the hard-coded URL occurrences in the message fixtures inside packs_generator_spec.rb (the example blocks that build `msg` for component override and missing client file cases) so each heredoc or regex interpolates that variable; keep the rest of the messages identical and ensure the expectations that call described_class.instance.generate_packs_if_stale still compare against the updated interpolated `msg`.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In @.lychee.toml:
- Around line 74-76: The exclude regex for the existing-rails-app entry is too
broad; update the pattern
'^https://reactonrails\.com/docs/getting-started/existing-rails-app' to anchor
the end and allow an optional trailing slash (e.g., change to a pattern
equivalent to
'^https://reactonrails\.com/docs/getting-started/existing-rails-app/?$') so it
no longer overmatches other paths; modify the string in the .lychee.toml list
where the current
'^https://reactonrails\.com/docs/getting-started/existing-rails-app' literal
appears.
In `@react_on_rails/spec/dummy/spec/packs_generator_spec.rb`:
- Around line 126-185: Extract the shared auto-bundling URL string into a single
variable (e.g. a let(:auto_bundling_url) or constant) and replace the hard-coded
URL occurrences in the message fixtures inside packs_generator_spec.rb (the
example blocks that build `msg` for component override and missing client file
cases) so each heredoc or regex interpolates that variable; keep the rest of the
messages identical and ensure the expectations that call
described_class.instance.generate_packs_if_stale still compare against the
updated interpolated `msg`.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 2e7d05e5-a455-4744-9091-c58be474e324
📒 Files selected for processing (13)
.lychee.tomldocs/oss/building-features/how-to-conditionally-server-render-based-on-device-type.mddocs/oss/building-features/how-to-use-different-files-for-client-and-server-rendering.mddocs/oss/core-concepts/auto-bundling-file-system-based-automated-bundle-generation.mddocs/oss/getting-started/installation-into-an-existing-rails-app.mdllms-full.txtllms.txtpackages/react-on-rails/README.mdreact_on_rails/lib/react_on_rails/configuration.rbreact_on_rails/lib/react_on_rails/packer_utils.rbreact_on_rails/lib/react_on_rails/packs_generator.rbreact_on_rails/lib/tasks/generate_packs.rakereact_on_rails/spec/dummy/spec/packs_generator_spec.rb
Greptile SummaryThis PR canonicalizes the four longest Docusaurus URL slugs by adding Key changes:
Confidence Score: 4/5Safe to merge — all changes are URL string updates with no logic changes, and the rspec suite passes with 118 examples. High confidence: the PR is a well-scoped URL slug cleanup. All old URLs were consistently replaced in Ruby source, rake tasks, and specs. The only concerns are a minor lychee regex inconsistency and an undocumented unrelated exclude — neither affects runtime behavior. .lychee.toml deserves a second look for the missing end-anchor on the Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["auto-bundling-file-system-based-automated-bundle-generation"] -->|"slug: auto-bundling"| B["/docs/core-concepts/auto-bundling"]
C["installation-into-an-existing-rails-app"] -->|"slug: existing-rails-app"| D["/docs/getting-started/existing-rails-app"]
E["how-to-conditionally-server-render-based-on-device-type"] -->|"slug: conditional-server-rendering"| F["/docs/building-features/conditional-server-rendering"]
G["how-to-use-different-files-for-client-and-server-rendering"] -->|"slug: client-server-files"| H["/docs/building-features/client-server-files"]
B --> I["Updated in: packs_generator.rb\npacker_utils.rb, configuration.rb\ngenerate_packs.rake, llms files"]
D --> I
F --> J["Not referenced in non-docs files\nNo lychee exclude needed"]
H --> J
Reviews (1): Last reviewed commit: "Add lychee excludes for new canonical do..." | Re-trigger Greptile |
| # PLANNED DEPLOYMENTS NOT YET LIVE | ||
| # ============================================================================ | ||
| '^https://ror-spec-dummy\.reactrails\.com', # spec/dummy demo - deployment pending | ||
| '^https://reactonrails\.com/docs/getting-started/existing-rails-app', # #2929 slug cleanup - live after docs deploy |
There was a problem hiding this comment.
Missing end-anchor on lychee exclude pattern
The existing-rails-app pattern is not anchored at the end with /?$, unlike the other two patterns added in this same block (e.g., auto-bundling/?$). Without the end-anchor, the regex would also suppress any future URL that begins with this prefix (e.g., existing-rails-app-pro or existing-rails-app/subtopic), which could silently hide broken links.
| '^https://reactonrails\.com/docs/getting-started/existing-rails-app', # #2929 slug cleanup - live after docs deploy | |
| '^https://reactonrails\.com/docs/getting-started/existing-rails-app/?$', # #2929 slug cleanup - live after docs deploy |
| '^https://ror-spec-dummy\.reactrails\.com', # spec/dummy demo - deployment pending | ||
| '^https://reactonrails\.com/docs/getting-started/existing-rails-app', # #2929 slug cleanup - live after docs deploy | ||
| '^https://reactonrails\.com/docs/core-concepts/auto-bundling/?$', # #2929 slug cleanup - live after docs deploy | ||
| '^https://reactonrails\.com/docs/api-reference/?$', # Generated-index URL - not a standalone page |
There was a problem hiding this comment.
Undocumented unrelated exclude added
The docs/api-reference lychee exclusion is unrelated to the four slug-cleanup URLs described in this PR — it has a different rationale ("Generated-index URL - not a standalone page") and does not appear anywhere in the PR description's change list. This makes it harder to review since it's unclear what prompted this addition. Consider either moving it to a dedicated commit or adding a brief note in the PR description explaining it.
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
| puts Rainbow(" • File-system based components: https://reactonrails.com/docs/" \ | ||
| "guides/auto-bundling-file-system-based-automated-bundle-generation.md").cyan | ||
| "core-concepts/auto-bundling/").cyan | ||
| puts Rainbow(" • Component registration: https://reactonrails.com/docs/").cyan |
There was a problem hiding this comment.
This URL is incomplete — it points to the docs root rather than a specific component registration page. This is a pre-existing issue but this PR touches the adjacent line, making it a good opportunity to fix. Should it be something like https://reactonrails.com/docs/getting-started/existing-rails-app/ or a more specific component registration page?
| puts Rainbow(" • Component registration: https://reactonrails.com/docs/").cyan | |
| puts Rainbow(" • Component registration: https://reactonrails.com/docs/").cyan |
(Flagging for fix — leave as-is only if intentional.)
Review: Docs Route CleanupOverall this is a clean, well-scoped PR. The approach of using Docusaurus Looks good:
One issue flagged inline:
Redirect coordination reminder: |
…e-dedup * origin/main: (51 commits) Fix Content-Length mismatch and null renderingRequest errors in node renderer (#3069) Improve memory debugging docs with simpler heap snapshot approach (#3072) Enforce strict version matching in doctor and recommend doctor on errors (#3070) Remove immediate_hydration feature from codebase (#2834) Fix infinite fork loop when node renderer worker fails to bind port (#2881) Fix TanStack Router SSR hydration mismatch in Pro async path (#2932) Improve node renderer error messages for malformed render requests (#3068) Add interactive mode prompt to create-react-on-rails-app (#3063) docs: replace hardcoded version numbers with unversioned install commands (#2893) Remove Contributing section from docs sidebar (#3064) Consolidate docs comparison pages into single evaluation entry (#3065) Docs route cleanup: canonicalize worst verbose URL slugs (#3067) Add agent summary blocks to high-value docs pages (#3066) Fix brittle positional assertions in create-app tests (#2923) Auto-resolve renderer password from ENV in Rails Pro (#2921) Standardize bundle env vars from =yes to =true (#2925) Fix Pro generator multiline and template-literal rewrites (#2918) Fix spec/dummy Procfile.dev SERVER_BUNDLE_ONLY to match template convention (#2922) Add llms docs entry points (#2916) Bump version to 16.6.0.rc.0 ... # Conflicts: # packages/create-react-on-rails-app/src/create-app.ts
…lacement-2835-main * origin/main: (44 commits) Fix Content-Length mismatch and null renderingRequest errors in node renderer (#3069) Improve memory debugging docs with simpler heap snapshot approach (#3072) Enforce strict version matching in doctor and recommend doctor on errors (#3070) Remove immediate_hydration feature from codebase (#2834) Fix infinite fork loop when node renderer worker fails to bind port (#2881) Fix TanStack Router SSR hydration mismatch in Pro async path (#2932) Improve node renderer error messages for malformed render requests (#3068) Add interactive mode prompt to create-react-on-rails-app (#3063) docs: replace hardcoded version numbers with unversioned install commands (#2893) Remove Contributing section from docs sidebar (#3064) Consolidate docs comparison pages into single evaluation entry (#3065) Docs route cleanup: canonicalize worst verbose URL slugs (#3067) Add agent summary blocks to high-value docs pages (#3066) Fix brittle positional assertions in create-app tests (#2923) Auto-resolve renderer password from ENV in Rails Pro (#2921) Standardize bundle env vars from =yes to =true (#2925) Fix Pro generator multiline and template-literal rewrites (#2918) Fix spec/dummy Procfile.dev SERVER_BUNDLE_ONLY to match template convention (#2922) Add llms docs entry points (#2916) Bump version to 16.6.0.rc.0 ... # Conflicts: # CHANGELOG.md
### Summary 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 #2834, #2881, #2918, #2921, #2923, #2932, #3063, #3068, #3070. **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). ### Pull Request checklist - [x] ~Add/update test to cover these changes~ - [x] ~Update documentation~ - [x] Update CHANGELOG file ### Other Information 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 --> ## Summary by CodeRabbit * **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) <[email protected]>
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) <[email protected]>
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) <[email protected]>
## Summary Fixes #2929 Canonicalize the four worst-offender docs URL slugs by adding Docusaurus `slug:` frontmatter. Files are not renamed — only the public URL changes. ### Route mapping | Old URL path | New URL path | |---|---| | `/docs/core-concepts/auto-bundling-file-system-based-automated-bundle-generation` | `/docs/core-concepts/auto-bundling` | | `/docs/getting-started/installation-into-an-existing-rails-app` | `/docs/getting-started/existing-rails-app` | | `/docs/building-features/how-to-conditionally-server-render-based-on-device-type` | `/docs/building-features/conditional-server-rendering` | | `/docs/building-features/how-to-use-different-files-for-client-and-server-rendering` | `/docs/building-features/client-server-files` | ### Changes - Add `slug:` frontmatter to 4 docs pages with clean canonical slugs - Update all hardcoded full URLs in Ruby source, error messages, rake tasks, specs, `llms.txt`, `llms-full.txt`, and `packages/react-on-rails/README.md` - Fix a stale `/docs/guides/` URL in `generate_packs.rake` (pre-existing bug from the IA reorganization) - Add temporary lychee excludes for URLs that won't be live until deployment ### Redirect coordination needed (shakacode/reactonrails.com) After this PR is deployed, the following redirects should be added to `shakacode/reactonrails.com`: ``` /docs/core-concepts/auto-bundling-file-system-based-automated-bundle-generation → /docs/core-concepts/auto-bundling /docs/getting-started/installation-into-an-existing-rails-app → /docs/getting-started/existing-rails-app /docs/building-features/how-to-conditionally-server-render-based-on-device-type → /docs/building-features/conditional-server-rendering /docs/building-features/how-to-use-different-files-for-client-and-server-rendering → /docs/building-features/client-server-files ``` ### Re: `home-pro.md` acceptance criterion The `home-pro.md` file referenced in the issue does not exist in the current docs layout. The Pro hub is already canonicalized at `docs/pro/react-on-rails-pro.md` with `slug: /pro`. No action needed. ## Test plan - [x] `bundle exec rspec spec/packs_generator_spec.rb` — 118 examples, 0 failures - [x] `bundle exec rubocop` — no offenses - [x] Pre-commit hooks pass (lychee, prettier, trailing-newlines) - [ ] Verify docs site builds correctly with new slugs after deployment - [ ] Verify old URLs redirect after reactonrails.com redirect config is added 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk: changes are limited to documentation routing and updating hardcoded doc links in errors/readmes, with no behavioral changes to runtime logic beyond message text. > > **Overview** > **Canonicalizes several long docs URLs** by adding Docusaurus `slug` frontmatter to four OSS docs pages (no file renames), changing their public routes. > > **Updates references to the new canonical URLs** across the repo (README, `llms*.txt`, and Ruby error/help messages in `configuration.rb`, `packer_utils.rb`, `packs_generator.rb`, rake output, and associated specs) and adds temporary `.lychee.toml` excludes for the new docs URLs until the docs site deploys. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 1f3b2a7. 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 --> ## Summary by CodeRabbit * **Documentation** * Restructured documentation routing with shorter, cleaner URL paths * Updated error messages to reference consolidated documentation pages * **Chores** * Updated link checker configuration to exclude specific documentation pages <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]> Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
### Summary 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 #2834, #2881, #2918, #2921, #2923, #2932, #3063, #3068, #3070. **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). ### Pull Request checklist - [x] ~Add/update test to cover these changes~ - [x] ~Update documentation~ - [x] Update CHANGELOG file ### Other Information 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 --> ## Summary by CodeRabbit * **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) <[email protected]>
## Summary Fixes #2929 Canonicalize the four worst-offender docs URL slugs by adding Docusaurus `slug:` frontmatter. Files are not renamed — only the public URL changes. ### Route mapping | Old URL path | New URL path | |---|---| | `/docs/core-concepts/auto-bundling-file-system-based-automated-bundle-generation` | `/docs/core-concepts/auto-bundling` | | `/docs/getting-started/installation-into-an-existing-rails-app` | `/docs/getting-started/existing-rails-app` | | `/docs/building-features/how-to-conditionally-server-render-based-on-device-type` | `/docs/building-features/conditional-server-rendering` | | `/docs/building-features/how-to-use-different-files-for-client-and-server-rendering` | `/docs/building-features/client-server-files` | ### Changes - Add `slug:` frontmatter to 4 docs pages with clean canonical slugs - Update all hardcoded full URLs in Ruby source, error messages, rake tasks, specs, `llms.txt`, `llms-full.txt`, and `packages/react-on-rails/README.md` - Fix a stale `/docs/guides/` URL in `generate_packs.rake` (pre-existing bug from the IA reorganization) - Add temporary lychee excludes for URLs that won't be live until deployment ### Redirect coordination needed (shakacode/reactonrails.com) After this PR is deployed, the following redirects should be added to `shakacode/reactonrails.com`: ``` /docs/core-concepts/auto-bundling-file-system-based-automated-bundle-generation → /docs/core-concepts/auto-bundling /docs/getting-started/installation-into-an-existing-rails-app → /docs/getting-started/existing-rails-app /docs/building-features/how-to-conditionally-server-render-based-on-device-type → /docs/building-features/conditional-server-rendering /docs/building-features/how-to-use-different-files-for-client-and-server-rendering → /docs/building-features/client-server-files ``` ### Re: `home-pro.md` acceptance criterion The `home-pro.md` file referenced in the issue does not exist in the current docs layout. The Pro hub is already canonicalized at `docs/pro/react-on-rails-pro.md` with `slug: /pro`. No action needed. ## Test plan - [x] `bundle exec rspec spec/packs_generator_spec.rb` — 118 examples, 0 failures - [x] `bundle exec rubocop` — no offenses - [x] Pre-commit hooks pass (lychee, prettier, trailing-newlines) - [ ] Verify docs site builds correctly with new slugs after deployment - [ ] Verify old URLs redirect after reactonrails.com redirect config is added 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk: changes are limited to documentation routing and updating hardcoded doc links in errors/readmes, with no behavioral changes to runtime logic beyond message text. > > **Overview** > **Canonicalizes several long docs URLs** by adding Docusaurus `slug` frontmatter to four OSS docs pages (no file renames), changing their public routes. > > **Updates references to the new canonical URLs** across the repo (README, `llms*.txt`, and Ruby error/help messages in `configuration.rb`, `packer_utils.rb`, `packs_generator.rb`, rake output, and associated specs) and adds temporary `.lychee.toml` excludes for the new docs URLs until the docs site deploys. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 1f3b2a7. 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 --> ## Summary by CodeRabbit * **Documentation** * Restructured documentation routing with shorter, cleaner URL paths * Updated error messages to reference consolidated documentation pages * **Chores** * Updated link checker configuration to exclude specific documentation pages <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]> Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
### Summary 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 #2834, #2881, #2918, #2921, #2923, #2932, #3063, #3068, #3070. **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). ### Pull Request checklist - [x] ~Add/update test to cover these changes~ - [x] ~Update documentation~ - [x] Update CHANGELOG file ### Other Information 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 --> ## Summary by CodeRabbit * **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) <[email protected]>
Follows shakacode/react_on_rails#3067, which canonicalized four verbose docs URL slugs via Docusaurus `slug:` frontmatter. - Redirect the four legacy URLs (with and without trailing slash) to their new canonical destinations - Point the existing `/docs/guides/file-system-based-automated-bundle-generation.md` redirect directly at `/docs/core-concepts/auto-bundling/` to avoid a redirect chain - Update site-shell links (footer and `docsRoutes` constants) that still referenced the legacy `installation-into-an-existing-rails-app` slug Fixes #75
Follows shakacode/react_on_rails#3067, which canonicalized four verbose docs URL slugs via Docusaurus `slug:` frontmatter. - Redirect the four legacy URLs (with and without trailing slash) to their new canonical destinations - Point the existing `/docs/guides/file-system-based-automated-bundle-generation.md` redirect directly at `/docs/core-concepts/auto-bundling/` to avoid a redirect chain - Update site-shell links (footer and `docsRoutes` constants) that still referenced the legacy `installation-into-an-existing-rails-app` slug Fixes #75
Summary
Fixes #2929
Canonicalize the four worst-offender docs URL slugs by adding Docusaurus
slug:frontmatter. Files are not renamed — only the public URL changes.Route mapping
/docs/core-concepts/auto-bundling-file-system-based-automated-bundle-generation/docs/core-concepts/auto-bundling/docs/getting-started/installation-into-an-existing-rails-app/docs/getting-started/existing-rails-app/docs/building-features/how-to-conditionally-server-render-based-on-device-type/docs/building-features/conditional-server-rendering/docs/building-features/how-to-use-different-files-for-client-and-server-rendering/docs/building-features/client-server-filesChanges
slug:frontmatter to 4 docs pages with clean canonical slugsllms.txt,llms-full.txt, andpackages/react-on-rails/README.md/docs/guides/URL ingenerate_packs.rake(pre-existing bug from the IA reorganization)Redirect coordination needed (shakacode/reactonrails.com)
After this PR is deployed, the following redirects should be added to
shakacode/reactonrails.com:Re:
home-pro.mdacceptance criterionThe
home-pro.mdfile referenced in the issue does not exist in the current docs layout. The Pro hub is already canonicalized atdocs/pro/react-on-rails-pro.mdwithslug: /pro. No action needed.Test plan
bundle exec rspec spec/packs_generator_spec.rb— 118 examples, 0 failuresbundle exec rubocop— no offenses🤖 Generated with Claude Code
Note
Low Risk
Low risk: changes are limited to documentation routing slugs and updating hardcoded documentation links in messages/tests; no functional behavior changes beyond where links point.
Overview
Canonicalizes four OSS docs pages by adding Docusaurus
slugfrontmatter, changing their public URLs to shorter paths.Updates hardcoded docs links across the repo (Ruby error messages,
react_on_rails:generate_packsrake output, specs,llms*.txt, and the npm package README) to point at the new canonical routes, and adds temporarylycheeexcludes for the not-yet-deployed new URLs (plus the generatedapi-referenceindex URL).Reviewed by Cursor Bugbot for commit a1bba0d. Bugbot is set up for automated code reviews on this repo. Configure here.
Summary by CodeRabbit