feat: a red thread through the homepage, in words and as a line

The rail and the "next, you are wondering" links are gone (owner: flat, and
the question stood twice in a row). The page now reads from top to bottom:

Every chapter opens with one sentence, and the sentences follow each other
as the way of a project: you need someone who builds it, first we find out
what you need, sometimes it is less work by hand, sometimes a meeting, then
it always runs the same way, in the end something runs, a few questions
remain, and it starts with an email.

One line runs down the whole page and draws itself as the visitor scrolls.
Under each sentence it crosses the page, stands a figure on the line
(diamond, hexagon, screen, circle, square, triangle) and continues down the
other side; a glowing dot travels at its head and comes to rest in front of
the last sentence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-05 10:35:55 +02:00
co-authored by Claude Opus 5.5
parent 90120b60db
commit 3e0c9a1605
20 changed files with 539 additions and 508 deletions
+8 -6
View File
@@ -63,12 +63,14 @@ 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.
- 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.
- The homepage is one story with a visible thread (`apps/web/src/components/story/`). Every chapter opens
with one sentence from `story` in the content files; read one after the other they tell the way of a
project from the idea to the first email. `StoryThread` is one line down the whole page that draws itself
as the visitor scrolls: under each sentence it crosses the page, stands a figure on the line and continues
on the other side, with a glowing dot at its head. `Block` prop `chapter` gives a section its sentence and
figure; how much of the line is drawn is decided in `src/domain/thread.ts`. A new section on the homepage
needs a sentence that continues the story, or it breaks the thread. No rails, no "next question" links
(owner rejected both).
- `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`).