Skip to content

feat(app): locale migration L2 — default-locale App cutover - #173

Merged
mkayander merged 3 commits into
mainfrom
cursor/locale-migration-l2-8f0a
Aug 22, 2026
Merged

feat(app): locale migration L2 — default-locale App cutover#173
mkayander merged 3 commits into
mainfrom
cursor/locale-migration-l2-8f0a

Conversation

@mkayander

@mkayander mkayander commented Aug 22, 2026

Copy link
Copy Markdown
Owner

Summary

Locale migration L2: cut default-locale public traffic to App Router and remove duplicate Pages marketing routes.

Approach (learned from L2 spike)

next.config rewrites //en loop with Pages i18n (which 308-strips /en). Next.js also forbids App + Pages on the same path at build time. L2 therefore:

  1. app/(default-locale)/ — unprefixed /, /privacy, /daily, /playground, /profile (shared views + indexable metadata).
  2. Delete Pages marketingindex, privacy, daily, playground, profile (L3 partial, required for build).
  3. Remove i18n from next.config.mjs — required so app/[lang] serves /de, /fr, … after Pages removal.
  4. proxy.ts — locale header on unprefixed marketing paths.

CI / review fixes

  • E2e: dismiss cookie banner before pilot footer privacy link click (Vercel fresh session).
  • Dark Reader: literal <meta name="darkreader-lock" /> in app/layout.tsx (Metadata other skipped empty values); e2e smoke on /.

Testing

  • pnpm lint — pass
  • pnpm test — pass (incl. appDocumentMetadata unit test)
  • pnpm build — pass
  • pnpm test:e2e16/16 pass locally

Next (L3b)

Retire /internal-marketing/* pilot (301 → public App routes).

Open in Web Open in Cursor 

Add app/(default-locale)/ at unprefixed URLs (/ , /privacy, /daily,
/playground, /profile). Remove duplicate Pages marketing routes (Next.js
forbids App + Pages on the same path). Drop next.config i18n so app/[lang]
serves /de, /fr, etc. Extend proxy locale header for unprefixed paths.

Includes L2 e2e smoke, preview-smoke /daily path, and design doc updates.
@vercel

vercel Bot commented Aug 22, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
dstruct Ready Ready Preview Aug 22, 2026 9:05pm

@mkayander
mkayander marked this pull request as ready for review August 22, 2026 20:44
Vercel preview uses a fresh session; the consent overlay covers the footer
and ambiguous Privacy policy links caused the pilot footer navigation test
to flake.
Metadata API omits other tags with empty string values. Render the literal
<meta name="darkreader-lock" /> in app/layout.tsx to match _document.tsx;
add unit and e2e smoke so it stays on the L2 default-locale routes.
@mkayander
mkayander merged commit 7d3da8d into main Aug 22, 2026
7 checks passed
github-actions Bot pushed a commit that referenced this pull request Aug 22, 2026
# [1.385.0](v1.384.0...v1.385.0) (2026-08-22)

### Features

* **app:** locale migration L2 — default-locale App cutover ([#173](#173)) ([7d3da8d](7d3da8d))
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.385.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants