Skip to content

feat(site): machine-collage hero, use-case cards, and /for/ pages - #262

Merged
doodlewind merged 4 commits into
mainfrom
fantastic-link
Aug 11, 2026
Merged

feat(site): machine-collage hero, use-case cards, and /for/ pages#262
doodlewind merged 4 commits into
mainfrom
fantastic-link

Conversation

@doodlewind

@doodlewind doodlewind commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

What

A ground-up landing redesign. The through-line: PocketJS's defining quality is many apps on many wildly different machines at the same time, so the page never rotates content; breadth is always on screen.

Hero: the machine collage

Eight devices in CSS bezels ring the headline, every screen a real capture playing at once, cropped live out of the baked demo wall's known 4x4 tile grid (five <video> crops + one still + two honest CSS mocks for Game Boy and ESP32-P4 pending real clips). Each device carries a caption chip: app, machine, clock and RAM.

  • H1 stays "Rich interactive JavaScript where no browser fits."; the sub now answers what PocketJS is in one sentence. CTAs: Get started, Star on GitHub.
  • The collage lives on a fixed 1440x820 canvas that cover-scales to fill the first viewport: narrow screens crop the sides instead of stacking devices, and scrolling past it ends it. Videos pause off screen and under reduced motion.
  • The Figma screen is a committed still of the 8% zoomed-out spread. The wall loop passes through a 59% close-up whose cartoon figure is not to be used anywhere; a video crop cannot avoid it. (Follow-ups owed: purge that art from the pocket-figma repo assets and re-record the wall's Figma journey at low zoom.)

Page walk

hero → "Write the app you already know how to write" → use-case cards → showcase → CTA.

  • The old pillars prose becomes four capture-backed cards with one-line claims (User interfaces / Games / 3D worlds / AI-native apps), placed below the target selector.
  • Each card opens a new /for/ page (/for/interfaces/, /for/games/, /for/worlds/, /for/agents/): landing-style chrome via site/for/shell.html + per-page fragments rendered by build.ts, no hero, short copy on how PocketJS serves the scenario, receipts and links. Footer Explore lists all four.
  • Removed entirely: the ".pocket format" and "Built for every kind of impossible" sections, the what-runs-where matrix, the demo-wall video background, the proof strip, and the interim rotating-claim hero.

The 3D PSP stays playground-only

The homepage no longer loads pocket-stage-web.js, while the build keeps packaging /stage/ because the playground wraps its live framebuffer in the same model (#260).

Verification

  • bun tools/test.ts --stage=unit — 204 pass. site-stage tests pin the collage (eight lp-dev devices, the 8% Figma still, retired sections stay retired, /for/ links present) and extend the em-dash guard across home + the five /for/ sources.
  • bun site/build.ts clean, /for/*/index.html + /assets/wall/ crops emitted; verify-playground-stage all 13 checks green.
  • Headless-Chrome probes: 8 devices mounted, 5 videos playing, 4 cards present, section order hero/targets/uses/showcase/cta, no console errors, no horizontal overflow at 390px; screenshots eyeballed at 1440px and 390px for the hero, the cards section, and /for/agents/.

🤖 Generated with Claude Code

doodlewind and others added 3 commits August 11, 2026 19:24
…3D stage

The hero keeps the baked demo wall but replaces the 3D PSP with a machine
matrix: seven targets (PSP, PS Vita, Nokia E7, iPhone 2G, PocketBook Verse,
ESP32-P4, macOS) with their silicon — CPU, RAM, display, year — and one
fixed roster of seven flagship apps re-lit per machine, so partial support
is visible instead of implied. The matrix auto-rotates every 6 s, pauses on
hover/focus/off-screen, and parks on any manual pick; reduced-motion never
rotates.

Every dot is repo-claimed: mint = verified on the machine, sky = builds
today with the hardware pass pending, hollow = not yet. The device taxonomy
chips catch up with the same sweep: iPhone 2G joins as live, M5Stack Tab5
becomes live (renderer hardware-verified at 720p), Playdate and PocketBook
move to in-progress per their own READMEs, and iOS moves to in-progress
now that #256 plays on the simulator.

The 3D stage is now playground-only: the homepage no longer loads
pocket-stage-web.js, while the build keeps packaging /stage/ (model,
profile, launcher payloads) because the playground wraps its live
framebuffer in the same model. verify-playground-stage passes against the
rebuilt dist; site-stage tests re-pin the new split.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The first screen is rebuilt around one idea: the most striking thing on
entry is what runs on what. The h1 becomes a rotating app-on-machine
statement in display type ("A real Figma file / on a 2004 Sony PSP.",
"Real Vue components / on a 1989 Game Boy."), with the machine's silicon
as spec chips underneath, an honest also-running line, and a machine rail
to steer. Slides stack in one grid cell so the hero never changes height;
inactive slides are inert. The old one-liner survives as a small-caps
kicker above the title.

The machine matrix moves out of the hero into its own "What runs where,
today" section, replacing the proof strip whose six facts the rotating
title now carries. The hero and the matrix share one rotator (pause on
hover/focus/off-screen, park on manual pick, countdown sweep, no rotation
under reduced motion). Also sweeps the five em dashes out of the new copy
per the landing-page house style, with a test guard so they stay out.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The hero becomes the machine collage picked from the design round: eight
devices in CSS bezels, every screen a real capture playing at once,
cropped live out of the baked demo wall's known 4x4 tile grid. The Figma
screen is a committed still of the 8% zoomed-out spread, because the wall
loop passes through the 59% close-up whose cartoon figure is not to be
used. The collage sits on a fixed 1440x820 canvas that cover-scales to
fill the first viewport, so narrow screens crop the sides instead of
stacking devices. H1 stays "Rich interactive JavaScript where no browser
fits."; the sub now says what PocketJS is in one sentence. CTAs are Get
started and Star on GitHub.

The pillars section moves below the target selector and becomes four
capture-backed cards with one-line claims, each opening a new /for/ page
(interfaces, games, worlds, agents). The pages share the homepage chrome
via site/for/shell.html + fragments, rendered by build.ts, and carry the
longer story with receipts and links. The ".pocket format" and "Built for
every kind of impossible" sections are removed entirely, and the footer
Explore column now lists the four pages.

site-stage tests re-pin the collage (eight devices, the 8% Figma still,
retired sections stay retired) and extend the em-dash guard across the
/for/ surfaces.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@doodlewind doodlewind changed the title feat(site): rotate a machine matrix in the hero, retire the homepage 3D stage feat(site): machine-collage hero, use-case cards, and /for/ pages Aug 11, 2026
The hero collage already carries the apps-on-machines story, so the
matrix section between the hero and the target selector comes out whole:
markup, .lp-mx styles, and the rotator/matrix glue in home.js. The page
now walks hero, target selector, use-case cards, showcase, closing CTA.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@doodlewind
doodlewind marked this pull request as ready for review August 11, 2026 13:52
@doodlewind
doodlewind merged commit fbc819b into main Aug 11, 2026
@doodlewind
doodlewind deleted the fantastic-link branch August 11, 2026 13:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant