Uh oh!
There was an error while loading. Please reload this page.
feat(landing): port the v5 marketing landing onto production - #576
Conversation
production still serves the v4 landing — the scroll-driven knowledge graph from #513. main has carried v5 since #524, but production sits 68 commits behind it, and promoting main wholesale would also ship the gamification feature and apply 8 unrun migrations to the production database. This takes the landing and nothing else. Every file here is origin/main's version, with three deliberate departures: - lib/api.ts gains only `subscribeToNewsletter`, which the beta CTA calls and production lacks. Taking main's whole api.ts would have brought the gamification client with it. POST /api/newsletter/subscribe already exists on production's backend, so the CTA works as shipped. - globals.css takes the 238-line .landing-dc/.landing-v5 block only. The one other addition in main's copy — the sap-burst keyframe behind an achievement badge in BadgeModal — belongs to a component this branch does not have. - The v4 marketing components it replaces are deleted (FeatureBand, SurfaceBento, featureBands, graph/, surfaces/). Nothing outside components/marketing/ imported them; marketing/ now matches main. e2e follows the same rule: landing-graph.spec.ts drives the v4 graph section this removes, so it goes; landing-drag-field.spec.ts and the public-seo copy assertions come across. support/db.ts's additions stay behind — those are gamification's. Verified on this branch: tsc --noEmit clean, DEPLOY_ENV=production next build clean, and the 44 landing unit tests pass. three@^0.184.0 is already a production dependency; layout.tsx, sitemap.ts and robots.ts needed no change. No backend change, no migration. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 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 |
This pull request has been ignored for the connected project Preview Branches by Supabase. |
Deploying with |
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs | frontend-staging | 7d7f8e7 | Commit Preview URL Branch Preview URL | Aug 23 2026, 03:49 AM |
CI's `eslint . --max-warnings=-1` exits 2 on "There are suppressions left that do not occur anymore" — 0 errors, but a stale entry is still a failure. The three suppressed violations under src/app/(public)/page.tsx belonged to the v4 landing (no-html-link-for-pages, two prefer-const, and a set-state-in-effect); the v5 page this replaces has none of them. Pruned with `eslint . --prune-suppressions`, the remedy the error names. main's copy of this file does not list that page either, so this converges on the same state rather than inventing one.
Uh oh!
There was an error while loading. Please reload this page.
Puts the v5 landing on saplinglearn.com without promoting the rest of
main.Why this shape
productionstill serves the v4 landing (the scroll-driven knowledge graph from #513).mainhas carried v5 since #524, butproductionis 68 commits behind it — a fullmake promotewould also ship the gamification/achievements feature, the quiz overhaul, and apply 8 unrun migrations to the production database. This branch cuts fromproductionand takes the landing alone: frontend only, no backend change, no migration.What's in it
Every file is
origin/main's version:components/landing-v5/(27 files),components/landing/useLanding.ts,lib/landing/(engine, hero3d, content)app/(public)/— the v5 landing plus the pages its navbar links to: faq, gallery, news, team, wiki, and the updated about pagecomponents/companion/CompanionShell.tsx, the three landing imagesglobals.css— the 238-line.landing-dc/.landing-v5blockThree deliberate departures from "copy main's file":
lib/api.tsgains onlysubscribeToNewsletter. The beta CTA calls it and production lacks it; taking main's wholeapi.tswould have brought the gamification client along.POST /api/newsletter/subscribealready exists on production's backend, so the CTA works as shipped.globals.cssexcludes thesap-burstkeyframe that main added beside the landing block — it's the flourish behind an achievement badge inBadgeModal, a component this branch doesn't have.FeatureBand,SurfaceBento,featureBands,graph/,surfaces/. Nothing outsidecomponents/marketing/imported them;marketing/now matchesmainexactly.E2E follows the same rule:
landing-graph.spec.tsdrives the v4 graph section this removes, so it goes;landing-drag-field.spec.tsand thepublic-seocopy assertions come across.support/db.ts's additions stay behind — those belong to gamification.Verification
Run on this branch, against the production profile:
tsc --noEmit— cleanDEPLOY_ENV=production next build— clean;/news,/team,/wiki,/gallery,/faqall in the route tablelanding-v5+lib/landing)/,/faq,/gallery,/news,/team,/wiki,/aboutall return 200three@^0.184.0was already a production dependency.layout.tsx,sitemap.ts,robots.ts,useScrollLockanderrorMessageare identical between the branches and needed no change.After merging
productionwill hold one more commit thatmaindoesn't. It already carries 5 such commits, somake promote'sproduction-divergedpreflight guard already blocks (it has no override) — whenever you next promote, back-mergeproductionintomainfirst.🤖 Generated with Claude Code