Skip to content

Redesign the 404 page: lost terminals drifting across the relay - #117

Merged
willwashburn merged 1 commit into
mainfrom
claude/creative-404-page-4ab021
Sep 23, 2026
Merged

willwashburn merged 1 commit into
mainfrom
claude/creative-404-page-4ab021

Conversation

@barryollama

@barryollama barryollama commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

What

A new 404 page that matches the homepage branding. The terminals from the homepage hero marquee have come loose and are lost.

  • Lost terminals. Ten real HeroTerminalCards (Claude Code, Codex, Grok, OpenCode, each with its live animated body) travel on diagonal lanes at different angles. They move across the page, stop, back up in confusion, then keep going. Each card wobbles and has a "lost" tag (↺ rerouting · attempt 14, → DM to 404: hello?). One is reading the map upside down.
  • Depth. Cards sit in far, mid and near layers with different scale, opacity and blur. The layers shift with the pointer at different rates (parallax).
  • Claude Code sparks. Claude marks spin off every card. The 0 in 404 is a large spinning Claude mark inside a dashed orbit. The 4s glitch now and then in the brand blue and Claude orange.
  • Delivery log. A small terminal runs relay deliver <the actual missing path>, then fails with 404 · nobody is subscribed to this route.
  • Click anywhere sends out a burst of spinning Claude marks. Links and the log terminal don't trigger it.
  • "Back to home" uses the site's primary button (btn btn-primary).
  • Reduced motion: cards stay still where their lanes cross the page. No sparks, glitch or bursts.
  • Mobile: smaller cards, fewer lanes, and a softer vignette. Buttons stack.

Refactor

HeroTerminalMarquee.tsx now exports HeroTerminalCard (one card pulled out of the marquee row), AGENT_META and the row data. The marquee itself renders the same as before. The old LostMessages widget is removed.

Testing

  • tsc --noEmit passes.
  • Checked in the browser at desktop and phone widths. The real missing path renders in the log, and click bursts and the glitch work.
  • vitest: 278 pass. The 2 failures are in lib/test/flow-push-guard.test.ts, which this PR doesn't touch.

🤖 Generated with Claude Code


Note

Low Risk
UI-only changes to the 404 page and a shared hero component refactor; no API, auth, or data-path impact.

Overview
Redesigns the 404 experience around homepage “lost relay” branding: drops the two-column layout and interactive LostMessages misrouting widget in favor of a centered hero with a glitchy 404 (Claude mark as the zero), new copy/metadata (Lost in the relay), and home/docs CTAs wired to global button styles.

Adds LostField — a decorative client backdrop that reuses exported homepage HeroTerminalCards on diagonal lanes (wobble, parallax, sparks, click bursts) with prefers-reduced-motion and responsive lane culling.

Adds RouteReadout — a terminal-style log that runs relay deliver against the actual missing pathname and reports the 404 failure.

Refactors HeroTerminalMarquee by extracting and exporting HeroTerminalCard, AGENT_META, and row card data so the marquee behavior stays the same while the 404 can scatter the same terminals.

Replaces not-found.module.css with styles for lanes, vignette, readout, and animations (old network-stage styles removed).

Reviewed by Cursor Bugbot for commit dd06692. Bugbot is set up for automated code reviews on this repo. Configure here.

Reuse the homepage marquee's agent terminals, cut loose onto diagonal
lanes that cross the page at different angles and depths. Each card
hesitates, backs up and carries on, wobbles, carries a "lost" status tag,
and sheds spinning Claude Code marks. The 0 in 404 is a spinning Claude
mark, a delivery-log terminal shows the missing path, and clicking the
page sends out a burst of marks. Pointer parallax by depth; reduced
motion gets a static scatter.

HeroTerminalMarquee now exports HeroTerminalCard and its card data so
the 404 can render the same terminals.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 42a6e5a6-df9f-4979-9672-422e8b99fbcb


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@willwashburn
willwashburn merged commit b9efb9c into main Sep 23, 2026
5 checks passed
@willwashburn
willwashburn deleted the claude/creative-404-page-4ab021 branch September 23, 2026 07:37
@github-actions

Copy link
Copy Markdown
Contributor

Preview deployed!

Environment URL
Web https://d36e22d8-agentrelay-web.agent-workforce.workers.dev

This is a Cloudflare Workers preview version of this PR's build.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want higher recall? High effort reviews run extra passes and find more bugs. A team admin can switch effort levels in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit dd06692. Configure here.

.page::before {
position: fixed;
inset: 0;
z-index: -1;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

404 page cannot scroll on small screens

Medium Severity

.page keeps overflow: hidden and the previous mobile overflow: auto override is gone. With min-height: 100dvh and a 1fr content row, many browsers treat that min-height as a definite size, so the large 404 block, readout, and stacked buttons clip instead of growing the page. On short or landscape phones the actions and footer can sit off-screen with no way to reach them. Decorative cards already clip inside the fixed .field, so the page itself does not need to hide overflow.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit dd06692. Configure here.

useEffect(() => {
window.addEventListener('pointerdown', burst);
return () => window.removeEventListener('pointerdown', burst);
}, [burst]);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Touch scrolling fires click bursts

Medium Severity

The burst handler listens for pointerdown on window and never ignores touch. pointerdown fires at the start of a finger contact, including when the user is about to scroll, so each scroll attempt on a phone spawns twelve animated Claude marks. Parallax already bails out for pointerType === 'touch', but bursts do not, so mobile browsing of the 404 page is noisy and extra work for the GPU.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit dd06692. Configure here.

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.

3 participants