- Shipped
- October 18, 2026 at 7:28 AM UTC
- Author
- Kamo
- Commit
- 9de671c
/?oauth_request=<64 hex> is the OAuth sign-in page by a beforeFiles rewrite in next.config.mjs to /oauth/sign-in (the browser keeps the URL), not by a switch inside app/page.tsx: a switch on the search params makes / either a dynamic render (searchParams) or a client bail-out to an empty Suspense fallback (useSearchParams) — both change the standard page's first render. With the rewrite app/page.tsx is not edited at all, / stays a static prerender, and its HTML is identical to origin/main's but for the random field-name suffix it draws at every build. The has-pattern is mode.mjs's OAUTH_REQUEST_VALUE; Next anchors it and reads the LAST value of a repeated parameter, so isOAuthMode reads the last value too (pinned against Next's own matchHas in tests/oauth-mode). analyticsAnalytics renders nothing in the OAuth context (/oauth/... or the OAuth-mode URL) — checked in the server render too, because an afterInteractive Script still emits a preload <link> for analytics.kamocrm.com there; DynamicMetaLoader and the ribbon's org wording stand down in the same context (effects only). Nothing changes for any other route. The error card is a client component (OAuthErrorView): MUI from a server component hydrated with a mismatch (#418) in the real build.
