perf: send incremental streaming updates via IPC instead of full messages array (#2988)
## Summary
- During AI streaming, the full messages array (potentially 500KB+ with
many messages) was serialized and sent through IPC on every text-delta
chunk, causing UI sluggishness
- Changed to send only the streaming message ID and updated content for
high-frequency streaming updates
- Full messages are still sent for initial loads and state changes
(compaction, lazy edits) to maintain correctness
- Updated all consumers (`useStreamChat`, `usePlanImplementation`,
`useResolveMergeConflictsWithAI`) to handle both full and incremental
chunk modes
## Test plan
- [x] TypeScript compilation passes
- [x] All 897 unit tests pass (39 files)
- [x] E2E tests pass (234 passed — 20 pre-existing failures unrelated to
this change, confirmed by running on clean main)
- [x] Specifically tested: `new_chat`, `chat_input`,
`local_agent_advanced`, `local_agent_code_search`, `local_agent_grep`,
`local_agent_search_replace`, `local_agent_list_files`,
`local_agent_summarize`, `local_agent_connection_retry`,
`local_agent_read_logs`, `local_agent_consent`,
`local_agent_persistent_todos`, `local_agent_todo_followup`,
`concurrent_chat`, `chat_history`
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- devin-review-badge-begin -->
---
<a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2988"
target="_blank">
<picture>
<source media="(prefers-color-scheme: dark)"
srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1">
<img
src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1"
alt="Open with Devin">
</picture>
</a>
<!-- devin-review-badge-end -->
---------
Co-authored-by:
Will Chen <willchen90@gmail.com>
Co-authored-by:
Claude Opus 4.6 <noreply@anthropic.com>
正在显示
请
注册
或者
登录
后发表评论