Widget: a "New reply" button when the visitor has scrolled up
Los mantenedores suelen responder en 1 día
@srujankaleru2007 ya está trabajando en esto.
Desde el 28/10/2026.
- #447 de @srujankaleru2007 — abierto
Evaluación
Este issue todavía no se ha evaluado.
Descripción
A streaming reply no longer pulls the chat log down while the visitor reads an earlier message (#402): the log only follows new text when it's within 48px of the bottom. A visitor who scrolled up doesn't see that a reply is arriving below, though. This adds a small "New reply" pill, from the widget design, that shows in that case and takes them down.
What it should do
- When text arrives for a reply, or a new message is added, while the log is scrolled up (not
nearBottom()), show a pill at the bottom of the log: "New reply ↓". - Clicking it scrolls to the bottom (smoothly, unless
prefers-reduced-motion) and hides it. Scrolling to the bottom by hand hides it too. - It's a real
<button>with a visible focus ring (--cc-focus-ring). It isn't announced by itself; the live region from #410 already reads the finished reply. - The text is a new locale string,
newReply, with an English default. Other languages fall back to English until #55 adds it.
Where
packages/widget/src/dom/messages.ts:nearBottom()(line 170) is the check, and the stream render andaddMessageare where it's used.scrollToBottom()is at line 285.- Styles in
packages/widget/src/styles/widget.css. Use the theme tokens so it works in light and dark, and logical properties for RTL. - The panel has about 900 B left of its 17 kB budget (
pnpm size), so keep it small.
Acceptance criteria
- Unit tests: shown when text arrives while scrolled up, hidden when scrolled down by hand, and click scrolls and hides (see the scroll test in
packages/widget/tests/dom/stream.test.ts, which fakesscrollHeightandclientHeight) - Not shown while the log is at the bottom
- The existing e2e test
new text doesn't pull the log down(e2e/tests/stream-render.spec.ts) still passes, and a line there checks that the pill is visible - A changeset for
@chatcops/widget(minor) -
pnpm test:coverage,pnpm lintandpnpm sizepass
- Lenguaje dominante
- TypeScript
- Estrellas
- 13
- Forks
- 7
- Merge medio
- 3 h 39 min
- PR fusionados (30 d)
- 275
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de codercops/chatcops
-
Widget: fetch signed-in visitor tokens when a session is requestedPosiblemente ocupada @piyusshhjangid la tomó hoy. Abiertoenhancement
Dificultad 3/5 1-2 días Aptitud para principiantes 63/100
codercops/chatcops#461 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Widget: support CSP nonces for injected stylesPosiblemente ocupada @piyusshhjangid la tomó hoy. Abiertoenhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
codercops/chatcops#460 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Server: validate `rateLimit.windowMs` before creating the limiterPosiblemente ocupada @ashutoshpalhare la tomó hoy. Abierto
codercops/chatcops#452 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
chatcops test: --url to test a deployed serverPosiblemente ocupada @srujankaleru2007 la tomó hace 1 día. Abiertoenhancement hacktoberfest testing
codercops/chatcops#419 · 3 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
chatcops test: GitHub Actions reporterPosiblemente ocupada @mohithreddydonala37 la tomó hace 1 día. Abiertoenhancement hacktoberfest testing
codercops/chatcops#417 · 3 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de codercops/chatcops
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
area:desktop area:ui bug platform:macos
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
anthropics/claude-code#106183 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
core: OpenRouter BYOK sessions record cost = 0 since v2.2.0 (ignores cost_details.upstream_inference_cost)Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoreproduced
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
anomalyco/opencode#60558 · 1 comentario ·
Los mantenedores suelen responder en 1 día