What a turn looks and feels like from the seat — the composer you type, speak or show into, the bubbles a reply arrives in, the clock between them, and everything the room does with a picture now that it can see one.
Written 2026-08-23, against live v985. The turn below is what a person actually does: open the composer, say something (or show something), and read what comes back.
Four slots, in that order (the owner's composer C). The + was a die until v961; it is the attach key every phone already teaches, and the sheet behind it holds Photo · Camera · Kits · Toys — the toys being the die's old eight instruments, moved one level down. The sheet is a real sheet: a grip you can pull, drag or flick it down to close, and stepping between its levels is a move rather than a repaint. On a wide screen it is a popover anchored above the +, re-placed after every level change.
Gap 5 waited two years for a vision API and shipped the week DeepSeek published one
(deepseek-v4-flash-vision-exp, 2026-08-21). What a person sees:
| part | what it does |
|---|---|
| Sending | + → Photo opens the phone's own picker in one tap; Camera runs the camera in-app on Android (rear lens, shutter, flip). The bytes are EXIF-stripped to WEBP at two tiers, 1600 and 480. |
| The bubble | iMessage's grammar — the photo in its own bubble, the caption an ordinary text bubble beneath it, the sender's face and name once above both. Two width rules that never meet: a text bubble is its longest line capped at 88% of the stream; the photo bubble is the picture — ≤300px on a phone, 360 wide, never upscaled. |
| The viewer | Tap it and it grows out of the thumb, fits the screen, and every gesture is one transform: pinch to 4×, double-tap between 1× and 2.5× at the tap, drag down at 1× to dismiss — the picture follows your finger and the black thins as it goes. Wide: the wheel zooms at the cursor. |
| What the panel reads | A text shadow written in the background as the photo lands, glued onto the transcript line — so search, Seen, the floor producer, translate and a model switch all keep working on a text layer. When you ask something pointed about a photo still on the table, one look-again call goes back to the picture for that answer. |
⚠ The build is the sidecar plus a look-again, not native blocks alone: a 14-question test over two photos scored native 11 against sidecar 10 — a tie that fails differently, so the room keeps the portable text layer and buys the eyes only when a question needs them.
WeChat's rule: a centred, muted line above a message only when it lands 5+ minutes after
the one before it (the first in view always). The wording widens with age — 14:05 ·
Yesterday 14:05 · Wednesday 14:05 · 3 Aug 14:05 ·
3 Aug 2025 14:05. It is derived, never stored, and not selectable. Since v985
the clock is 24-hour everywhere, English included (midnight reads 00:05), and the stamp
wears the chat row's own face rather than the capsules' mono.
| part | what it does | where the detail lives |
|---|---|---|
| Auto-title | the room names itself from the first exchange; a human-only chat stores no title | Current functions |
| Bubbles | markdown · KaTeX · highlight · sanitize; artifacts lift onto the scratch paper | Rendering & speed · Scratch paper |
| System bubble | the world narrating itself — joins, tools, rulings — in grey, never in a voice | The world-event room |
| Reactions · feedback | emoji on a bubble; the per-turn thumb that feeds the floor producer | Feedback widget |
| Cost | Chat info ▸ Cost, by function, from the ledger | The chat's cost panel |
| Language | the panel follows the room; translate on divergence | Room language |
Every part above is live and named in the Style Guide; the photo bubble, the photo viewer and the + sheet each have their own card there, and the text sheet for copying a bubble's words is Text selection on touch.
The decode chain that keeps an off-spec reply from breaking a bubble is the harness. The photo path carries its own measured check — the 14-question native-vs-sidecar comparison above — and the smoketest pins the ledger's new leaves and its 19 call sites. Still unscored: render fidelity over a known artifact set, the title the room picks, and where the thumb lands.