Skip to content

Docs route cleanup: canonicalize worst verbose URL slugs#3067

Merged
justin808 merged 3 commits intomainfrom
jg/2929-docs-route-cleanup
Apr 4, 2026
Merged

Docs route cleanup: canonicalize worst verbose URL slugs#3067
justin808 merged 3 commits intomainfrom
jg/2929-docs-route-cleanup

Conversation

@justin808
Copy link
Copy Markdown
Member

@justin808 justin808 commented Apr 4, 2026

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

  • bundle exec rspec spec/packs_generator_spec.rb — 118 examples, 0 failures
  • bundle exec rubocop — no offenses
  • 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


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 slug frontmatter, changing their public URLs to shorter paths.

Updates hardcoded docs links across the repo (Ruby error messages, react_on_rails:generate_packs rake output, specs, llms*.txt, and the npm package README) to point at the new canonical routes, and adds temporary lychee excludes for the not-yet-deployed new URLs (plus the generated api-reference index URL).

Reviewed by Cursor Bugbot for commit a1bba0d. Bugbot is set up for automated code reviews on this repo. Configure here.

Summary by CodeRabbit

  • Documentation
    • Added routing slugs to several docs and consolidated/shortened documentation links to the new auto-bundling page.
  • Chores
    • Updated link checker configuration to exclude a few specific documentation routes.

justin808 and others added 2 commits April 3, 2026 17:04
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]>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 4, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 78a897de-296e-4fc4-8643-cb7105998953

📥 Commits

Reviewing files that changed from the base of the PR and between 1f3b2a7 and a1bba0d.

📒 Files selected for processing (1)
  • .lychee.toml

Walkthrough

Added 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 .lychee.toml excludes to skip specific reactonrails.com docs links.

Changes

Cohort / File(s) Summary
Documentation Frontmatter
docs/oss/building-features/how-to-conditionally-server-render-based-on-device-type.md, docs/oss/building-features/how-to-use-different-files-for-client-and-server-rendering.md, docs/oss/core-concepts/auto-bundling-file-system-based-automated-bundle-generation.md, docs/oss/getting-started/installation-into-an-existing-rails-app.md
Added YAML frontmatter with slug values to establish canonical routes.
Reference Links & Text
llms-full.txt, llms.txt, packages/react-on-rails/README.md
Replaced long docs path installation-into-an-existing-rails-app with existing-rails-app in links and text.
Error Messages & Generators
react_on_rails/lib/react_on_rails/configuration.rb, react_on_rails/lib/react_on_rails/packer_utils.rb, react_on_rails/lib/react_on_rails/packs_generator.rb, react_on_rails/lib/tasks/generate_packs.rake
Updated embedded documentation URLs to use the shorter auto-bundling route.
Tests
react_on_rails/spec/dummy/spec/packs_generator_spec.rb
Updated expected error-message URLs to match the new auto-bundling path.
Link Checker Excludes
.lychee.toml
Added three regex patterns to exclude specific reactonrails.com docs routes from link checking.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Poem

🐰 Hopped through docs to trim a long trail,
Slugs made tidy so links set sail.
Shorter paths now, no more roam—
Clean routes lead every reader home. ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.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
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: canonicalizing verbose documentation URL slugs by adding cleaner routes via frontmatter.
Linked Issues check ✅ Passed The PR fulfills all acceptance criteria from issue #2929: adds slug frontmatter to four docs pages, updates hardcoded URLs across Ruby files and configs, produces route mappings, and coordinates redirects.
Out of Scope Changes check ✅ Passed All changes align with the linked issue scope: canonicalizing four high-value doc routes, updating references, and adding lychee exclusions. No unrelated refactoring or features introduced.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jg/2929-docs-route-cleanup

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.

@claude
Copy link
Copy Markdown
Contributor

claude Bot commented Apr 4, 2026

test

@claude
Copy link
Copy Markdown
Contributor

claude Bot commented Apr 4, 2026

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 (/?$):
'^https://reactonrails\.com/docs/core-concepts/auto-bundling/?$'

But packer_utils.rb contains a URL with a fragment anchor:
https://reactonrails.com/docs/core-concepts/auto-bundling/#enable-nested_entries-for-shakapacker

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
The /docs/api-reference/ exclude is unrelated to any URL changed in this diff (it pre-exists in packages/react-on-rails/README.md). Looks like a valid fix for a pre-existing lychee failure, just not mentioned in the PR description.

building-features slugs need no hardcoded URL updates
Only frontmatter is added for conditional-server-rendering and client-server-files. Neither appears as an absolute URL anywhere else in the repo, so the asymmetry (2 lychee excludes for 4 slug changes) is intentional and correct.

Relative cross-links remain valid
Cross-references to how-to-use-different-files-for-client-and-server-rendering.md use relative .md paths, so the Docusaurus slug change does not affect them.

internal/planning/ still has old URL strings
Planning docs reference old slugs, but since they are not published there is no user-facing impact.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 4, 2026

size-limit report 📦

Path Size
react-on-rails/client bundled (gzip) 62.63 KB (0%)
react-on-rails/client bundled (gzip) (time) 62.63 KB (0%)
react-on-rails/client bundled (brotli) 53.7 KB (0%)
react-on-rails/client bundled (brotli) (time) 53.7 KB (0%)
react-on-rails-pro/client bundled (gzip) 63.65 KB (0%)
react-on-rails-pro/client bundled (gzip) (time) 63.65 KB (0%)
react-on-rails-pro/client bundled (brotli) 54.67 KB (0%)
react-on-rails-pro/client bundled (brotli) (time) 54.67 KB (0%)
registerServerComponent/client bundled (gzip) 127.46 KB (0%)
registerServerComponent/client bundled (gzip) (time) 127.46 KB (0%)
registerServerComponent/client bundled (brotli) 61.65 KB (0%)
registerServerComponent/client bundled (brotli) (time) 61.65 KB (0%)
wrapServerComponentRenderer/client bundled (gzip) 122.02 KB (0%)
wrapServerComponentRenderer/client bundled (gzip) (time) 122.02 KB (0%)
wrapServerComponentRenderer/client bundled (brotli) 56.77 KB (0%)
wrapServerComponentRenderer/client bundled (brotli) (time) 56.77 KB (0%)

Comment thread .lychee.toml 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)
.lychee.toml (1)

74-76: Tighten the existing-rails-app exclude 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

📥 Commits

Reviewing files that changed from the base of the PR and between a056ad0 and 1f3b2a7.

📒 Files selected for processing (13)
  • .lychee.toml
  • docs/oss/building-features/how-to-conditionally-server-render-based-on-device-type.md
  • docs/oss/building-features/how-to-use-different-files-for-client-and-server-rendering.md
  • docs/oss/core-concepts/auto-bundling-file-system-based-automated-bundle-generation.md
  • docs/oss/getting-started/installation-into-an-existing-rails-app.md
  • llms-full.txt
  • llms.txt
  • packages/react-on-rails/README.md
  • react_on_rails/lib/react_on_rails/configuration.rb
  • react_on_rails/lib/react_on_rails/packer_utils.rb
  • react_on_rails/lib/react_on_rails/packs_generator.rb
  • react_on_rails/lib/tasks/generate_packs.rake
  • react_on_rails/spec/dummy/spec/packs_generator_spec.rb

@greptile-apps
Copy link
Copy Markdown

greptile-apps Bot commented Apr 4, 2026

Greptile Summary

This PR canonicalizes the four longest Docusaurus URL slugs by adding slug: frontmatter to four docs files, then updating all absolute URL references across Ruby source, rake tasks, specs, and LLM index files to match the new canonical paths. The files themselves are not renamed, so all relative markdown links in other docs remain valid.

Key changes:

  • Add slug: frontmatter to 4 docs pages, creating shorter canonical URLs (e.g., /docs/core-concepts/auto-bundling instead of the full file-name-derived path)
  • Update all hardcoded reactonrails.com absolute URLs in packs_generator.rb, packer_utils.rb, configuration.rb, generate_packs.rake, and the LLM index files to the new slugs
  • Fix a pre-existing stale /docs/guides/ path in generate_packs.rake (was pointing to a non-existent guides/ section; now correctly points to core-concepts/auto-bundling/)
  • Add lychee excludes for newly referenced URLs not yet live after the docs deploy
  • Add an unrelated docs/api-reference lychee exclude not mentioned in the PR description

Confidence Score: 4/5

Safe 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 existing-rails-app pattern and the unexplained api-reference exclude addition.

Important Files Changed

