Batch thinking deltas like text deltas while streaming
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bien especificado
- Estado de actividad
- Estancado
- Stack tecnológico
- react, typescript
- Área
- desktop, performance, testing
Línea de trabajo
Start in desktop/src/stores/chatStore.ts: inspect the pendingDeltaBySession buffer and flush points, then trace the thinking event handling at lines 1309–1328. Check MessageList.tsx around buildRenderModel to understand the render impact. Add coverage for batching and ordering, then run desktop tests and typecheck; done means thinking is batched, ordered before following text, and the render improvement is measured. An open pull request already targets this issue.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Part of #153.
Problem
Text and tool-input deltas are buffered for 50ms before they update the store, but thinking deltas are not. Each thinking event updates the store at once (desktop/src/stores/chatStore.ts:1309-1328). That creates a new messages array, which:
- makes
MessageListrebuild its whole render model (buildRenderModel,MessageList.tsx:1513); - re-renders every tool group through a new
toolResultMap.
With fast thinking output this happens dozens of times per second.
What to do
Buffer thinking deltas the same way as text deltas: the 50ms buffer around pendingDeltaBySession (chatStore.ts:272-301, flushed at :1265), or one rAF.
Two ordering rules:
- Flush pending thinking before the first text delta, a tool call, or turn end, so the order of thinking and text stays correct.
- Flush on session switch and disconnect, the same way text is flushed today (
chatStore.ts:768,:927).
Done when
- A test shows that several thinking deltas inside one window produce one store update, and that thinking still appears before the text that follows it.
- The PR includes a before/after React Profiler capture, or a render count, for a reply with a long thinking block.
- Desktop tests and typecheck pass.
- Lenguaje dominante
- TypeScript
- Estrellas
- 490
- Forks
- 47
- Merge medio
- 10 h 40 min
- PR fusionados (30 d)
- 83
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
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 GoDiao/dreamcoder
-
[good first issue] UX polish — friendlier copy for error toasts and empty statesPosiblemente ocupada @iamcipherdev la tomó hace 15 días. Abiertoarea:i18n area:ux difficulty:1 good first issue mentor-available
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
GoDiao/dreamcoder#9 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Add more provider presets (Groq / OpenRouter / SiliconFlow / etc.)Quizá libre de nuevo @01iamysf la tomó hace 22 días y no hay ningún pull request abierto. Abiertoarea:desktop area:provider difficulty:1 good first issue mentor-available
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
GoDiao/dreamcoder#6 · 6 comentarios ·
Los mantenedores suelen responder en 1 día
-
area:desktop area:ux difficulty:2 enhancement help wanted
Dificultad 4/5 3-5 días Aptitud para principiantes 65/100
GoDiao/dreamcoder#218 ·
Los mantenedores suelen responder en 1 día
-
Deleted session can linger in the sidebar and later deletes fail silentlyPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoarea:desktop bug difficulty:2 help wanted
Dificultad 4/5 3-5 días Aptitud para principiantes 65/100
GoDiao/dreamcoder#217 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
GoDiao/dreamcoder#216 ·
Los mantenedores suelen responder en 1 día
Todos los issues de GoDiao/dreamcoder
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Northeastern-Electric-Racing/FinishLine#4660 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
excaliburjs/Excalibur#3895 ·
Los mantenedores suelen responder en 3 días
-
infer_audio_type only recognises one MPEG Layer III frame header, so most MP3 files are rejectedPosiblemente ocupada @Steve-20-ai la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Earn report crashes with "RangeError: Invalid time value" when a report row has an unparsable timestampPosiblemente ocupada @Gurkaran18 la tomó hoy. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
joinmarket-webui/jam#1588 ·
Los mantenedores suelen responder en 3 días
-
BeOS .json missingAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
mihaip/infinite-mac#475 ·