Back to Plate

Sync Shadcn Home Page 4a4dc8e..360e8a1

docs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page/plan.md

53.0.87.9 KB
Original Source

Sync Shadcn Home Page 4a4dc8e..360e8a1

Range

  • Upstream repo: shadcn-ui/ui
  • Upstream app: ../shadcn/apps/v4
  • Base: 4a4dc8eb0fc793d8e9225e780183ad605f15d2c2
  • Target: 360e8a19c3ee13ac78b656027462007c8bdaa6d5 (2026-05-27, fix(transform-rtl): preserve quotes in transformed className literals (#10495))
  • Scope: home page
  • Plate app: apps/www
  • Status source: docs/sync/shadcn/status.json
  • Full upstream rows in range: 739
  • Scoped rows: 56
  • Out-of-scope rows: 683

Summary

Recommendation: keep Plate's home page as the product surface. Do not import upstream's new shadcn card mosaic, Build Your Own CTA, or /create?preset=... funnel. The only worthwhile upstream idea is layout polish around the hero/preview area: tighter header bottom spacing and a wider, less padded preview container if it makes Plate's editor preview feel more like the current shadcn page.

This scoped plan cannot advance lastSyncedCommit; it accounts only for the home-page rows in the already planned 4a4dc8e..360e8a1 range.

Visual Evidence

Screenshots are saved under screenshots/:

  • shadcn-home-desktop-before.png
  • shadcn-home-mobile-before.png
  • plate-home-desktop-before.png
  • plate-home-mobile-before.png
  • plate-home-desktop-after.png
  • plate-home-mobile-after.png
  • plate-cn-home-desktop-after.png
  • plate-cn-home-mobile-after.png
  • plate-home-gray-to-bottom-desktop-top.png
  • plate-home-gray-to-bottom-desktop-bottom.png
  • plate-home-gray-to-bottom-mobile-top.png
  • plate-home-gray-to-bottom-mobile-bottom.png
  • plate-cn-home-gray-to-bottom-desktop-top.png
  • plate-cn-home-gray-to-bottom-desktop-bottom.png
  • plate-cn-home-gray-to-bottom-mobile-top.png
  • plate-cn-home-gray-to-bottom-mobile-bottom.png
  • plate-home-no-github-cta-desktop.png
  • plate-home-no-github-cta-mobile.png
  • plate-cn-home-no-github-cta-desktop.png
  • plate-cn-home-no-github-cta-mobile.png
  • plate-home-fullbleed-muted-desktop.png
  • plate-home-fullbleed-muted-mobile.png
  • plate-cn-home-fullbleed-muted-desktop.png
  • plate-cn-home-fullbleed-muted-mobile.png

Visible deltas from the screenshot comparison:

  • Upstream home uses a muted badge announcement; Plate had bare black link text. Smart-merged as a muted Plate announcement badge.
  • Upstream home demo surface contains two gradient overlays around the retained product demo. Smart-merged those overlay tokens onto Plate's editor preview surface.
  • Upstream demo container clips overflow deliberately. Smart-merged the overflow containment while keeping Plate's editor preview and CN route.
  • Plate keeps a full-bleed muted lower field through the retained preview area and home footer so the gray reads as page background instead of a centered slab.
  • Plate keeps one primary home CTA to docs; the GitHub CTA is intentionally removed from the hero because GitHub is already present in the shared header.
  • Plate caps the retained preview content with a centered max-w-screen-2xl container; at a 2048px viewport this computes to 1536px with equal side margins while the muted lower field remains full bleed.
  • Upstream cards/create/Rhea surfaces remain excluded.

Complete Upstream Inventory

Full table: inventory.md

DecisionCountNotes
smart-merge1Root page layout/composition hunk only.
exclude-upstream34New upstream cards/demo product surface.
no-op21Upstream deletes old demo components Plate does not own.
out-of-scope683Default full sync lane remains pending.

Added Files

34 upstream files were added under apps/v4/app/(app)/(root)/cards/**. They are shadcn homepage card demos. Decision: exclude-upstream.

Modified Files

  • apps/v4/app/(app)/(root)/page.tsx: smart-merge. Keep Plate copy, CTAs, Playground preview, CN home page, and Potion/Pro path. Consider only spacing/container ideas from upstream.

Deleted Files

21 upstream files were deleted under apps/v4/app/(app)/(root)/components/**. Plate does not contain those files. Decision: no-op.

OrderSliceClassFilesWhyVerification
1Home layout polish onlysmart-mergeapps/www/src/app/(app)/page.tsx, apps/www/src/app/cn/page.tsx, apps/www/src/app/(app)/_components/announcement-button.tsx, maybe apps/www/src/components/page-header.tsx if the local primitive needs a scoped class hookBest take: keep Plate's editor/product content; borrow only the useful spacing, preview-container, muted badge, and gradient treatment from upstream.Screenshot comparison, browser proof on / and /cn, plus pnpm --filter www typecheck.
2Home theme/create residue auditdelete-plate-residueapps/www/src/app/(app)/_components/potion-lazy-block.tsx, apps/www/src/components/playground-preview.tsx, apps/www/src/app/globals.cssRemove dead homepage wording/state that still says themes/customizer if it is not used by retained preview code. Do not touch shared preview theme wrappers that are still required.`rg -n "Themes
3Upstream cards/create exclusionexclude-upstreamapps/v4/app/(app)/(root)/cards/**, apps/v4/app/(app)/(root)/page.tsx CTA hunkThe card mosaic is shadcn product marketing tied to /create; Plate should not ship it.Source audit only; no Plate patch unless accidental imports are found.

Explicit Exclusions

  • Do not import upstream CardsDemo or any apps/v4/app/(app)/(root)/cards/** files.
  • Do not import the Build Your Own CTA or /create?preset=b27GcrRo link.
  • Do not keep a separate home GitHub CTA; GitHub is header-owned.
  • Do not import Rhea/style/theme/generated registry output as part of home-page work. That belongs to the excluded create/theming product surface.
  • Do not replace Plate's editor preview with shadcn dashboard/card screenshots.

Plate Forks To Preserve

  • Plate English home page: apps/www/src/app/(app)/page.tsx.
  • Plate CN home page: apps/www/src/app/cn/page.tsx.
  • Plate editor preview: apps/www/src/components/playground-preview.tsx.
  • Plate Pro/Potion lazy block path, unless you decide to remove the Pro promo from home separately.
  • Plate docs/product CTAs: docs and GitHub, not upstream create.

Smart Merge Details

Take from upstream only if implementation confirms it improves the current page:

  • tighter header bottom padding on the home route
  • less horizontal padding around the large preview area on medium/large screens
  • overflow containment for the primary demo so the first viewport feels deliberate
  • muted badge treatment for the announcement
  • top and bottom gradient overlays on the retained Plate editor preview surface
  • full-bleed muted lower wrapper and home-only footer background so the gray continues to page bottom without a centered gray panel
  • single docs CTA in the hero actions; no duplicate GitHub CTA
  • centered max-w-screen-2xl container for the retained editor preview content

Keep Plate-owned:

  • title/copy
  • docs/GitHub CTAs
  • editor preview
  • CN equivalent page
  • no theme/customizer/create flow

Questions

None. This follows existing policy: keep Plate homepage and exclude upstream create/theme surfaces.

Status Update Rule

This scoped plan must not advance lastSyncedCommit. It may become a partialSyncs entry after you accept and implement a home-page slice. The default full sync lane remains pending for 683 out-of-scope rows.

Artifacts

  • Full upstream rows: upstream-name-status.tsv
  • Full upstream numstat: upstream-numstat.tsv
  • Upstream commits: upstream-commits.txt
  • Scoped rows: home-scope-name-status.tsv
  • Scoped numstat: home-scope-numstat.tsv
  • Focused diff evidence: inspect upstream route diffs on demand; .patch artifacts are intentionally not committed.
  • Inventory: inventory.md