Skip to content

fix(demo): el chat de /demo no pierde la respuesta por el reloj del navegador - #77

Draft
santmun wants to merge 1 commit into
mainfrom
cursor/demo-poll-cursor-3a7c
Draft

santmun wants to merge 1 commit into
mainfrom
cursor/demo-poll-cursor-3a7c

Conversation

@santmun

@santmun santmun commented Oct 4, 2026 •

Copy link
Copy Markdown
Owner

Qué cambia

El chat de /demo pide los mensajes con un cursor que sale del servidor (GET /demo/poll?after=0 al cargar) y sigue sondeando 6 segundos después de la última burbuja. Apagado salvo DEMO_MODE=on.

Por qué

Ticket #F126BE. El visitante escribía, el bot contestaba y la respuesta quedaba en Conversaciones, pero el chat se veía muerto.

Verificado en el cliente real del motor (instalaciones 1.0.73/1.0.76), no solo en el reporte:

  1. Reloj del navegador. send() hacía if(!since) since=Date.now()-1000 y ese número iba como ?after= a /demo/poll, que filtra por created_at del servidor. Con el reloj del visitante adelantado, pedía mensajes de un momento que en el servidor todavía no llega y el poll volvía vacío.
  2. Burbujas siguientes. poll() hacía clearInterval en cuanto llegaba el primer mensaje. Si la respuesta venía partida (max_chunks), las de después no se pintaban.

Este repo (starter) no traía src/demo.ts. El arreglo entra el chat con esas dos fallas ya corregidas: el cursor solo avanza con el at que devuelve el servidor, la sincronización es una sola y termina antes del POST (para no marcar la respuesta nueva como vista sin pintarla), y el sondeo no se corta en la primera burbuja.

Cómo lo probaste

  • pnpm test — test/demo.test.ts y test/channels/web.test.ts (16 tests). El del cliente adelanta el reloj 3 minutos, confirma que ningún after sale de ese reloj, pinta la primera burbuja y también la que llega después. El poll filtra por created_at y no devuelve mensajes del visitante.
  • pnpm typecheck limpio
  • En el navegador, con el servidor 3 minutos atrás del reloj del visitante: se escribió un mensaje y aparecieron las dos burbujas.

Chat de demo con las dos burbujas

Checklist

  • No toqué la carpeta member/ (config de cada quien)
  • El PR es de un solo tema (enfocado y chico)
  • Si tu agente (Claude) hizo el PR, revisaste el diff tú mismo antes de abrirlo
  • No hay secrets ni API keys en el código

To show artifacts inline, enable in settings.

Open in Web Open in Cursor 

…burbujas

El poll pedía mensajes con Date.now() del navegador, así que un reloj
adelantado dejaba la respuesta guardada en el panel pero invisible en el
chat. Además el sondeo se apagaba en la primera burbuja y perdía el resto
de un max_chunks. Ahora el cursor sale de /demo/poll?after=0 y el sondeo
sigue 6s después de la última burbuja.

Co-authored-by: santmun <santmun@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Oct 4, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants