Staff chat — Messenger UX

Mockup board · 22/08/2026 · visual contract for the apram build

Spec: 2026-08-22-staff-chat-messenger-ux-design.md · code read at origin/main 0c9c487 (OTA 1.0.37)

Everything below is rendered with the app's own tokens and its own Klim faces, at the two widths that matter. The 375 frame is the design; the 320 frame is the worst-case check. Grey rails to the right of each pair name what is being demonstrated — they are board chrome, not app UI.

moss#1A4D2E ink#131614 ink-muted#4F554E card / cream#FFF9EE background / paper#F2EDE3 secondary / paper-2#E9E2D2 border / rulergba(19,22,20,.12) amber#B7791F amber-softrgba(183,121,31,.14) FOUNDERS GROTESK CONDENSED--font-disp · 400 / 600 / 700 Tiempos Text — bubble bodies--font-body · 400 + italic

01Transcript — runs, separators, glyphs, seen-by

One staff conversation in the Coaches channel (the name, never the slug). Viewer is Morgan; the others are Josh W and Sasha.

375 · iPhone standard
320 · worst case
overflow check…

02Channel list — living rows

Preview text derives from the message window the snapshot already fetches (body added to BADGE_COLS) — no new query.

375 · iPhone standard
320 · worst case
overflow check…

03Composer — pill + circular send

Three states in the order a member meets them. The composer is the transcript's sibling, never its child.

375 · iPhone standard
320 · worst case
overflow check…

Type — what is real and what is approximated

Where latitude was taken (the spec left these open)

Flagged while reading the code — for Morgan, not fixed here