Announce each reply once instead of every streamed chunk
I maintainer di solito rispondono entro 1 giorno
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
The message list is role="log" with aria-live="polite", and a reply's text is rebuilt on every streamed chunk. Some screen readers read those partial updates one by one, which is noisy, and others skip them.
What to do
- While a reply streams, set the log to
aria-live="off". - Add a visually hidden
aria-live="polite"region (there's acc-sr-onlyclass already). When a reply finishes, put its final text there once, then set the log back topolite. - Error and cut off replies should be announced too, with their error text.
- Messages the visitor sends don't need an announcement.
Where to look
packages/widget/src/dom/messages.ts(the constructor setsroleandaria-live;updateMessagesetsaria-busywhile streaming)packages/widget/src/widget.ts(handleSend: where streaming starts and ends)packages/widget/tests/dom/messages.test.ts
Acceptance criteria
- The log is
aria-live="off"while a reply streams andpoliteotherwise - The hidden region gets the full reply text once, when it finishes
- Failed replies announce their error message
- Unit tests for each
- A short note in the PR on what you checked with a screen reader, if you have one (not required)
- Changeset for
@chatcops/widget(patch) -
pnpm test:coverage,pnpm lintandpnpm sizepass
The chat panel (dist/chatcops.panel.js) has a 14 kB gzip budget and about 800 B of it is left, shared by several open issues. Keep the change small, and check pnpm size before you open the PR.
- Lingua principale
- TypeScript
- Stelle
- 13
- Fork
- 7
- Merge medio
- 3h 39m
- PR unite (30g)
- 275
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di codercops/chatcops
-
Widget: fetch signed-in visitor tokens when a session is requestedForse già presa @piyusshhjangid l’ha presa oggi. Apertaenhancement
Difficoltà 3/5 1-2 giorni Idoneità per principianti 63/100
codercops/chatcops#461 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Widget: support CSP nonces for injected stylesForse già presa @piyusshhjangid l’ha presa oggi. Apertaenhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
codercops/chatcops#460 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Server: validate `rateLimit.windowMs` before creating the limiterForse già presa @ashutoshpalhare l’ha presa oggi. Aperta
codercops/chatcops#452 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Widget: a "New reply" button when the visitor has scrolled upForse già presa @srujankaleru2007 l’ha presa 1 giorno fa. Apertaenhancement hacktoberfest widget
codercops/chatcops#420 · 3 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
chatcops test: --url to test a deployed serverForse già presa @srujankaleru2007 l’ha presa 1 giorno fa. Apertaenhancement hacktoberfest testing
codercops/chatcops#419 · 3 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di codercops/chatcops
Issue simili
-
area:desktop area:ui bug platform:macos
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
anthropics/claude-code#106183 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
feature:App-Tour feature:Chat ready Web
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
digitalfabrik/integreat-app#4523 · 2 reazioni ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Required Lexical field accepts two empty paragraphsForse già presa @lazerg l’ha presa oggi. ApertaBug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
payloadcms/payload#19222 ·
I maintainer di solito rispondono entro 1 giorno