Skip to content

Public website mockup — scroll-driven narrative at /welcome - #241

Draft
jess-cat wants to merge 2 commits into
mainfrom
managed-website
Draft

Public website mockup — scroll-driven narrative at /welcome#241
jess-cat wants to merge 2 commits into
mainfrom
managed-website

Conversation

@jess-cat

Copy link
Copy Markdown
Collaborator

Draft — for review only, please don't merge.

A mockup of the public GSV website, viewable at /welcome. Ten scroll-snapped beats of the agent talking to you, resolving into a landing page.

Walking it

Run the web app and open /welcome — no gateway needed, the route returns before AppProviders so there's no session, socket, or query client.

npm run dev --workspace web -- --no-open

The sequence: hi alone on screen → a camera/mic prompt that refuses itself → the agent talks about what it can do (photos, Tau, finding things, doing things) → "Are you ready for the future?" → the landing page. A timeline rail appears on the right after the first screen, and a skip → control from the third beat on.

What it reuses

Rather than inventing a visual language, this borrows the app's:

  • Message surface — the chat dock's flat #070612 field under the shell's radial wash, with messages built from the same .gsv-sm.gsv-sm-body.gsv-sm-text construction (no bubble, no avatar), only larger.
  • Terminal texture — the scanline + vignette pair from AsciiGalaxyScan.css, fixed to the viewport so content moves behind one continuous display.
  • Timeline rail — ported from the desktop app's render_timeline (host/apps/desktop/src/app/view.rs on managed-gsv): 4×8px pill markers in 20px slots, accent when selected, 0.68 opacity otherwise. Moved to the right per the brief; the desktop app anchors it left.
  • Skip control — the .gsv-guide-launch corner treatment from SetupScreen.css, which is the only persistent floating-button precedent in the codebase.
  • GalaxyAsciiGalaxyScan at a reduced grid so it doesn't compete with scrolling.

Type scale is the only deliberate departure from app sizes, scoped to .gsv-site so nothing global moves.

What is fake

  • The camera/microphone prompt is a prop. Nothing calls getUserMedia; the refusal is scripted.
  • The sign-up form is a visual mock. Nothing is sent or stored.
  • The demo video is hotlinked from gsv.space rather than committed (~14 MB).
  • Tau's photograph doesn't exist in the repo. The window falls back to a labelled placeholder; drop a file at web/public/img/tau.jpg and it appears, no code change.

Notes for review

  • Landing copy is lifted from the live gsv.space so the mock stays consistent with what ships. Value-prop descriptions are held behind hover/focus.
  • Reduced motion is handled (typewriter off, galaxy renders its formed static frame, animations nulled) but I was unable to verify it directly — testing it means changing macOS system settings.
  • Scoped to web/; nothing outside App.tsx and the new features/website/ directory is touched.

tsc clean · 303/303 web tests pass · build clean.

A ten-beat narrative that opens inside the desktop app's message surface and
resolves into a landing page. The route branches in App.tsx before AppProviders,
so it mounts with no gateway, session, or query client — the same escape hatch
/design already uses.

Reuses the app's own construction rather than restating it: the chat dock's
message shape and field colour, the scanline/vignette pair from AsciiGalaxyScan,
the corner-launcher treatment from SetupScreen for the skip control, and the
desktop app's conversation timeline (4x8px pill markers, ported from
host/apps/desktop render_timeline) as the progress rail. Type scale is the only
deliberate departure from app sizes, scoped to .gsv-site.

The camera/microphone prompt is a prop that answers itself; nothing calls
getUserMedia. The sign-up form is a visual mock that sends nothing. Tau's
photograph is not in the repo yet, so the window falls back to a labelled
placeholder at /img/tau.jpg.
The window was landscape, which cropped an upright phone photo to a letterbox
and cut the subject. Portrait mode narrows the window and crops 4:5 instead, so
Tau keeps his head.

Also reserves room for the timeline rail on narrow viewports — the centred
column clears it on desktop but ran underneath it on a phone, putting the
markers on top of the copy.

Photo resized to 675x1200 (224K) from the 1152x2048 original; it displays around
350px wide and ships in the gateway asset bundle, so the full-size file is more
than the page needs.
@jess-cat

Copy link
Copy Markdown
Collaborator Author

Tau's photograph is in — the placeholder is gone.

The media window gained a portrait mode for it: the landscape frame was cropping an upright phone photo to a letterbox and cutting his head off, so upright content now narrows the window and crops 4:5 instead.

Resized to 675×1200 (224K) from the 1152×2048 original, since it displays around 350px wide and ships inside the gateway asset bundle.

Also fixed while checking it on a phone width: the timeline rail was sitting on top of the copy and the media window. The centred column clears it on desktop but not on narrow viewports, so the rail narrows and the content reserves room below 900px.

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