feat: the homepage leads the visitor through as one story

The page was a row of sections to scroll past, and a film in one of them did
not change that. It now follows the questions a visitor has, in the order
they come up: who is this, can he do what I need, what does it look like,
what else, how does it go, has he done it, what is open, how do I start.

Each chapter ends by asking the next question as a large link that leads on,
and the next chapter answers it. A rail at the edge shows every chapter as a
station with a dot travelling along it (on phones: a pill with the current
chapter and one tap to the next), and the header names the current question.

Where the visitor is, is pure logic in src/domain/chapters.ts. The scroll
film section and the bridge sentences are removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-05 10:24:52 +02:00
co-authored by Claude Opus 5.5
parent e6f00cbbb6
commit 90120b60db
19 changed files with 518 additions and 640 deletions
+6 -6
View File
@@ -63,12 +63,12 @@ App lives in `apps/web`. Social media videos live in `apps/video` (Remotion, sta
along the edge of an element, digits drifting off it; glow only on dark surfaces, on light ones just a
few blue digits), `BitSeam` (lit top edge of a dark section), `BitGlow` (light following the pointer on
`data-glow` surfaces). Reuse them instead of inventing new effects.
- Scroll films live in `apps/web/src/components/film/`: `ScrollFilm` is a dark stage that stays in place
while the visitor scrolls; scrolling is the timeline (camera, statements), a second clock keeps things
alive when the visitor stops. They are the website form of the films in `apps/video` (same pattern: close
on something abstract, pull back, resolve) and use their approved statements. `OrderFilm` opens the
automation chapter. Coordinates rendered on the first frame must be rounded (see `motion.ts`), or server
and browser disagree in the last digit.
- The homepage is a guided story (`apps/web/src/components/story/`): it follows the questions a visitor has
(`story.chapters` in the content files). Each chapter ends with `NextChapter`, the next question as a link
that leads on; `StoryGuide` is the rail with one station per chapter and a travelling dot (a pill on
phones), and the header names the current question. Sections become chapters through `data-chapter`
(`Block` prop `chapter`). Where the visitor is, is computed in `src/domain/chapters.ts`. A new section
on the homepage needs a chapter and a question, or it breaks the thread.
- `DecodeText` is for monospaced text only; in proportional type the changing glyph widths make text jump.
- Never put an in-view trigger on an element that clips itself away (clip-path): a fully clipped element
never counts as visible. Observe an unclipped wrapper (see `BitWipe`).