flybrain/docs/design/describe-tab.md
acamilo faec84b42e
Some checks are pending
ci / node 22 (test + typecheck) (push) Waiting to run
ci / rust stable (cargo test --workspace --release) (push) Waiting to run
ci / infra/tests/lint.sh (push) Waiting to run
ci / playwright apps/stage (allowed to fail) (push) Waiting to run
stage(describe): the public repo URL on the card
2026-09-22 02:08:31 +00:00

42 lines
2.5 KiB
Markdown

# DESCRIBE tab
The operator, 2026-09-17: fourth tab on the rail after SENSES / CONNECTOME / LADDER. One densely packed
card, no cycling ("keep it to a densely packed card"). Copy approved by the operator 2026-09-17 ("good.
style it send it"). The tab renders exactly this; the copy lives in
`apps/stage/src/games/describe.ts` as one entry, so a copy change is a one-file edit and a rebuild.
Silkscreen for the title, VT323 for the text at the body floor; the neuron and synapse counts
come from the dataset at runtime; nothing else is dynamic.
## Card (approved)
### A CONNECTOME MEETS A GAME BOY
This is a real fly's brain, 139,255 mapped neurons and 2.7 million synapses, running live. The
screen is its eye. Its motor neurons press the buttons. Each scene offers a few actions, walk to
a door, talk, attack; the fly picks one. When the game rewards it, a few thousand synapses shift,
and what worked gets likelier. !sugar sends it a small reward pulse, no buttons. FlyWire connectome. github.com/acamilo/flybrain
## The new-chatter switch (the operator, 2026-09-17)
The operator, same day, after the card was approved: "when new user joins chat, switch to it for a few
sec, cool down timer."
A chat line from a display name this page has not seen before takes the slot to DESCRIBE for
8 seconds, then hands it back to whatever was up, on the rail's existing focus-and-return — the
same tab-change motion a big moment uses, not a second kind of switch. For 120 seconds after a
switch, further new names do not trigger one; they still count as seen, so the switch means
"somebody new turned up recently" rather than being a queue of arrivals to work through.
Both numbers live in `apps/stage/src/lib/tabs.ts` as `NEW_CHATTER_HOLD_MS` and
`NEW_CHATTER_COOLDOWN_MS`, because that file owns the rail's cadence; tune them there.
What never triggers it (`apps/stage/src/lib/chatters.ts`):
- the bridge's own replies (`bot: true` lines from flybridgebot) — the bot is not a person arriving;
- any line older than the page's connect time. `header.chat` is a ring the feed re-sends every
snapshot and a reconnect hands the whole ring back, so history must not replay as arrivals. This
is also what keeps a recorded fixture inert: its lines carry the wall time of the recording;
- a name already seen, whether or not its first sighting actually switched the tab;
- a moment holding the slot, and the cooldown is not spent in that case.
The pinned slot (`?tab=`) disables it along with the rest of the cycle, so the mockup and the
screenshot baselines are unaffected.