From 85d5fb548093bc26335b9f7f3bb48bdf2cc1b258 Mon Sep 17 00:00:00 2001 From: Maggie Appleton <5599295+MaggieAppleton@users.noreply.github.com> Date: Sun, 11 Oct 2026 07:18:02 +0100 Subject: [PATCH 1/6] Fold the phone chat composer into one pill On a coarse-pointer phone the composer rested at about 125px plus a status tab, leaving roughly 80px of transcript above the keyboard. It now rests as one 44px pill: reference button, auto-growing draft and a 36px send circle, with the mode switch icon-only and connection state as a slim row inside it. "Chopin unavailable" is a quiet line above the pill. Mention, reference and command pickers become a full-width list resting on the composer with 44px rows. Chat prose uses the document's body size on phones and code wraps. Desktop layout is unchanged. Why: apps/web/src/chat/composer.css | the phone connection status stays mounted out of flow so its live region still hears its first word Co-Authored-By: Claude Opus 5.5 --- apps/web/src/chat/chat.tsx | 45 ++++--- apps/web/src/chat/composer.css | 155 +++++++++++++++++++++++ apps/web/src/chat/markdown.css | 13 ++ apps/web/src/chat/mention-picker.tsx | 4 - apps/web/src/chat/reference-picker.tsx | 1 - e2e/chat-composer.e2e.ts | 5 +- e2e/chat-phone.e2e.ts | 164 +++++++++++++++++++++++++ packages/visuals/theme.css | 4 + 8 files changed, 365 insertions(+), 26 deletions(-) create mode 100644 e2e/chat-phone.e2e.ts diff --git a/apps/web/src/chat/chat.tsx b/apps/web/src/chat/chat.tsx index 8b9d0fbb3..b2e13b24d 100644 --- a/apps/web/src/chat/chat.tsx +++ b/apps/web/src/chat/chat.tsx @@ -683,7 +683,11 @@ export function Chat( )} -
+
{referencesEnabled && (

Type # to reference a document. @@ -981,27 +985,30 @@ export function Chat( )}

- {/* Always mounted, so the live region hears its first word. */} - - {connectionLabel && ( - + {/* Always mounted, so the live region hears its first word. */} + + {connectionLabel && ( + + {connectionLabel} + + )} + + {/* Where the document header is out of view; see composer.css. */} + {connectionNotice === "offline" && wire && ( + )} - {/* Where the document header is out of view; see composer.css. */} - {connectionNotice === "offline" && wire && ( - - )} {agent && (busy || counts.active > 0) && (