Skip to content

v1.150.2

Choose a tag to compare

@deivid11 deivid11 released this 11 Jul 05:16

What's New

Fixed

  • Concurrent-agent stream corruption - Claude, Codex, Grok, and OpenCode backends now key per-turn parser state (stream uuids, accumulated text, working dir) by agentId. One backend instance serves every agent of a provider, so two agents streaming at once no longer reset each other's stream state (no dropped deltas, stuck streaming rows, or duplicate final bubbles).
  • Re-fading rows on scroll - the complete-block fade is gated to once per row per page session, so scrolling a virtualized output list or an agent-switch remount keeps settled rows static.

Changed

  • Live markdown streaming performance - streamed markdown splits into a stable head (completed paragraphs, parsed once and memoized) and a live tail (only the current paragraph re-parses per chunk), replacing the O(n^2) full-buffer re-parse that was the top CPU sink while agents type.
  • Stream settle animation - the complete-block fade uses a pure CSS animation with no forced reflow, so many rows mounting on agent switch or scroll no longer layout-thrash.

Technical Details

  • Interface change: CLIBackend.parseEvent(rawEvent, agentId?) and breakOpenStreams(agentId?) now thread agentId so shared backend singletons keep per-agent state.
  • Added regression tests in src/packages/server/claude/backend.test.ts and src/packages/server/grok/json-event-parser.test.ts, plus StreamFadeText splitStableMarkdown unit tests.