From 8479e05a2098fea2db7b23dc086f982721073c1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Sun, 10 May 2026 18:04:39 +0200 Subject: [PATCH] a11y(coach): announce streaming assistant text to screen readers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The streaming assistant bubble updated in place as the SSE tokens landed but had no aria-live region — sighted users saw live text while screen-reader users heard silence. Wrap the in-flight bubble in role=log + aria-live=polite + aria-relevant=additions text so the assistant prose announces progressively (matches the daily-briefing pattern that already uses aria-live for its loading state). Fixes Design-HIGH-3. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../insights/coach-panel/message-thread.tsx | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/components/insights/coach-panel/message-thread.tsx b/src/components/insights/coach-panel/message-thread.tsx index 3a3805573..6605da3cf 100644 --- a/src/components/insights/coach-panel/message-thread.tsx +++ b/src/components/insights/coach-panel/message-thread.tsx @@ -115,14 +115,20 @@ export function MessageThread({ /> ))} {streamingActive && streaming && ( - + // role=log + aria-live=polite so screen-reader users hear the + // assistant prose announce as tokens land. aria-relevant=text + // limits announcements to the streamed content; additions + // covers the bubble-mount edge case. +
+ +
)} );