Filename Overview
.lychee.toml Adds 3 lychee excludes for new URLs not yet live; minor: existing-rails-app pattern lacks /?$ unlike sibling patterns, and an unrelated api-reference exclude is added without mention in the PR description
docs/oss/building-features/how-to-conditionally-server-render-based-on-device-type.md Adds slug: conditional-server-rendering frontmatter only — clean, minimal change
docs/oss/building-features/how-to-use-different-files-for-client-and-server-rendering.md Adds slug: client-server-files frontmatter; internal relative file link to auto-bundling-file-system-based-automated-bundle-generation.md remains valid since files are not renamed
docs/oss/core-concepts/auto-bundling-file-system-based-automated-bundle-generation.md Adds slug: auto-bundling frontmatter only — clean, minimal change
docs/oss/getting-started/installation-into-an-existing-rails-app.md Adds slug: existing-rails-app frontmatter only — clean, minimal change
llms-full.txt Updates one URL from installation-into-an-existing-rails-app to existing-rails-app; correct and consistent
llms.txt Updates one URL from installation-into-an-existing-rails-app to existing-rails-app; correct and consistent
react_on_rails/lib/react_on_rails/packs_generator.rb Three error message URLs updated from long file-name-derived slug to short auto-bundling/ slug; all consistent
react_on_rails/lib/tasks/generate_packs.rake Fixes pre-existing stale /docs/guides/ path and updates URL to new core-concepts/auto-bundling/ slug; both changes are correct
react_on_rails/spec/dummy/spec/packs_generator_spec.rb All three error-message URL expectations updated to match the new slug; consistent with source changes

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
Loading

Reviews (1): Last reviewed commit: "Add lychee excludes for new canonical do..." | Re-trigger Greptile

Comment thread .lychee.toml
# 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
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 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.

Suggested change
'^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

Comment thread .lychee.toml
'^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
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 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>
@justin808 justin808 merged commit 828ac32 into main Apr 4, 2026
15 checks passed
@justin808 justin808 deleted the jg/2929-docs-route-cleanup branch April 4, 2026 09:14
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
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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?

Suggested change
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.)

@claude
Copy link
Copy Markdown
Contributor

claude Bot commented Apr 4, 2026

Review: Docs Route Cleanup

Overall this is a clean, well-scoped PR. The approach of using Docusaurus slug: frontmatter rather than renaming files is correct — it avoids breaking git history and any tooling that references file paths.

Looks good:

  • All four slug redirects are consistently applied across Ruby error messages, rake task output, specs, llms*.txt, and the npm README.
  • The generate_packs.rake stale /docs/guides/ URL fix is a correct pre-existing bug fix bundled appropriately here.
  • Lychee excludes cover the two new slug URLs that are actually referenced in checked files (existing-rails-app, auto-bundling). The other two new slugs (conditional-server-rendering, client-server-files) aren't referenced in any lychee-scanned files, so no excludes needed for them — this is correct.
  • Spec assertions updated in sync with the source messages.

One issue flagged inline:

  • generate_packs.rake line 131: the "Component registration" docs URL is truncated to just https://reactonrails.com/docs/ — it's a pre-existing bug but this PR touches the adjacent line. Worth fixing if there's a correct target URL.

Redirect coordination reminder:
The PR description already notes this, but make sure the four server-side redirects on reactonrails.com go out at the same time as (or before) this is deployed — otherwise the new canonical URLs in error messages will be temporarily broken.

justin808 added a commit that referenced this pull request Apr 8, 2026
…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
justin808 added a commit that referenced this pull request Apr 8, 2026
…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
justin808 added a commit that referenced this pull request Apr 8, 2026
### 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]>
justin808 added a commit that referenced this pull request Apr 9, 2026
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]>
justin808 added a commit that referenced this pull request Apr 9, 2026
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]>
justin808 added a commit that referenced this pull request Apr 12, 2026
## 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>
justin808 added a commit that referenced this pull request Apr 12, 2026
### 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]>
justin808 added a commit that referenced this pull request Apr 12, 2026
## 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>
justin808 added a commit that referenced this pull request Apr 12, 2026
### 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]>
justin808 added a commit to shakacode/reactonrails.com that referenced this pull request Apr 18, 2026
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
justin808 added a commit to shakacode/reactonrails.com that referenced this pull request Apr 18, 2026
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Docs route cleanup follow-up: canonicalize the worst public URLs after IA stabilization

1 participant