fix(ui): bump @assistant-ui/react to 0.14.24 to fix thread render crash #175
No reviewers
Labels
No labels
backend
bug
chore
duplication
effort:complex
effort:medium
effort:trivial
enhancement
frontend
fullstack
priority:high
ready-for-agent
refactor
security
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
dries/ocman!175
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/assistant-ui-thread-index-crash"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Loading some sessions (e.g.
ses_0f4b12f21ffe3gZ97LqF9aNtyw) crashed the thread with Safari's generic "The string did not match the expected pattern". The real error, logged via the client error forwarder, was:Thrown from
@assistant-ui/store'stapClientLookupduring render ofToolGroup → MessagePrimitive.Parts → ThreadPrimitive.Messages, caught by thesession:threadErrorBoundary.Root cause
assistant-ui renders messages/parts by numeric index.
tapClientLookupthrows when a render requests an index the just-shrunk keys array no longer has — a reconciliation race when the message/part list shrinks between renders (e.g. an SSEreconcilereplacing a longer in-memory tree). The data itself is valid; the failure is structural in the library. The existing reload-basedthreadBoundaryRecoverylooped because the same data re-triggered the throw.Fix
Bump
@assistant-ui/react0.14.8→0.14.24(16 patches behind). 0.14.24 reworks the grouped-parts renderer (MessageGroupedParts/buildGroupTree) which no longer throws on this race.Verification
tsc -bcleanvitest1322/1322eslintcleanpnpm build+go buildOKCoverage ratchet: ✅ pass
Tolerance: -0.1%. Baseline stored on
gh-pages.