The Phase 1 rewrite (0baef2d) replaced abstract poetry with plain-English
copy and Rado upfront. The operator audited and the verdict was: still a
text wall. A visitor scans the page and bounces — too many paragraphs, no
visual show, no proof of life, no product screenshots. Apple/Stripe/Linear-
style pages don't sell with paragraphs; they sell with one dominant visual
per section, big typography, horizontal scroll cards, and motion that
reinforces the page is alive.
This commit ships Phase 2A (visual scaffolding) and Phase 2B (featured
commits) together. Direction locked by operator: Stripe-style editorial
aesthetic, live animation, hybrid auto/manual featured commits.
Hero rewritten — two-column on desktop:
- Left: Rado anchor + H1 + plain-English offer + 3 CTAs
- Right: terminal-styled showing the last 6 commits with
typewriter animation on the newest. Mac-style window chrome, AI badges
(emerald), monospace, blinking cursor. Mobile stacks below.
- The "AI commits recorded so far" line is now small supporting text under
the terminal, not a separate paragraph.
New section (dark, between hero and products):
- "What we just shipped." H2.
- Horizontal scroll of up to 8 commit cards. Each card: real screenshot
(auto-captured after-shot or operator-uploaded override), AI badge,
product tag, time-ago, headline (operator override or commit message),
SHA, "See what changed" link to /build-log/.
- New reusable primitive: snap-to-card mobile,
arrow buttons that fade in on hover desktop, scrollbar hidden, respects
prefers-reduced-motion.
- Hidden if no public commits exist yet.
Products-strip rewritten with horizontal scroll + visual cards:
- Each card: 16:10 aspect-ratio visual top half + body below
- Live products with screenshotUrl: real screenshot
- Live without: stylized version-badge against emerald gradient
- In-build: code-window mockup (terminal with traffic-light dots showing
fake
npm run build output) against amber gradient
- Planning + incumbent: brand-mark visual — giant NO. typography + the
incumbent slug, against stone-900 gradient. The card itself becomes
the constitutional posture before any product code exists.
- Status badges color-coded (emerald=live, amber=in-build, stone=planning)
Featured commits override system (migration 0008):
- New columns on commits table:
- featured_excluded boolean default false (operator marks interior
commits as not-feature-worthy)
- featured_headline text (operator override of commit-message-as-headline,
capped 120 chars)
- featured_screenshot_url text (operator uploads polished image; falls
back to auto-captured screenshotAfterUrl)
- featured_for_product text (tag commit to a specific product slug for
the strip's grouping)
- New index commits_featured_idx on (featured_excluded, committed_at)
- /hall/admin/commits — operator UI listing 50 most-recent public commits
with expand-to-edit form per row (excluded toggle, headline, screenshot
URL, product tag, save). Auto/Curated/Excluded badges visible at glance.
- featured-queries.ts exports getFeaturedShips() returning normalized rows
with effective headline/screenshot computed (override > fallback).
- featured-actions.ts: server actions for save + toggle, operator-gated.
Sections moved out of the old ThreeBeatHero shell into top-level sections:
- NamedBetrayalBeat now wrapped in its own cream block (FeaturedRefusalSection)
- RealHumanBeat wrapped in a max-width container
- OfferBeat wrapped in its own cream block