perf: optimize desktop ui rendering and server streaming architecture
2 months ago
Authored
Max Weinbach- Optimize SocketSendQueue queue eviction to O(1) property checks without JSON parsing under backpressure
- Micro-batch streaming token deltas in 16ms windows to reduce WebSocket frame overhead
- Defer tool input schema validation until stream completion
- Add WeakMap caching for desktop activity group render items to eliminate redundant re-renders
- Isolate live timer clock updates into dedicated LiveTimerLabel component
- Memoize Streamdown markdown props and citation map calculations
- Add stress test coverage for queue backpressure and UI component isolation
Parent00a13e2
46 files changed
- apps/desktop/src/App.tsx+2−2
- apps/desktop/src/ui/ChatView.tsx+6−0
- apps/desktop/src/ui/chat/ActivityGroupCard.tsx+63−33
- apps/desktop/src/ui/chat/ChatFeed.tsx+4−2
- apps/desktop/src/ui/chat/activityGroups.ts+13−1
- apps/desktop/src/ui/markdown/DesktopMarkdown.tsx+71−42
- apps/desktop/test/app-jsonrpc-disposal.test.tsx+20−6
- apps/desktop/test/jsdomHarness.ts+47−6
apps/desktop/test/live-timer-label-isolation.test.tsx+114−0apps/desktop/test/memory-page.test.ts+1−1apps/desktop/test/model-stream-mapper.test.ts+3−1apps/desktop/test/providers-page.test.ts+1−1apps/desktop/test/streamdown-props-stability.test.tsx+113−0src/cli/repl/stateStore.ts+2−6src/server/canvasDocumentPersistence.ts+10−14src/server/projection/conversationProjectionAssistant.ts+11−3src/server/projection/conversationProjectionReasoning.ts+16−7src/server/projection/conversationProjectionSessionEvents.ts+9−2src/server/projection/conversationProjectionStreamUpdates.ts+66−5src/server/projection/conversationProjectionTools.ts+5−1src/server/projection/conversationProjectionTypes.ts+2−0src/server/runtime/SocketSendQueue.ts+19−16src/server/session/turnExecution/runTurnInvocation.ts+15−12src/server/transcriptInbox.ts+37−15src/shared/modelStream.ts+5−1src/shared/modelStreamReplay.ts+1−1src/skillImprovement/JobStore.ts+17−7test/canvasDocumentPersistence.test.ts+2−1test/chaos/sendQueue.stress.test.ts+187−0test/default-global-skills.test.ts+15−15test/jsonrpc/flow.journal.test.ts+10−3test/modelStreamReplay.test.ts+0−1test/platform/fs.test.ts+5−4test/repl.multiline.test.ts+4−4test/repl.port.test.ts+5−2test/research/research.harness.ts+5−0test/research/research.service.core.test.ts+19−18test/research/research.service.followup.test.ts+9−8test/research/research.service.resume.test.ts+6−5test/research/research.service.sources.test.ts+6−5test/server.jsonrpc.test.ts+3−0test/session.stream-pipeline.test.ts+3−2test/skillImprovement.improver.test.ts+5−2test/skillImprovement.jobStore.test.ts+1−1test/task-mode.persistence.test.ts+25−13test/webDesktopRoutes.test.ts+23−8