Changelog

Release history

All releases published from the assistant-ui monorepo, grouped by date.

Aug 12, 2026

16 packages

@assistant-ui/cloud-ai-sdk@0.1.33patchGitHub →

Fixes

3
fixclear stale thread lists when the Cloud client changes
fixinclude archived Cloud threads when requested and preserve archive filters
fixsettle thread loading when automatic fetching becomes disabled
@assistant-ui/core@0.3.13patchGitHub →

Features

3
featgive the composer its draft back when a send never reached the backend. a runtime that rejects onNew with the new MessageNotSentError restores the text, quote, and attachments the composer cleared at dispatch time, as long as nothing has claimed the composer since. that guard and that outcome are the ones cancelRun already applies to a trailing user message, so whichever fires first keeps the composer, and of several drafts queued behind one turn only the most recent is still restorable. an edit composer closes at dispatch, so a rejected edit is not restored.
feataccept providerMetadata on image and file message parts, the channel text, reasoning and source parts already carry. A runtime adapter reads its own namespace off it, so a part can carry provider-specific data (an upload id, a document handle) without a field per provider.
featwire threads.reloadMainThread through the tap ExternalThread path via a new onRefetchThread callback, with the refetchThread capability derived from its presence

Fixes

11
fixprevent pending ExternalThread attachment additions from restoring cleared drafts
fixmake a cancelled run move its trailing user message instead of dropping it. the message now leaves the thread only when the composer actually accepts it, so cancelling while a draft is already being written keeps the message in the thread rather than deleting it and handing it back nowhere, and what comes back carries the attachments and quote instead of the text alone. a message carrying content the composer has no home for, such as an image or file part, is left in the thread untouched. adapters keep the existing setMessages guard: without it the runtime cannot see its own removal survive, so an adapter that removes the cancelled message itself owns handing it back.
fixreconcile cancelRun's deferred resync with store updates that land before it flushes, instead of stamping a pre-cancel snapshot over them
fixgate interactable state snapshots at dispatch instead of at enqueue. a message sent while a run is in flight waits in a queue lane but carried the snapshot taken when the user sent it, so a run that landed its own update_{name} in the meantime was folded over by a stale user-edit version: a full snapshot replaced the model's edit outright, and a partial one merged the older diff on top of it, producing a state that never existed. every send path now stamps exactly once, when the message is dispatched rather than when it is queued. LocalThreadRuntimeCore stamps in _runAppend, the point both the direct send and the queue flush pass through, and ExternalThreadQueueAdapter gained an optional __internal_setDispatchTransform that createMessageQueue implements and ExternalStoreThreadRuntimeCore installs, so a queued message is re-gated against the thread tail it actually lands on. an adapter that does not implement the transform is stamped at enqueue as before.
fixpause an external store's message queue when the user cancels. cancelling left the queue running, so the aborted run's settle dispatched the next pending message at the moment the user pressed Stop; the pending items now survive and the next send drains them, matching what the local runtime does under unstable_queueClearOnCancel: false and the behaviour that flag becomes once it is removed.
fixhide external thread cancellation when no handler is configured
fixpreserve ExternalThread composer state while attachments are prepared for send
fixstamp interactable state snapshots on every send, not just composer sends. the gate ran in the thread and edit composer cores, so a send that skipped the composer carried metadata.custom = {}: a Suggestions entry with send goes through thread.append, as does user code calling assistant.thread.append(...). the model then saw an update_{name} tool whose required id is documented as coming from a state snapshot, found no snapshot in the conversation, and could not call the tool at all. gating now runs in BaseThreadRuntimeCore.enrichAppendMetadata, applied by both thread runtime cores on append, deriving the branch prefix from the message's parentId so the previous composer behavior is reproduced exactly (the thread tail for an ordinary send, the edited message's parent for an edit). the remove operation's item id description in generated array-update schemas no longer reuses the instance-addressing wording that told the model each removable list item was an interactable instance.
fixkeep trailing user messages out of the composer when an external store cannot persist deletions
fixdeliver threadListItem.switchedTo to default-scope listeners (#5699). the thread list item client now emits the switch from its own observed selection transition, after the flush that rebinds the derived scopes, instead of relaying the runtime's synchronous notification. scoped listeners now resolve their scope against the host's current client at delivery time, so a listener subscribed before a structural swap follows the scope's present binding; the notification manager re-reads the listener set at flush time per the documented live-set semantics. listeners that need a pinned instance subscribe on an id-scoped client instead.
fixderive the suggestions scope from the thread so runtime-provided suggestions render through ThreadPrimitive.Suggestions (#5529)
@assistant-ui/eve@0.0.13patchGitHub →

Fixes

1
fixhand a cancelled queued send back to the composer instead of dropping it. hitting Stop while a message waits behind a streaming turn now restores that message as the composer draft, superseding the 0.0.10 note that cancelling a run drops queued sends. a turn cancelled before it streamed still hands its own message back to the composer first, so the queued one is dropped in that window. cancelled tool approvals are still discarded, and unmounting the runtime still drops whatever is queued.
@assistant-ui/react@0.15.14patchGitHub →

Features

2
featgive the composer its draft back when a send never reached the backend. a runtime that rejects onNew with the new MessageNotSentError restores the text, quote, and attachments the composer cleared at dispatch time, as long as nothing has claimed the composer since. that guard and that outcome are the ones cancelRun already applies to a trailing user message, so whichever fires first keeps the composer, and of several drafts queued behind one turn only the most recent is still restorable. an edit composer closes at dispatch, so a rejected edit is not restored.
featwire threads.reloadMainThread through the tap ExternalThread path via a new onRefetchThread callback, with the refetchThread capability derived from its presence

Fixes

3
fixrelease replay response readers after completion, cancellation, and errors
fixgenerate unique in-memory thread IDs
fixderive the suggestions scope from the thread so runtime-provided suggestions render through ThreadPrimitive.Suggestions (#5529)
@assistant-ui/react-a2a@0.2.29patchGitHub →

Fixes

1
fixreject synchronous message responses with invalid A2A roles
@assistant-ui/react-ag-ui@0.0.54patchGitHub →

Features

1
featround-trip a part's providerMetadata.agui through AG-UI's content metadata. An image or file part, whether it sits on the message or inside an attachment, now reaches the agent with whatever the host put in that namespace, and an inbound item puts it back on the rebuilt part, so a snapshot echo resends it instead of dropping it. A file part's own filename still wins over a key of the same name. Text is unchanged, its AG-UI schema has no metadata field.

Fixes

4
fixpreserve image filenames through AG-UI snapshots
fixpreserve queued messages when cancelling an active run
fixpreserve encrypted-only reasoning records across the AG-UI round trip. Under zero data retention an agent sends a ReasoningMessage whose readable content is empty and whose payload is entirely in encryptedValue, and both the adapter and the core normalizer dropped it: the import guarded on empty text, and a reasoning part with neither text nor summary is removed by fromThreadMessageLike. Such a record now rides on metadata.custom.agui.opaqueReasoning of the neighbouring message instead of becoming an unrenderable part, and is replayed into the run input adjacent to that message. A record that sat between an assistant message and its own tool result is replayed after that result, since import folds the result into the assistant message and that boundary no longer exists at export. A runtime configured with showThinking: false is affected too: it previously emitted no reasoning records at all, and now emits { role: "reasoning", content: "", encryptedValue } for each imported record that carried a value, since that option hides reasoning from the UI rather than discarding state the agent needs back.
fixkeep reasoning, and its signature, across the AG-UI round trip. toAgUiMessages built the run input from extractText, which reads text parts only, so an imported reasoning-only assistant message was discarded as a blank turn and a live assistant message silently lost its reasoning; reloading a thread and sending one more message deleted the reasoning history from what the agent received. Reasoning parts now leave as the standalone reasoning records they arrived as. The runtime also consumes REASONING_ENCRYPTED_VALUE and stores the blob at providerMetadata.agui.encryptedValue, so reasoning from a live run and from an imported ReasoningMessage are both re-emitted with their signature intact rather than replayed unsigned.
@assistant-ui/react-generative-ui@0.0.14patchGitHub →

Fixes

7
fixreport the depth warning against the 32 levels of element nesting the Slack and Teams converters actually allow, instead of the 64 traversal units that ceiling is spent in
fixreport the content the Slack and Teams converters were discarding silently. A ListView or Carousel child that would have rendered, a malformed Select or RadioGroup option, and a table column without a string label all warn dropped now, while a child that renders nothing anyway stays silent. A Slack column without a label also keeps its position now, so the header stays aligned with the data, and a discarded child no longer spends the shared markdown and data-table budgets or reserves a Teams input id that renames a control which survives
fixlet a composition read as one answer instead of a stack of boxes
fixraise the Slack data_table caps to the current platform ceiling (200 data rows, 20,000 characters) so large tables are no longer clamped below what Slack accepts
fixreport a reshaped Slack carousel card accurately. The reshape is a fallback rather than a clamped, since a card holding only text loses nothing; the images, tables, charts, and controls a reshape really does lose are reported separately as dropped; and the title and body are clamped through the warning path instead of being sliced silently
fixstop reporting clamped for Teams conversions that remove nothing. A renamed input id and buttons moved past the primary cap now report fallback, and the row-width recommendation and the payload byte budget report a new advisory code
fixreport the Teams payload warning against the 80,000-byte soft budget it actually crosses instead of Teams' 100 KB message limit
@assistant-ui/react-mcp@0.1.12patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-native@0.1.36patchGitHub →

Fixes

1
fixrespect prevented composer key events
@assistant-ui/react-o11y@0.0.39patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-pi@0.0.17patchGitHub →

Fixes

1
fixrelease event stream readers after completion, cancellation, and errors
@assistant-ui/store@0.3.9patchGitHub →

Fixes

3
fixscoped event listeners under a derived-only provider filter against the child's own bindings instead of the parent's, in both directions and through scope-less intermediate hosts
fixpublish hosted scope rebinds before descendant layout effects
fixdeliver threadListItem.switchedTo to default-scope listeners (#5699). the thread list item client now emits the switch from its own observed selection transition, after the flush that rebinds the derived scopes, instead of relaying the runtime's synchronous notification. scoped listeners now resolve their scope against the host's current client at delivery time, so a listener subscribed before a structural swap follows the scope's present binding; the notification manager re-reads the listener set at flush time per the documented live-set semantics. listeners that need a pinned instance subscribe on an id-scoped client instead.
@assistant-ui/tap@0.9.12patchGitHub →

Features

1
featmountOnSubscribe
assistant-cloud@0.1.40patchGitHub →

Fixes

1
fixinclude archived Cloud threads when requested and preserve archive filters
assistant-ui@0.0.110patchGitHub →

Fixes

1
fix· cliclarify malformed package.json errors from the info command
create-assistant-ui@0.0.73patchGitHub →

Aug 9, 2026

13 packages

@assistant-ui/cloud-ai-sdk@0.1.32patchGitHub →

Fixes

1
fixclear a selected Cloud thread when archiving removes it from the list
@assistant-ui/core@0.3.12patchGitHub →

Refactors

1
refactormove ExternalThread, SingleThreadList, and the Assistant augmentation namespace into @assistant-ui/core
@assistant-ui/core@0.3.11patchGitHub →

Fixes

2
fixname the offending input when an external message converter returns an invalid message
fixexpose additional Cloud thread pages through the thread list runtime

Other

1
miscRepublish: 0.3.10 was left staged on npm by a failed publish and cannot be re-pushed.
@assistant-ui/eve@0.0.12patchGitHub →

Fixes

1
fixisolate observe-only Eve lifecycle callbacks
@assistant-ui/react@0.15.13patchGitHub →

Refactors

1
refactormove ExternalThread, SingleThreadList, and the Assistant augmentation namespace into @assistant-ui/core
@assistant-ui/react@0.15.12patchGitHub →

Chores

1
choredrop dependencies that are never imported
@assistant-ui/react-google-adk@0.0.25patchGitHub →

Chores

1
choredrop dependencies that are never imported
@assistant-ui/react-langgraph@0.14.23patchGitHub →

Fixes

1
fixskip RemoveMessage explicitly in convertLangChainMessages

Chores

1
choredrop dependencies that are never imported
@assistant-ui/react-lexical@0.2.9patchGitHub →

Fixes

1
fixclear stale composer text when switching to a thread with an empty draft
@assistant-ui/react-mcp@0.1.11patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-mcp@0.1.10patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-pi@0.0.16patchGitHub →

Fixes

1
fixisolate runtime error callback failures
assistant-stream@0.3.37patchGitHub →

Features

1
featsupport ioredis 6 alongside 5 in the resumable stream store

Fixes

1
fixisolate tool execution lifecycle callback errors from stream settlement

Aug 8, 2026

55 packages

@assistant-ui/agent-launcher@0.1.10patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/cloud-ai-sdk@0.1.31patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/cloud-ai-sdk@0.1.30patchGitHub →

Fixes

1
fixclear the selected Cloud thread after deleting it
@assistant-ui/core@0.3.9patchGitHub →

Fixes

1
fixroute sourceId-carrying edit sends to onEdit instead of the queue adapter, and fail fast on beginEdit without an edit handler
@assistant-ui/core@0.3.8patchGitHub →

Features

1
featpreserve app-authored reasoning summaries on message parts

Other

1
miscEdit composer send always emits: an unchanged edit re-sends the message on a new branch instead of silently closing the composer.
@assistant-ui/core@0.3.10patchGitHub →

Chores

2
choreupdate dependencies
chorereformat with oxfmt 0.62
@assistant-ui/eve@0.0.11patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/eve@0.0.10patchGitHub →

Fixes

1
fixserialize eve sends so approvals and sends during an active turn no longer crash or drop messages. Cancelling a run or unmounting the runtime drops sends still queued behind the active turn.
@assistant-ui/mcp-docs-server@0.2.1patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/metro@0.0.8patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/next@0.0.15patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react@0.15.9patchGitHub →

Features

3
featfeedback adapter support in ExternalThread
featspeech synthesis adapter support in ExternalThread
featpreserve app-authored reasoning summaries on message parts

Fixes

2
fixallow failed live completion searches to be retried
fixclear dropped assistant transport resume requests

Other

1
miscEdit composer send always emits: an unchanged edit re-sends the message on a new branch instead of silently closing the composer.
@assistant-ui/react@0.15.11patchGitHub →

Fixes

1
fixExternalThread edit composer reads editing state live, so a same-tick beginEdit + setText + send dispatches the edit; send before beginEdit and double beginEdit now throw (legacy runtime parity)

Chores

1
choreupdate dependencies
@assistant-ui/react@0.15.10patchGitHub →

Fixes

1
fixroute sourceId-carrying edit sends to onEdit instead of the queue adapter, and fail fast on beginEdit without an edit handler
@assistant-ui/react-a2a@0.2.28patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-ag-ui@0.0.53patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-ag-ui@0.0.52patchGitHub →

Fixes

2
fixsend description: "" for a tool registered without one, so RunAgentInput stays valid against the AG-UI schema. previously the key was dropped from the payload entirely and validating servers rejected the run. also types the runAgent call site against the upstream parameters.
fixisolate runtime lifecycle callback failures
@assistant-ui/react-ai-sdk@1.4.5patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-data-stream@0.12.26patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-data-stream@0.12.25patchGitHub →

Fixes

1
fixisolate lifecycle callback failures from stream control flow
@assistant-ui/react-devtools@1.2.13patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-generative-ui@0.0.13patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-google-adk@0.0.24patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-hook-form@0.12.27patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-ink@0.0.37patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-ink-markdown@0.0.36patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-langchain@0.0.25patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-langgraph@0.14.22patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-langgraph@0.14.21patchGitHub →

Fixes

1
fixisolate stream event callback errors
@assistant-ui/react-lexical@0.2.8patchGitHub →

Features

1
featsupport lexical 0.49

Chores

1
choreupdate dependencies
@assistant-ui/react-markdown@0.14.10patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-mcp@0.1.9patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-mcp@0.1.8patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-mcp@0.1.7patchGitHub →

Other

1
@assistant-ui/react-native@0.1.35patchGitHub →

Chores

2
choreupdate dependencies
chorereformat with oxfmt 0.62
@assistant-ui/react-o11y@0.0.38patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-o11y@0.0.37patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-opencode@0.2.18patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-pi@0.0.15patchGitHub →

Features

1
featsupport pi 0.84

Chores

1
choreupdate dependencies
@assistant-ui/react-pi@0.0.14patchGitHub →

Fixes

1
fixisolate initial subscription callback errors
@assistant-ui/react-streamdown@0.3.10patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-syntax-highlighter@0.14.5patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/store@0.3.8patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/store@0.3.7patchGitHub →

Features

1
featcreateAssistantClient accepts an AssistantConfigSource, re-read in the root render so bindings can deliver config changes (updated element args, added or removed scopes) without remounting surviving scopes

Fixes

1
fixanswer Vue reactivity introspection probes (__v_raw, __v_isRef, __v_isReactive, __v_isReadonly, __v_isShallow, __v_skip) on client proxies with undefined instead of an error accessor, so Vue's toRaw/isRef checks and its dev warning formatter no longer throw when a client crosses a Vue boundary
@assistant-ui/tap@0.9.11patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/vite@0.0.12patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/x-buildutils@0.0.22patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/x-generative-compiler@0.0.12patchGitHub →

Chores

1
choreupdate dependencies
assistant-cloud@0.1.39patchGitHub →

Chores

1
choreupdate dependencies
assistant-stream@0.3.36patchGitHub →

Chores

1
choreupdate dependencies
assistant-stream@0.3.35patchGitHub →

Features

1
featpreserve app-authored reasoning summaries on message parts

Fixes

2
fixpreserve streamed tool arguments when other content is interleaved
fixcarry a reasoning summary on the data stream. a reasoning part opened with unstable_summary previously lost it on that wire, and a summary-only part produced no frames at all, so it never reached the client. the encoder now emits a reasoning part-start frame when there is a summary to carry; a stream that does not use the field is unchanged, and one that does requires a decoder that understands the frame.
assistant-ui@0.0.109patchGitHub →

Chores

1
choreupdate dependencies
create-assistant-ui@0.0.72patchGitHub →
heat-graph@0.0.15patchGitHub →

Chores

1
choreupdate dependencies
safe-content-frame@0.0.27patchGitHub →

Chores

1
choreupdate dependencies

Aug 6, 2026

23 packages

@assistant-ui/core@0.3.6patchGitHub →

Features

2
featAuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.
feattwo-lane, placement-aware message queue with steer-by-default mid-run sends

Fixes

3
fixpreserve falsy tool results
fixdrop the react type dependency from the core default entry and pin the framework neutral boundary with a contract test
fixaccept all valid image data URLs in sanitizeImageContent instead of a hardcoded format list
@assistant-ui/eve@0.0.8patchGitHub →

Features

1
featexport toEveInputResponse from the package barrel for custom approval flows

Fixes

4
fixrender connector authorization parts and map auth-suspended turns to requires-action
fixconvert inbound eve file parts instead of dropping them
fixreconcile staged messages with live session updates and promote staged prefixes on reload
fixmap cancelled and failed turns to terminal message statuses instead of a permanent running state
@assistant-ui/metro@0.0.7patchGitHub →

Features

1
featAuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.
@assistant-ui/next@0.0.14patchGitHub →

Fixes

1
fixonly run the use-generative loader on modules carrying the directive
@assistant-ui/react@0.15.5patchGitHub →

Features

2
featAuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.
feattwo-lane, placement-aware message queue with steer-by-default mid-run sends

Fixes

8
fixallow callers to override the default type="button" on action button primitives
fixhydrate assistant transport resumes from their retained initial state
fixAttachmentPrimitive.Thumb now renders custom children and supports asChild instead of always overriding them with the automatic label
fixAttachmentPrimitive.Thumb no longer renders a bare "." for extension-less filenames; falls back to the attachment type
fixignore Escape during IME composition in ComposerPrimitiveInput so dismissing a composition candidate no longer cancels the composer
fixdefer blob URL revocation in ActionBarPrimitive.ExportMarkdown so the download fetch can start before the URL is revoked
fixsettle assistant transport runs when finish callbacks fail
fixcompose SelectionToolbarRoot onMouseDown with composeEventHandlers so user handlers run before preventDefault
@assistant-ui/react-a2a@0.2.27patchGitHub →

Fixes

4
fixrestore inbound file and audio parts as file message parts instead of text placeholders
fixkeep the wire filename on inbound image parts
fixpreserve replacement run state when an aborted run settles late
fixisolate runtime callback failures from A2A stream processing
@assistant-ui/react-ag-ui@0.0.51patchGitHub →

Features

2
featadd unstable_enableMessageQueue so a send during a run is buffered instead of swallowed
feattwo-lane, placement-aware message queue with steer-by-default mid-run sends

Fixes

1
fixabort AG-UI HTTP requests when cancelling runs
@assistant-ui/react-generative-ui@0.0.12patchGitHub →

Fixes

1
fixkeep chart strokes crisp under viewBox stretching and stop outlining area baselines
@assistant-ui/react-google-adk@0.0.22patchGitHub →

Fixes

1
fixkeep ADK stream error events reliable when error callbacks fail
@assistant-ui/react-hook-form@0.12.26patchGitHub →

Fixes

1
fixsubmit forms registered with standard and nested inputs
@assistant-ui/react-ink@0.0.36patchGitHub →

Features

2
featAuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.
feattwo-lane, placement-aware message queue with steer-by-default mid-run sends

Fixes

1
fixAttachmentPrimitive.Thumb now renders custom children instead of always overriding them with the automatic label
@assistant-ui/react-ink-markdown@0.0.35patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-langchain@0.0.24patchGitHub →

Fixes

1
fixisolate LangChain stream options between thread runtimes
@assistant-ui/react-langgraph@0.14.20patchGitHub →

Features

1
feattwo-lane, placement-aware message queue with steer-by-default mid-run sends
@assistant-ui/react-mcp@0.1.4patchGitHub →

Features

1
featAuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.

Fixes

2
fixhandle rejected MCP server removal actions
fixserialize custom server persistence updates
@assistant-ui/react-native@0.1.34patchGitHub →

Features

1
featAuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.

Fixes

2
fixAttachmentPrimitive.Thumb now renders custom children instead of always overriding them with the automatic label
fixAttachmentPrimitive.Thumb no longer renders a bare "." for extension-less filenames; falls back to the attachment type
@assistant-ui/react-o11y@0.0.34patchGitHub →

Features

1
featAuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.

Fixes

1
fixprevent cyclic span parent links from crashing observability trees
@assistant-ui/react-pi@0.0.13patchGitHub →

Features

1
feattwo-lane, placement-aware message queue with steer-by-default mid-run sends
@assistant-ui/react-streamdown@0.3.9patchGitHub →

Fixes

2
fixmerge user rehypePlugins after the security hardening pipeline instead of dropping it
fixpreserve Streamdown sanitization extensions with security
@assistant-ui/store@0.3.4patchGitHub →

Features

3
featAuiProvider extends/config grammar. config={AuiConfig({...})} alone creates a top-level root client; nested providers must pass extends — a client to extend, or null to isolate (dev-enforced). An empty config creates a client extending the extends client; ref exposes the resulting client. The config prop only accepts configs built with AuiConfig(...) (branded type). AssistantRuntimeProvider gains an optional config prop whose scopes are provided alongside the runtime scope. The useAui({...}) extension overload and the AuiProvider value prop are deprecated; value={client} now exposes a client extending the given one (same scopes, new identity) rather than the exact instance. useAui({}) with an empty scope object now mounts a rooted host (so the scope set can grow across renders) instead of a passthrough derived-only client. useAuiState state enumeration (Object.keys/spread) now includes scopes inherited from parent clients, matching in-operator behavior. Clients derived from a hand-built parent (a plain object with subscribe/on) forward scoped on(...) listeners to the parent's on instead of throwing for scopes the parent does not expose.
featadd a framework-neutral client entry with createAssistantClient over a standalone tap root
featmake the react peer optional; react-less consumers alias react to @assistant-ui/tap/standalone-shim instead
@assistant-ui/tap@0.9.10patchGitHub →

Features

1
featadd a react-free standalone shim entry and make the react peer optional
@assistant-ui/x-buildutils@0.0.21patchGitHub →

Fixes

1
fixonly run the react compiler on tap-dependent packages that declare a react peer, so non-React framework bridges do not gain memo caches that run outside any render the compiler understands
assistant-stream@0.3.34patchGitHub →

Fixes

1
fixawait resumable reader cleanup during cancellation

Aug 4, 2026

2 packages

pypi/assistant-stream@0.0.36GitHub →

What's Changed

  • fix(react): render custom children and support asChild in AttachmentPrimitive.Thumb by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5415
  • fix(react): ignore Escape during IME composition in ComposerPrimitiveInput by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5416
  • fix(react): allow callers to override default type on action buttons by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5476
  • fix(ui): replace invalid hsl() fade mask colors with color-mix in reasoning by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5467
  • feat(docs): add section icons to tap docs sidebar by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5433
  • fix(docs): keep blank code-block lines one line tall by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5465
  • fix(ui): restore sidebar outline shadows by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5582
  • fix(react-a2a): restore inbound file and audio parts as file message parts by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5547
  • fix(react): settle assistant transport runs after finish callback errors by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5585
  • fix(ui): drop invalid hsl() wrapper from radix sidebar outline shadow by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5469
  • fix(react-mcp): handle server removal failures by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5587
  • fix(core): accept all valid image data URLs in sanitizeImageContent by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5484
  • fix(react-a2a): keep the wire filename on inbound image parts by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5551
  • docs(tap): document hooks support matrix and snapshot-throw divergence by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5577
  • feat: add docs agent discovery surfaces by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5589
  • feat(assistant-stream): opt-in heartbeat for DataStreamResponse by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5592
  • fix(react-mcp): serialize custom server persistence by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5591
  • chore(python): assistant-stream 0.0.36 by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5595 Full Changelog: https://github.com/assistant-ui/assistant-ui/compare/pypi/[email protected]/[email protected]
pypi/assistant-stream@0.0.35GitHub →

What's Changed

  • chore: update versions by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/4427
  • chore: harden CI secret usage by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4453
  • chore: require maintainer review for CI config by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4454
  • feat(docs): Xulux playground — starter helper agent, usage limits, and template flow by @vivek100 in https://github.com/assistant-ui/assistant-ui/pull/4417
  • feat: add Eve runtime adapter by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4455
  • refactor(docs): split Xulux markdown from shared docs assistant component by @vivek100 in https://github.com/assistant-ui/assistant-ui/pull/4457
  • docs: update nav and pricing layout by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4459
  • feat(react-langchain): resume interrupts via useLangChainRespond by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4447
  • chore: update versions by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/4458
  • feat(react-langchain): resume parallel interrupts via useLangChainRespondAll by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4462
  • feat(core): add internal createRuntimeExtras helper for external-store adapters by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4466
  • refactor(react-langchain): split runtime file and adopt createRuntimeExtras by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4467
  • docs: add the adapter-orchestration convention to AGENTS.md by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4469
  • refactor(react-opencode): adopt createRuntimeExtras and split the runtime file by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4470
  • refactor(react-langgraph): adopt createRuntimeExtras and split the runtime file by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4471
  • fix(react-opencode): restore the type exports trimmed in #4470 by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4472
  • refactor(react-a2a): adopt createRuntimeExtras and split accessor hooks/types by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4473
  • refactor(react-pi): adopt createRuntimeExtras and split accessor hooks/types by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4474
  • refactor(react-google-adk): adopt createRuntimeExtras by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4475
  • docs: add standalone-tool-call grouping key to chain-of-thought sample by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4479
  • feat(core): add onThreadIdChange for managed threadId on remote thread list runtime by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4482
  • docs(agents): add a general do's and don'ts section by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4483
  • fix(build-utils): resolve bundled ambient types from hoisted monorepo installs. by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4484
  • feat(react-ag-ui): expose pending interrupts via createRuntimeExtras hooks by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4485
  • feat(docs): use Assistant Cloud for Xulux message history and telemetry by @vivek100 in https://github.com/assistant-ui/assistant-ui/pull/4461
  • feat(react-ag-ui): add useAgUiSteerAway to steer past interrupts by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4493
  • feat(cli): rename the langgraph starter template to -t langchain by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4494
  • fix(docs): drop no-op identity replacements in demo zip path mapping by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4496
  • fix: tolerate content blocks that omit their declared fields by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4497
  • docs: don't generate api-reference on dev by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4498
  • chore(devtools): stop committing the generated panel css by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4499
  • docs: minor updates to pi READMEs by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4502
  • feat(react-langchain): regenerate via checkpoint fork by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4448
  • feat(react-langchain): add useLangChainInterrupts reader for pending interrupts by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4476
  • feat(react-langchain): render generative UI from graph state by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4503
  • feat(with-expo): redesign the chat UI and fix the composer stop button by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4509
  • fix(react-native): preserve IME composition in the web composer input by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4513
  • test(react-native): add a vitest suite for the primitives by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4514
  • feat: forward onThreadIdChange through remote thread list adapters by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4515
  • examples: use latest assistant-ui components in with-chain-of-thought by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4478
  • feat(react-langchain): expose subagent and subgraph discovery hooks by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4516
  • chore: update dependencies by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4517
  • fix(eve): support eve 0.12 by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4518
  • fix(react-langchain): type-check against the current @langchain SDK by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4519
  • feat(react-langchain): edit messages via checkpoint fork by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4521
  • docs: fix speech guide snippet to use AuiIf instead of nonexistent useMessageTTS by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4529
  • docs: show file parts in user message by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4537
  • feat(react-ag-ui): restore pending tool-call status on reload by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4538
  • fix(react-ag-ui): order tool-call parts by parentMessageId by @dkachur1 in https://github.com/assistant-ui/assistant-ui/pull/4533
  • feat(react-langchain): live generative UI via push_ui_message by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4504
  • feat(docs): improve Xulux playground handoff and source preview by @vivek100 in https://github.com/assistant-ui/assistant-ui/pull/4501
  • docs: mermaid diagrams by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4437
  • fix(docs): add assistant-cloud tsconfig path mapping for api-reference by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4526
  • feat: improve docs agent readiness by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4536
  • feat: refine tool call display UI by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4528
  • Update README traction chart by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/4530
  • feat(react-o11y): add span timeline primitives for trace waterfalls by @samdickson22 in https://github.com/assistant-ui/assistant-ui/pull/4535
  • fix(docs): steps component prose styling by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4540
  • docs(part-grouping): document flat tool row pattern with GroupedParts by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4541
  • feat(react-langchain): expose useStream handle via useLangChainStream by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4523
  • feat(react): add id-keyed message rendering by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4542
  • feat(react): add unstable headless composer input bridge by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4545
  • feat(core): add shared client-side streaming timing primitive by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4548
  • refactor(react-langgraph): adopt shared streaming timing primitive by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4549
  • feat(external-store): add unstable_onBranchChange adapter callback by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4543
  • feat(react-langchain): attach per-message streaming timing by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4550
  • refactor(react-ai-sdk): adopt shared streaming timing primitive by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4551
  • refactor(react-opencode): adopt shared streaming timing primitive by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4553
  • fix(react-langgraph): count reasoning content blocks in streaming timing by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4554
  • fix(docs): render search highlights instead of literal <mark> tags by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4547
  • style(ui): refine cot/tool disclosure motion, contrast & reduced-motion by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4480
  • docs(react-langchain): document per-message metadata and media hooks by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4552
  • fix: add tool-fallback button registry dependency by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4556
  • docs(agents): sharpen do/don't and add adapter/build guardrails by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4559
  • fix: add shimmer registry dependencies by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4566
  • fix: add client directives to UI components by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4565
  • fix: warn about duplicate generative toolkit spread names by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4560
  • fix(ui): add accessible names to icon-only combobox controls by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4564
  • fix: add missing registry package dependencies by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4557
  • fix(registry): declare tw-shimmer dependency for tool-group by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4561
  • fix: validate registry install metadata by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4571
  • fix(core): make PartPrimitive.Messages props a discriminated union by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4567
  • docs(api-ref): regenerate, update classification logic by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4572
  • feat: redesign interactables API by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4310
  • fix(react-langgraph): surface tool-call messages and interrupts from subgraph updates by @serhiizghama in https://github.com/assistant-ui/assistant-ui/pull/4569
  • style(docs): refine ChatGPT example to match real ChatGPT UI by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4568
  • feat: re-export unstable interactable helpers from platform barrels by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4577
  • fix: avoid false positives in use-generative directive in compiler by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4584
  • fix: pin Expo example to Babel 7 by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4587
  • chore: add API surface snapshots by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4588
  • fix: stabilize react api surface snapshot by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4592
  • fix: improve providerTool duplicate config error via keys by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4590
  • feat: honor startRun false in staged-capable runtimes by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4591
  • docs(react-langchain): reframe react-langgraph comparison as at-parity by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4558
  • feat(mcp-docs-server): adopt registerTool API with read-only annotations by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4574
  • chore: update versions by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/4465
  • ci: template size metrics gate by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4468
  • ci: update actions for Node 24 by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4595
  • fix: preserve package imports in aui-build by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4598
  • fix: split react-generative-ui root export by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4597
  • fix: align react-generative-ui lockfile range by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4600
  • feat(thread-list): make more composable by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4593
  • docs(demo): add user editable notepad tool-ui showcasing new interactables API by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4371
  • fix: stabilize API surface snapshots by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4601
  • feat(react-generative-ui): add react-free ./ir subpath and rebase gen-ui API on it by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4605
  • fix(mcp-docs-server): stop bundling unused blog posts by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4575
  • fix(cli): skip shadcn registry install when --skip-install is passed by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4609
  • fix: re-export platform context providers by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4580
  • fix(mcp-docs-server): cap aggregate directory content size by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4578
  • fix: contain Ask AI drawer scrolling by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4585
  • Track Xulux chat turn outcomes by @vivek100 in https://github.com/assistant-ui/assistant-ui/pull/4603
  • refactor(with-mcp): migrate test server to registerTool with read-only annotations by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4604
  • feat(mcp-docs-server): expose docs and examples as MCP resources by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4596
  • fix: name opaque toolkit entries in diagnostics by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4617
  • fix(react): disable smooth text streaming under prefers-reduced-motion by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4562
  • chore: update dependencies by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4608
  • ci: check api surface in tests by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4619
  • feat(react-generative-ui): add closed vocabulary as default GenerativeUILibrary by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4607
  • chore: update versions by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/4599
  • fix: restrict Xulux download proxy by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4620
  • docs: add follow-up suggestions component page by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4612
  • fix(api-surface): stabilize string literal union member order by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4623
  • fix: name tools in missing toolkit member for debugging by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4610
  • feat(react-generative-ui): add ActionRegistry and wire $action dispatch by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4625
  • feat(mcp-docs-server): add argument completions for docs/examples resources by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4621
  • feat(mcp-docs-server): add assistantUISearch keyword search tool by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4579
  • feat(react-ag-ui): restore interrupt status in fromAgUiMessages from persisted metadata by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4615
  • test(react-ai-sdk): cover toolOutputConversion and sliceMessagesUntil by @naamanu in https://github.com/assistant-ui/assistant-ui/pull/4614
  • fix: generative ui action warnings by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4652
  • fix: improve duplicate generative ui prop warnings by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4645
  • fix: skip malformed generative ui component nodes by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4653
  • fix: skip malformed generative ui action types by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4655
  • ci: clarify template sync only targets minimal template by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4668
  • chore: update README traction chart by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/4661
  • fix(turbo-cache): exclude generated output contents from build inputs by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4669
  • feat(docs): improve Xulux handoff actions and templates by @vivek100 in https://github.com/assistant-ui/assistant-ui/pull/4643
  • feat(docs): keep Xulux active preview context across turns by @vivek100 in https://github.com/assistant-ui/assistant-ui/pull/4642
  • fix: retain model-provided keys during rendering by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4656
  • feat: add mcp tool name collision validation by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4659
  • docs: generative ui actions registry by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4638
  • fix: validate generative ui imports by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4632
  • fix: support exported generative ui instances by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4629
  • fix: redirect docs overview roots by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4685
  • ci: use Fable 5 as review model by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4691
  • feat(thread-list): accessibility and keyboard navigation support by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4627
  • fix(model-selector): accessibility and keyboard nav by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4682
  • feat: support mcp connection timeouts by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4684
  • feat: support ai sdk mcp connection timeouts by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4687
  • docs: update mcp apps client example by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4689
  • ci(claude-review): warn if fable refuses and falls back to opus by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4698
  • ci(claude-review): change fable review effort to high by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4697
  • feat(ui): show upload and error status on attachment tiles by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4693
  • feat(docs): open Ask AI panel beside the page instead of under the navbar by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4633
  • feat(docs): restyle Ask AI trigger and speed up panel animation by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4634
  • feat(docs): add Ask AI chat to the homepage and a ⌘I shortcut by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4635
  • feat(docs): add panel header and conversation starters to Ask AI by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4636
  • fix: validate duplicate mcp server ids by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4700
  • docs: clarify frontend tool auto resume by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4709
  • chore: update versions by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/4624
  • docs(cli): rename langgraph template to langchain in package READMEs by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4716
  • docs: add react native markdown rendering docs by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4711
  • fix(core): fail CloudFileAttachmentAdapter uploads that return an HTTP error status by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4714
  • feat(ui): add caret color and enterKeyHint to composer input by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4695
  • fix: clarify mcp oauth callback errors by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4718
  • docs(cli): list all supported examples in the create table by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4721
  • fix(core): log the swallowed CloudFileAttachmentAdapter upload error by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4722
  • fix: add mcp app host error context by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4723
  • feat: support disabled mcp toolkit entries by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4665
  • feat(docs): environment-specific favicons for dev and preview by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4725
  • ci(claude-review): fail the job when Claude execution errors by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4719
  • feat: support disabled mcp toolkit tools by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4667
  • fix: preserve image media type by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4729
  • feat(ui): render follow-up suggestions in thread by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4694
  • fix(cli): mcp install config error by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4733
  • fix(react-native): show composer scrollbar at max height by @Gujiassh in https://github.com/assistant-ui/assistant-ui/pull/4708
  • fix(cli): doctor detects duplicate assistant-ui packages under pnpm by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4727
  • fix(core): malformed local thread storage by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4741
  • perf(turbo): restore git-aware build cache inputs by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4738
  • ci: de-duplicate .turbo cache key between build and test jobs by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4742
  • fix: bound test:types parallelism to avoid memory exhaustion by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4737
  • fix(react-google-adk): invalid request JSON errors by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4743
  • chore: cap concurrency in root build script by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4736
  • feat: add onResumeError hook callback for useChatRuntime by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4672
  • fix(docs): validate pruned Xulux chat messages by @vivek100 in https://github.com/assistant-ui/assistant-ui/pull/4735
  • chore: update README traction chart by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/4745
  • ci: temporarily run Claude Code review on Opus 4.8 by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4747
  • fix(react-data-stream): include current message on request by @GuYounes in https://github.com/assistant-ui/assistant-ui/pull/4740
  • fix(core): restore composer text and attachments when send upload fails by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4715
  • docs: add ChatGPT subscription guide by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4748
  • fix: preserve direct file parts by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4730
  • fix(react-ai-sdk): make default attachment adapter work without FileReader via shared core helper by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4650
  • fix: ignore malformed mcp custom servers by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4690
  • refactor(react-ai-sdk): use addToolOutput instead of deprecated addToolResult by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4651
  • feat(mcp-docs-server): return structuredContent from the tools by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4628
  • fix(docs): trap tab focus inside the zoomed homepage demo by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4749
  • feat(docs): exit showcase zoom on outside click and wheel by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4750
  • test(api-surface): cover generator union normalizers by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4631
  • fix(docs): add visible keyboard focus ring to shared tab triggers by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4752
  • feat(react-ag-ui): steer-away cancels pending client-side tool calls by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4674
  • fix(react-ai-sdk): validate frontend tool schemas by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4756
  • feat(react-ink): add standalone TextInput primitive by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4658
  • fix(react-langgraph): serialize sends so runs never overlap by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4765
  • fix(react-langgraph): drop late tool result for an already-answered call by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/4768
  • refactor(react-ink): move useTextBuffer beside TextInput by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4767
  • feat(ui): add provider logos for model selector by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4703
  • fix(cli): update package json errors by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4772
  • perf(ui): contain offscreen message rows with content-visibility by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4786
  • fix(api-surface): stabilize top-level declaration order by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4788
  • chore: add okisdev as code owner for CODEOWNERS and api-surface by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4789
  • chore: update dependencies by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4746
  • feat(react-ink): track hunkIndex on parsed diff lines by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4660
  • feat(cloud): expose CloudAPIError with the HTTP status on failed requests by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4732
  • fix(cli): register with-resumable-stream example for scaffolding by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4720
  • feat(ui): client-side search for the thread list by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4726
  • feat(react-ag-ui): auto-cancel pending client-side tool calls on new message by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4760
  • feat(core): surface the upload failure reason on failed attachments by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4728
  • perf(mcp-docs-server): cache docs and examples file listings by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4626
  • docs: add generative ui api reference by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4644
  • fix(core): include thread ids in thread list errors by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4744
  • feat(react-data-stream): detect stream protocol from response by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4755
  • fix(react-langgraph): preserve attachments on the user message state by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/4791
  • feat(mcp-docs-server): surface doc title and excerpt on assistantUIDocs by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4611
  • docs: add missing link for react data stream api reference by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4781
  • feat: support mcp tool name prefixes by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4675
  • fix(ui): scope badge hover styles to interactive anchors by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4784
  • fix(templates): surface the real error on failed chat requests by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4793
  • fix(docs): move star count after GitHub icon and add nav spacing by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4780
  • feat: detect UI message stream protocol header by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4794
  • feat: add listResources api for mcp resource listing by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4699
  • feat(react-ai-sdk): export frontend tools type by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4761
  • fix: forward thread messages ref by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4712
  • feat(react): add compact mode to ComposerPrimitive.Root by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4701
  • chore: bump TypeScript to v7 by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4777
  • fix(cloud): await initializeAuth auth headers (#4807) by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4807
  • fix(ui): adapt syntax highlighter to light and dark mode by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4782
  • refactor(ui): polish assistant modal motion, elevation, and shape by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4812
  • fix(react-langgraph,react-langchain): emit url file source blocks by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4800
  • feat(mcp-docs-server): expose playground template tools by @vivek100 in https://github.com/assistant-ui/assistant-ui/pull/4809
  • fix(docs): restore Xulux thread shell ownership by @vivek100 in https://github.com/assistant-ui/assistant-ui/pull/4804
  • fix(cloud): preserve history attachments by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4754
  • fix(cloud): handle empty success responses for mutation action by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4811
  • fix: show pointer cursor on navbar search triggers by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4816
  • feat: Base UI component variants with style-aware registry by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4817
  • fix(react-devtools): resolve tailwind cli explicitly for windows by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4825
  • feat(react): render prop for AssistantModalPrimitive parts by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4818
  • chore: update dependencies by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4815
  • feat: preserve providerMetadata on text, reasoning, and tool-call message parts by @DLOVRIC2 in https://github.com/assistant-ui/assistant-ui/pull/4806
  • feat: recognize exported defineToolkit bindings in spreads by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4583
  • feat(registry): enforce radix/base variant parity at build time by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4829
  • docs: rework voice guides into realtime, dictation, and speech story by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4830
  • feat: converge collapsible variants on neutral state selectors by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4831
  • refactor(ui): single-source the collapsible components across flavors by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4832
  • docs: use transport instead of removed useChatRuntime({ api }) in guides by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4797
  • feat: add Base UI variants for the six radix-importing registry items by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4834
  • feat: make Base UI the default across docs and templates by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4835
  • feat: resumable ai-sdk backend registry template and docs cross-links by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4838
  • fix: base select popup rendering and dual-flavor docs polish by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4839
  • feat(assistant-stream): python resumable stream layer by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4840
  • refactor: move the docs chrome to Base UI and drop stray radix deps by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4841
  • feat: resolve templates base-first and retire the docs dropdown fork by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4843
  • refactor: nest the shadcn trees and make the unmarked alias mean Base UI by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4844
  • fix(react-mcp): validate persisted auth state by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4845
  • docs(react-ai-sdk): move the resumable streams cross-links into jsdoc by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4849
  • fix(react-ai-sdk): guard converters against missing parts and mediaType by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4648
  • fix(react-ink): preserve TextInput cursor when a controlled owner corrects an edit by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4770
  • fix(assistant-stream): accept AI SDK v5+ delta text, source-url, file, and bare lifecycle chunks at the decode boundary by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4854
  • feat(react-ai-sdk): support AI SDK v7 by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4654
  • chore: release the ai sdk v7 switch as a patch by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4855
  • perf(ui): memoize diff parsing and contain offscreen diff files by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4783
  • fix: expose generative ui key in present schema by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4657
  • feat: add header brand assets menu by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4630
  • fix(ui): let checked flow through props in menu checkbox items by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4859
  • feat: add mcp server names to errors by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4670
  • fix: prevent logo context menu scroll shift by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4860
  • docs: add mcp tool approval patterns by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4778
  • feat(docs): move context usage into assistant header and simplify popover by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4810
  • docs: add missing migrations page by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4848
  • feat: scope selection toolbar quote regions by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4710
  • feat: support quote exclusions via data-aui-quote-selectable="false" by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4863
  • feat(docs): redesign the site header nav panel and buttons by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4864
  • feat: infer tool args from schemas by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4662
  • docs: point install snippets at the style-aware registry by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4866
  • fix(cli): resolve base ui flavored registry urls in add by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4865
  • feat(react-ai-sdk): add guard to resumable session storage by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4771
  • fix(registry): resolve style-aware urls for nested item names by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4869
  • fix(cloud): guard localStorage access in anonymous auth strategy by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4870
  • fix(cli): install the quick start from the flavor the initialized project uses by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4868
  • feat(react-ink): render the upload failure message in AttachmentStatus by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4731
  • perf(react-ink-markdown): memoize markdansi render() in MarkdownText by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4867
  • fix: parse CRLF SSE events in A2A client by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4819
  • refactor: make the unmarked component file the Base UI source by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4873
  • fix(react-google-adk): parse standard sse frames by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4821
  • fix(ui): hide the context display tooltip arrow via a data slot by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4881
  • feat(docs): sync the header design and float the assistant panel by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4882
  • fix(cli): include installed assistant-ui packages in info by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4891
  • fix(react-langgraph): forward threadId and initialThreadId to the thread list runtime by @serhiizghama in https://github.com/assistant-ui/assistant-ui/pull/4892
  • ci(template-metrics): compare against the merge-base instead of a cached baseline by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4853
  • feat: extract a shared SSE event decoder into assistant-stream by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4880
  • feat: enforce api-reference ownership with a CI drift gate by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4850
  • ci: install root tooling for the template sync check by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4836
  • feat(react-ai-sdk): forward onResumeToolCall to the external store by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4837
  • ci: fix the template sync install and api-reference drift on main by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4894
  • feat(react-ag-ui): surface ACTIVITY_SNAPSHOT results on tool parts by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4895
  • feat: AssistantError taxonomy with severity and display metadata by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4842
  • feat: plumb serverId through MCP Apps for multi-MCP host routing by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4898
  • ci: skip claude review on bot pushes and scope concurrency to the job by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4900
  • fix(docs): raise Xulux prompt preview above canvas by @vivek100 in https://github.com/assistant-ui/assistant-ui/pull/4897
  • fix(react-ai-sdk): guard toolOutputConversion against non-string mediaType by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4899
  • feat: built-in LLM suggestion adapter for local and AI SDK runtimes by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4833
  • feat(react-ink): export flat Props aliases from the messagePart and statusBar barrels by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4888
  • chore(react-ink): delete dead re-export shims and stale local RuntimeAdapterProvider by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4878
  • feat(react-ink-markdown): declare color, tableTruncate, and tableEllipsis on MarkdownTextProps by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4877
  • fix(react-google-adk): normalize session api urls by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4893
  • feat: add mcp server names to close errors by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4671
  • fix(react-ag-ui): preserve history branches on load by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4776
  • refactor(react-ai-sdk): emit file tool output parts instead of deprecated image-data/file-data by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4902
  • fix(cli): validate peer dependency ranges with semver by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4886
  • fix(react-a2a): validate stream response content type by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4905
  • chore: add @AVGVSTVS96 to CODEOWNERS by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/4827
  • fix(core): message converter cache invalidation breaks under React Compiler, dropping settled assistant messages from export by @samdickson22 in https://github.com/assistant-ui/assistant-ui/pull/4704
  • fix(cloud-ai-sdk): preserve mounted state in strict mode by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4921
  • fix: preserve file data in message conversion by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4923
  • refactor(react-ag-ui): back thread state with MessageRepository by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4938
  • fix(react-pi): parse standard SSE line endings by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4939
  • refactor: host the streaming-stable tool-args stringifier in @assistant-ui/core/internal by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4901
  • fix(core): keep tool-args key-order caches independent for dotted keys by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4943
  • docs: document useChatRuntime runtime options in the ai-sdk v7 guide by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4909
  • feat(react-generative-ui): add form and list vocabulary components by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4940
  • fix(assistant-stream): support LF, CRLF, and CR line endings by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4876
  • fix(assistant-stream): discard unterminated sse frames by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4875
  • feat: add styled generative ui registry items by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4945
  • refactor(assistant-stream): dedupe internal SSE event parsing by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4949
  • fix(ui): initialize Radix sidebar skeleton width as state by @samdickson22 in https://github.com/assistant-ui/assistant-ui/pull/4918
  • feat(docs): replay Xulux starter responses by @vivek100 in https://github.com/assistant-ui/assistant-ui/pull/4912
  • fix(tap): keep root lifecycle state out of useMemo by @samdickson22 in https://github.com/assistant-ui/assistant-ui/pull/4919
  • fix(tap): preserve hosted resource fiber state by @samdickson22 in https://github.com/assistant-ui/assistant-ui/pull/4920
  • feat(react-lexical): support custom Lexical plugins via children by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4950
  • feat(react-ink): export attachment Props aliases from the composer and message barrels by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4906
  • feat(react-native): export attachment Props aliases from the composerand message barrels by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4907
  • fix(react-lexical): forward Delete removes directive chips as one unit by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4952
  • fix(assistant-stream): accept event stream content type parameters by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4883
  • fix(react-opencode): propagate SDK response errors by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4908
  • fix(core): generate unique attachment ids by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4956
  • fix: flush unsupported title generation streams by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4957
  • feat: add the generative ui widget gallery and components reference by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4959
  • fix(cli): detect monorepos from workspace root by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4960
  • fix(core): accept json text attachments by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4961
  • fix(react-google-adk): normalize direct stream api urls by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4964
  • fix(tw-shimmer): correct background shimmer speed in firefox by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4966
  • fix(core): resume the local runtime when a human tool result is falsy by @serhiizghama in https://github.com/assistant-ui/assistant-ui/pull/4969
  • refactor: remove dead is-json copy from assistant-stream by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4955
  • feat(react-generative-ui): add a Slack Block Kit outbound converter by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4967
  • refactor: host the shared JSON type guards in @assistant-ui/core/internal by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4971
  • feat(react-mcp): support listResources() pagination by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4970
  • fix: stop isJSONArray from consuming the array index as recursion depth by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4954
  • chore: update dependencies by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/4887
  • feat: shared agent state hooks for ag-ui and langgraph by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4828
  • feat(react-generative-ui): add the fromSlackBlocks inbound converter by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4973
  • feat(eve): require eve 0.24 by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4974
  • feat(react-lexical): support lexical 0.47 by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4975
  • chore: upgrade oxfmt to 0.59 and apply its reformat by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4976
  • ci: split app and example builds into a separate job by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4977
  • fix(cli): use semver for doctor version checks by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4978
  • fix(cli): parse scaffold tsconfig as jsonc by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4979
  • feat(react-generative-ui): add a Teams Adaptive Cards outbound converter by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/4982
  • chore: update versions by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/4717
  • fix(assistant-stream): prevent object stream settlement after cancellation by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4988
  • fix(cli): include assistant-ui version in info by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4993
  • docs: fix ai sdk overview link by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4996
  • fix(cloud): normalize response timestamps by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4998
  • fix(react-pi): validate event stream content type by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5010
  • Revert "fix(cloud): normalize response timestamps" by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5015
  • ci: re-enable Fable 5 for Claude code review by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/5016
  • fix(core): handle failed composer appends by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4981
  • fix(react-google-adk): validate direct stream options by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5011
  • fix(examples): rotate waterfall collapse chevron when span is collapsed by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5014
  • fix(cli): sanitize scaffold tsconfigs and surface shadcn install failures by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5013
  • fix(cli): scaffold voice and interactables examples via the registry by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5021
  • fix(docs): sandbox hosted artifact previews by @AkhilTrivediX in https://github.com/assistant-ui/assistant-ui/pull/5020
  • fix(examples): sandbox the with-artifacts preview iframe by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5022
  • fix(cli): consistent base default for style-less registry resolution by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4990
  • feat(example): prove the chat-to-artifact work panel pattern by @samdickson22 in https://github.com/assistant-ui/assistant-ui/pull/4936
  • fix(docs): dual-flavor state selectors and accordion keyframes by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4987
  • fix(ui): route Base UI model-selector effort keys to cmdk by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4985
  • fix(react-mcp): validate persisted connection timeouts by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5029
  • fix(react-google-adk): validate stream response content type by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5031
  • fix(react-google-adk): validate session api responses by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5032
  • fix(cli): discover hoisted packages in doctor by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5041
  • fix(cli): resolve symlinked workspace paths by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5042
  • ci: fail claude-review when the run ends without posting the final review by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5026
  • fix(react-ai-sdk): persist history for pending tool approvals by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5051
  • fix(react-pi): validate HTTP response payloads by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5056
  • fix(react-ai-sdk): skip rewriting unchanged history after each run by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5052
  • fix: warn on unmapped cloud updates and document the update contract by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5058
  • feat(assistant-stream): rename ObjectStream to GorpStream with deprecated aliases by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5061
  • feat(assistant-stream): migrate gorp delta-tracking into GorpStream by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5063
  • feat(assistant-stream-py): SSE idle heartbeat, enabled by default (15s) by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5060
  • feat(assistant-stream-py): port gorp server core and rebase the Python state layer on it by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5062
  • fix(core): settle stopped thread runtime starts by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5066
  • fix(core): detect removed keys in shallow memoized state by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5067
  • fix(react): defer auto-scroll during top-anchored runs by @Gujiassh in https://github.com/assistant-ui/assistant-ui/pull/5059
  • docs: fix stale langchain links by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5068
  • python: consolidate on assistant-transport; remove gorp-named module and SSE dialect; rename state container to AssistantState by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5065
  • fix(react-ai-sdk): close late mcp clients after timeout by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5070
  • refactor(assistant-stream): single wire protocol (assistant-transport); remove gorp-shaped exports by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5064
  • chore: remove @assistant-ui/gorp (migrated into assistant-stream assistant-transport) by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5071
  • fix: formalize the AI SDK v7 line at 1.4 by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5075
  • test(cloud-ai-sdk): exercise the ai v6 leg of the peer union in CI by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5076
  • docs: codify the upstream-majors bump doctrine in AGENTS.md by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5077
  • fix(core): isolate voice session listener errors by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5078
  • fix(react-a2a): validate send message responses by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5082
  • ci(claude-review): simplify and improve review prompt by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/5035
  • feat(react): click blank composer space to focus the input by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/5083
  • fix(react-ai-sdk): serialize history persistence by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5087
  • fix(core): nested message runtime paths by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5091
  • fix(react-google-adk): validate artifact api responses by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5092
  • fix: clean up frame resources by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5096
  • fix: carry streamed tool-call partial_json onto LangGraph updates-event AIMessage by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5099
  • fix(react-langgraph): preserve streamed bedrock tool args by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5080
  • fix(core): mark a cancelled run incomplete when the adapter returns cleanly by @VihaanAgarwal in https://github.com/assistant-ui/assistant-ui/pull/5090
  • feat: add Electron integration guide by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4913
  • fix(react-ag-ui): preserve MCP host fields in tool results by @samdickson22 in https://github.com/assistant-ui/assistant-ui/pull/5095
  • feat(react-pi): map settled and appended events by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5030
  • fix(react-pi): widen pi-coding-agent peer range to include 0.79.x and 0.80.x by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5023
  • fix(react-pi): migrate node host to pi 0.80.8+ ModelRuntime API by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5105
  • fix(react-langgraph): handle queued run failures by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5108
  • ci(claude-review): run reviews on fork PRs via pull_request_target by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/5104
  • fix(core): handle failed local history loads by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5117
  • fix(core): generate portable cloud attachment ids by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5120
  • fix(react): tolerate transient part-type mismatch in part hooks by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5119
  • fix: mouse pointer on model selector thinking controls by @Nick-Lucas in https://github.com/assistant-ui/assistant-ui/pull/5123
  • fix(core): preserve part scopes during thread switches by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5127
  • fix(react-hook-form): keep form context in sync by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5128
  • fix(assistant-stream): cancel polyfilled iterators on early exit by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5129
  • fix(assistant-stream): prioritize backend tool results by @Solaris-star in https://github.com/assistant-ui/assistant-ui/pull/5107
  • fix(core): stop auto-submitting a parse-error result on divergent argsText close by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5132
  • fix(react-a2a): refresh runtime client on option changes by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5136
  • fix(assistant-stream): clean up tool abort listeners by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5141
  • fix(cloud-ai-sdk): preserve async tool callbacks by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5140
  • ci: review with Opus 5 at high effort, name the author model in review comment by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/5146
  • fix(react-lexical): delegate Tab to composer input plugins by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/5145
  • fix(cloud): align thread response contract by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5017
  • fix(react): preserve top anchor reserve between turns by @Gujiassh in https://github.com/assistant-ui/assistant-ui/pull/5085
  • fix(react-opencode): import useEffectEvent from use-effect-event ponyfill by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5139
  • fix(cloud): deduplicate concurrent auth requests by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5157
  • docs: replace DevTools screenshots with interactive live demos by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5161
  • fix(core): restrict assistant frame messages to the parent window by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5163
  • fix(react-streamdown): keep inline math that opens with a digit by @SiKreuz in https://github.com/assistant-ui/assistant-ui/pull/5160
  • fix(core): preserve isOptimistic on user messages in fromThreadMessageLike by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5122
  • fix(docs): single-flavor xulux demo downloads by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5033
  • fix(core): apply pending mute after voice setup by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5113
  • fix: avoid false copy success without a clipboard handler by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5089
  • fix: keep reasoning auto-scroll after a manual disclosure toggle by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5164
  • fix(react-pi): isolate shared streams by client by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5111
  • fix(assistant-stream): isolate resumable stream hooks by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5106
  • fix(core): support attachments without a File global by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5097
  • fix: preserve falsy runtime state by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5088
  • fix(react-ink): tolerate transient part type mismatches by @Gujiassh in https://github.com/assistant-ui/assistant-ui/pull/5133
  • docs(mcp-apps): document ag-ui tool result contract by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5114
  • fix(assistant-stream): guard stream task settlement by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5045
  • refactor(react-ag-ui): share interrupt-response validation between submitInterruptResponses and steerAway by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5025
  • fix(core): settle frame tool calls on dispose by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5081
  • fix(react-a2a): validate agent card responses by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5115
  • fix(core): refresh cloud history persistence on client change by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5126
  • fix(react-pi): isolate event listener errors by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5040
  • fix(ui): keyboard activation for radix attachment preview by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4986
  • fix(core): isolate thread runtime event listener errors by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5144
  • fix(react-ink): wrap ThreadListPrimitive.Items rows in ThreadListItemByIndexProvider with keys by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4885
  • fix(assistant-stream): validate UIMessageStream frames and clear args alias on tool-result by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5155
  • fix(assistant-stream): validate assistant-transport chunks and drop out-of-range part paths by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5152
  • fix(react-mcp): close connections completed after unmount by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5150
  • fix(react-ink): remount windowed Static scrollback on thread switch by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5043
  • fix(cloud): normalize base urls across auth strategies by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4846
  • fix(core): serialize local thread storage mutations by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4847
  • test(core): run compiler-sensitive hooks against built output by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5028
  • fix(ui): keep radix TabsTrigger asChild inside the primitive by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4984
  • feat(ui): polish attachment tile, remove button, and preview dialog by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/4983
  • fix(react-data-stream): report request failures through onError by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4903
  • fix(react-a2a): forward user attachments and file parts to the wire by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5036
  • fix(react-a2a): preserve history branches on load by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4968
  • fix(react): edit controlled assistant-visible inputs by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5168
  • refactor: Change externalId to optional in RemoteThreadInitializeResponse by @darreleng in https://github.com/assistant-ui/assistant-ui/pull/5034
  • fix(core): isolate composer runtime event listener errors by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5171
  • fix: only record firstTokenTime when a text-delta mutates a part by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5174
  • refactor: share parseDataUrl and httpUrlPattern from core internal by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5039
  • fix(assistant-stream): validate per-type chunk fields and drop wrong-part-type chunks by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5172
  • fix(assistant-stream): avoid duplicate initial object stream operations by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5044
  • fix(docs): restore source-linked package builds by @samdickson22 in https://github.com/assistant-ui/assistant-ui/pull/4994
  • fix(react-ai-sdk): stale useVercelAIThreadState name in sliceMessagesUntil error by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4948
  • fix(cloud-ai-sdk): correct README quickstart to render UIMessage parts by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4953
  • fix(core): preserve optimistic update order by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4958
  • fix(react-ai-sdk): pass initialized thread id to prepareSendMessagesRequest by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5178
  • test(react-ai-sdk): pin history append retry semantics by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5179
  • feat(example): add artifact workbench UX by @samdickson22 in https://github.com/assistant-ui/assistant-ui/pull/4934
  • fix(cloud-ai-sdk): retry interrupted history loads by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4872
  • fix(core): isolate public runtime event listeners by @Gujiassh in https://github.com/assistant-ui/assistant-ui/pull/5177
  • fix(assistant-stream): dedupe accumulator drop warnings per instance by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5176
  • fix(tap): create the scheduler MessageChannel lazily by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5181
  • fix(assistant-stream): guard gorp accumulator path navigation by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5142
  • fix(core): preserve latest thread switch by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5057
  • fix(core): keep composer attachments visible while their upload is in flight by @serhiizghama in https://github.com/assistant-ui/assistant-ui/pull/5112
  • fix(cloud-ai-sdk): retry failed title generation by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4874
  • fix(cloud-ai-sdk): reset chat state on cloud change by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5134
  • fix(cloud-ai-sdk): settle disabled thread loading by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5109
  • fix(tap): implement useMemoCache on tap's React dispatcher by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5182
  • refactor(eve): migrate convertEveMessage onto fromThreadMessageLike by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5183
  • refactor(cloud-ai-sdk): route thread action state writes through a shared commit guard by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5187
  • fix(core): isolate speech synthesis listener errors by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5137
  • feat(cloud): add project-wide thread and message listing to the cloud SDK by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4773
  • feat(tap): withKey accepts a Resource by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5186
  • fix(react-ai-sdk): wait for history before stream resume by @Gujiassh in https://github.com/assistant-ui/assistant-ui/pull/4947
  • chore: update dependencies by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5079
  • feat: add react native messages flatlist by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4805
  • fix(x-generative-compiler): give namespace-import toolkit spreads a specific compile error by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5188
  • feat(eve): require eve 0.27 by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5192
  • test(tap): caller-side keying in withKey resource tests by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5189
  • feat(react-lexical): support lexical 0.48 by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5193
  • feat(react-ai-sdk): expose chat state via runtime extras accessor hooks by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/4963
  • fix(react-ag-ui): apply mcp-apps activity snapshots to restored tool calls by @VihaanAgarwal in https://github.com/assistant-ui/assistant-ui/pull/5110
  • feat(react-pi): support pi 0.82 by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5196
  • refactor(tap): single-param ResourceElement by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5190
  • chore: upgrade oxfmt to 0.60 by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5197
  • Update README traction chart by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/5072
  • feat(tap): configurableResource by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5194
  • chore: update versions by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/5012
  • docs(store): re-parent Derived JSDoc; test(tap): phantom-typed TestFiber by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5199
  • feat(docs): add collapsible thread history to clone examples by @vivek100 in https://github.com/assistant-ui/assistant-ui/pull/4858
  • fix(core): persist LocalRuntime runs paused for tool approval by @serhiizghama in https://github.com/assistant-ui/assistant-ui/pull/5116
  • fix(assistant-stream): parse UIMessageStream frames with secure-json-parse by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5200
  • fix(assistant-stream): parse SSE and data-stream frames with secure-json-parse by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5206
  • fix(core): abort assistant frame tool calls by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5202
  • fix(tap): stop shipping react-shim declarations the exports map disclaims by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5207
  • chore: enable erasableSyntaxOnly + verbatimModuleSyntax in the shared tsconfig base by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5208
  • refactor(docs): dedupe base demo sidebar onto CloneThreadShell by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5209
  • feat(x-generative-compiler): name both sources in duplicate-tool-name warning by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5210
  • fix(react-native): keep MessagesFlatList following the bottom on viewport shrink by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5212
  • fix(composer): stop duplicate console.error on attachment-add rejection (#5215) by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5219
  • fix(core): stabilize cloud thread list adapters by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5224
  • feat(react-ag-ui): reconstruct mcp.app on restored tool-call parts (#5100) by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5225
  • fix(react): handle file picker attachment errors by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5227
  • fix(core): preserve thread-list position when switchToThread fetch settles after list by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5231
  • docs(skills): butflow review policy — approaches, not diffs by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5239
  • fix(assistant-stream): DataStreamChunkDecoder skips blank framing lines by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5236
  • fix(assistant-transport): mark commands delivered on chunk-less successful runs by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5238
  • docs: test policy — repro vs contract tests by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5244
  • fix(assistant-transport): empty follow-up run no-ops instead of erroring by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5241
  • fix(assistant-transport): consume parentId once per run by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5240
  • test: delete incident repro tests (core, react, assistant-stream) by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5245
  • feat(tap): drop configurableResource by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5235
  • fix(assistant-transport): onError reads live queue state, not a render snapshot by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5242
  • test(cloud-ai-sdk): dedupe unit tests against the contract suite by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5246
  • fix(assistant-transport): flush commands coalesced into a resume run by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5249
  • test(assistant-stream, react-streamdown): drop below-seam changeTree tests and export-smoke file by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5247
  • test(react-langgraph): dedupe reconcile tests; reframe regression-tagged suites as contracts by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5248
  • test(core): reframe regression-tagged titles as contracts by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5251
  • feat(external-thread): assistant-transport parity props and composer fixes by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5237
  • fix(core,store): warn instead of throw on recoverable inconsistencies (port of Athena hardening patches) by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5250
  • fix(assistant-transport): abort the in-flight run on unmount by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5243
  • test: drop react duplicates of core-owned suites (BaseSubscribable, auiV0Encode) by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5254
  • fix(external-thread): validate the adapter accept string on every addAttachment entry point by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5256
  • fix(external-thread): clearAttachments and reset call adapter.remove for pending attachments by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5257
  • test: fold react legacy-runtime suites into core (shouldContinue, convertExternalMessages, LocalThreadRuntimeCore) by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5255
  • fix(external-thread): stamp the thread head as parentId on queue-adapter sends by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5259
  • fix(external-thread): unset optional callbacks throw a capability error naming the missing prop by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5260
  • fix(external-thread): plumb the attachmentAdapter into edit composers by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5258
  • feat(core): per-tool overwrite escape hatch; same-priority tool conflicts throw again by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5263
  • test: fold react BaseComposerRuntimeCore suite into core, pruned by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5264
  • fix(core): restore repository duplicate-id throw; dedupe external-store messages at ingestion by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5262
  • fix(external-thread): merge a failed send back into the draft by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5261
  • test: fold react ExternalStoreThreadRuntimeCore suite into core, pruned by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5265
  • test: rewrite DataRenderers against the real store, prune react integration suites by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5266
  • test: prune framework adapter suites (react-ai-sdk, react-langchain, assistant-stream) by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5267
  • test: prune small package suites (cloud, react-pi, react-google-adk, react-a2a, react-data-stream) by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5268
  • chore: update versions by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/5203
  • Update README traction chart by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/5232
  • fix(cli): await async command handlers by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5272
  • fix(tap): useSyncExternalStore retains committed value when snapshot throws by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5274
  • feat(store): render-bound immutable aui instances by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5270
  • feat: property API for aui accessors by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5275
  • feat: drop v0.12-era deprecated APIs for v0.15 + migration guide by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5281
  • fix(core): cloud history adapter resolves aui through clientRef at call time by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5279
  • feat(store): opaque client identity via getClientId; drop instance deref by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5282
  • docs: property accessor sweep for guides and tap-docs by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5276
  • fix(assistant-stream): PlainTextEncoder emits assistant text only by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5278
  • chore: add missing changesets for the v0.15 train by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5285
  • chore: update versions by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/5273
  • fix(assistant-stream): settle the tool-call part on setResponse by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5284
  • fix(assistant-stream-py): canonicalize assistant-transport encoder wire shape by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5287
  • test(assistant-stream): cross-language interop fixture for assistant-transport by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5289
  • fix(core): keep replacement runs cancellable by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5295
  • fix(react-langgraph): honor RemoveMessage in updates events by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5293
  • feat(assistant-stream): python encoder support for file, annotations, and step chunks by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5294
  • ci: right-size 7 GitHub Actions runners by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5303
  • feat(store): optional state view — s.optional.<scope> resolves to undefined when unavailable by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5297
  • refactor: migrate internal source-guard selectors to s.optional by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5304
  • chore: drop private @assistant-ui/ui from migrate-optional-selectors changeset by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5305
  • chore: update versions by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/5286
  • fix(assistant-stream): guard tool-call args append against closed stream by @Solaris-star in https://github.com/assistant-ui/assistant-ui/pull/5296
  • fix(docs): pass tools client to AssistantRuntimeProvider in Artifacts example by @samdickson22 in https://github.com/assistant-ui/assistant-ui/pull/5299
  • fix(react-langgraph,react-langchain): forward audio parts and skip data parts by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5223
  • fix(react-ag-ui): preserve streaming across messages snapshots by @Gujiassh in https://github.com/assistant-ui/assistant-ui/pull/5311
  • fix(ui): keep ModelSelector popover side stable while filtering by @samdickson22 in https://github.com/assistant-ui/assistant-ui/pull/5300
  • fix(core): suppress controlled thread id echoes by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5230
  • feat: read the nested _meta.ui.resourceUri MCP Apps pointer by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5314
  • fix(react-a2a): forward audio and data parts and handle zero-byte data URLs by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5220
  • fix(react-ag-ui,react-google-adk): forward audio parts and skip data parts by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5315
  • feat: migrate to MCP TypeScript SDK v2 scoped packages by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5316
  • refactor(docs): serve /api/mcp through the v2 web-standard MCP transport by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5320
  • test(docs): pin the mcp header-leniency shim contract by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5326
  • fix(react-opencode): wire permissions to standard tool approvals by @nyl199310 in https://github.com/assistant-ui/assistant-ui/pull/5325
  • fix(react-a2a): cancel streams on early exit by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5302
  • refactor(core): move createRuntimeExtras to the react entry by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5329
  • feat: add pkg.pr.new previews by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/4713
  • fix(tap): accept reducer replays below the committed version instead of throwing by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5331
  • fix(react-pi): isolate event stream error callbacks by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5333
  • fix: case-insensitive data: scheme in ui kit and devtools preview parsing by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5323
  • fix: case-insensitive data: URL scheme in parseDataUrl and passthrough gates by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5318
  • feat(react-mcp): form-mode MCP elicitation, list-change refresh, cache config by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5334
  • docs: serve the artifacts demo from the deployed with-artifacts example by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5338
  • revert: "docs: serve the artifacts demo from the deployed with-artifacts example" by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5340
  • fix(react-mcp): elicitation seam follow-ups from #5339 by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5341
  • feat(react-generative-ui): add ./a2ui subpath (A2UI to UISpec) by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5344
  • ci: merge expo and ink deploy workflows by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5343
  • fix(docs): use bot icon for coding agent prompt by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5346
  • feat(react-ag-ui): render A2UI surfaces from a2ui-surface activity snapshots by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5345
  • feat(react-mcp): surface elicitation validation and seed drafts from schema defaults by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5342
  • fix(react-mcp): handle custom storage failures by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5347
  • fix(cloud-ai-sdk): handle finish callback failures by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5351
  • test: event-path contract tests for tap/store by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5366
  • refactor(store): drop redundant keys memo in useClientLookup by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5361
  • refactor(tap): hoist createTapRoot's scheduler out of dispatch by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5357
  • refactor(tap): shared throwAggregated error helper by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5358
  • refactor(store): single shared InferClientState type by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5356
  • fix(store): shallow-compare scope meta query instead of spreading deps by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5360
  • fix(store): derive assistant state proxy from the client via WeakMap by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5355
  • docs(store): trim AuiIf JSDoc and add a mount/unmount contract test by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5364
  • fix(store): replay-safe initial-data handles in useClientList by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5354
  • refactor(store): per-facet ValidateClient checks; require error accessor name by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5362
  • refactor(core): make Thread client importExternalState required by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5369
  • fix: proxy invariant violation in store client/state proxies by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5353
  • fix(tap): per-scheduler update-depth limit in UpdateScheduler by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5370
  • refactor(store): local useShallowStable helper, drop tap useMemoCache export by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5368
  • feat(store): AuiProvider isolation via aui={null}; fixed hook count in useAui by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5367
  • fix(react-google-adk): cancel streams on early exit by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5374
  • fix(tap): throw update-depth error from the scheduling markDirty by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5375
  • refactor: adopt React's useEffectEvent for latest-client reads by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5312
  • refactor(store): two-mode useAui — pure React for Derived-only hosts, tap root only for root scopes by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5373
  • feat(react-ag-ui): rehydrate A2UI surfaces from restored history by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5352
  • fix(react-mcp): resolve empty elicitation drafts to the unanswered state by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5377
  • feat(ui): scroll follow-up suggestion pills with edge fades by @AVGVSTVS96 in https://github.com/assistant-ui/assistant-ui/pull/5147
  • fix(react-generative-ui): narrow convertSurfaceToUISpec return to UIElement by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5383
  • refactor(store): inline useAui helper hooks by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5380
  • perf(store): simplify useAui notification plumbing by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5385
  • feat(react-ag-ui): send A2UI actions back over forwardedProps by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5386
  • fix(ui): let defaultOpen decide the reasoning resting state by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5387
  • chore: update versions by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/5306
  • docs(store): fix drift against current store source and document s.optional by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5388
  • fix(react-langgraph): route the values-path reconcile through appendMessage by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5390
  • feat: make assistant-ui installable in an eve app with eve add by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5397
  • fix(tap): re-add deprecated useMemoCache export by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5399
  • docs: explain that only the last message part reports running by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5400
  • feat(docs): step-based code slideshow for the tap tutorial by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5398
  • docs(tap): revise tap documentation content by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5402
  • fix(core): reset copied feedback timer by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5404
  • feat(core): honour a supplied per-part status while the message is running by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5403
  • fix(core): derive group status from member statuses instead of the last member by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5410
  • feat(react-ai-sdk): map text and reasoning part state onto the per-part status by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5413
  • fix(cloud): enumerate the attachment content fields aui/v0 persists by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5419
  • feat(react-opencode): project Task child sessions by @nyl199310 in https://github.com/assistant-ui/assistant-ui/pull/5412
  • chore: update versions by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/5392
  • fix(react-langgraph): report loading on initial thread frame by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5428
  • fix(react-opencode): avoid repeated child session scans by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5431
  • ci: scope autofix and claude review to prs targeting main by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5436
  • fix(react-ai-sdk,eve): forward audio parts instead of throwing by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5441
  • feat(core,react-langgraph,react-langchain): sourceType opt-in on file message parts by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5439
  • fix(react-langchain,react-langgraph): carry audio through file parts by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5444
  • feat(docs): open source project index at /oss by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5446
  • docs(core,react): deprecate Unstable_AudioMessagePart in favour of file parts by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5447
  • fix(ui): handle url file parts in File download and size by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5443
  • fix(react-ai-sdk): wrap bare base64 file and image payloads in a data url by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5452
  • feat(core,react-a2a,react-ag-ui,react-google-adk): honor sourceType "url" in remaining file converters by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5445
  • fix(react-google-adk): stop mangling file parts with an audio mime type by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5456
  • fix(react): refresh mcp app resources after host changes by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5432
  • fix(react-opencode): wrap a file payload that is not a parsable url by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5459
  • fix(react-ag-ui): convert file parts placed directly in message content by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5461
  • fix(assistant-stream,react-data-stream): carry a file part filename to the model message by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5463
  • fix(docs): stop the header star flicker and calm the heatmap by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5460
  • fix(react-ai-sdk): detect the media type of a bare base64 image by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5466
  • fix(docs): cover the missing pages in the sitemap by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5475
  • fix(react-opencode): send image parts as file parts so they reach the model by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5468
  • fix(docs): index the tap docs everywhere the main docs are indexed by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5478
  • fix(docs): drop the public cache bypass on the stats pages by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5483
  • fix(react-ai-sdk,react-opencode): converge the image media type ladder by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5479
  • refactor(core): share the media type ladder and wire url between adapters by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5485
  • fix(react-opencode): align pending message fingerprints by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5480
  • fix(react-ai-sdk): pass null-body-status responses through the resumable fetch wrapper by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5337
  • fix(react-ai-sdk): scope resumable stream id storage key per thread by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5332
  • feat(react-ai-sdk): support resumable storage updates by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5336
  • fix(react-opencode): stop fingerprinting parts the outbound path never sends by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5491
  • fix(react-opencode): project user file parts as message attachments by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5490
  • feat(react-opencode): add OpenCodeAttachmentAdapter for native file inputs by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5492
  • fix(ui): honor file part sourceType in File download and size by @ShobhitPatra in https://github.com/assistant-ui/assistant-ui/pull/5473
  • fix(core): prevent removed attachments from reappearing by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5233
  • fix(docs): center sidebar indent line under section icons by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5434
  • fix(react-langchain,react-langgraph): surface audio transcripts by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5503
  • fix(react-langchain,react-langgraph): preserve file attachment filenames by @Gujiassh in https://github.com/assistant-ui/assistant-ui/pull/5504
  • fix(store): preserve notification state in StrictMode by @nyl199310 in https://github.com/assistant-ui/assistant-ui/pull/5411
  • fix(core,react): preserve composer draft when suggestion send fires mid-run by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5417
  • feat(docs): report Core Web Vitals with Vercel Speed Insights by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5508
  • feat(docs): redesign the landing and packages pages, move onto Base UI by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5514
  • fix(react-pi): isolate thread controller subscribers by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5518
  • fix(react-opencode): isolate thread controller subscribers by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5520
  • fix(react-langgraph): make cancelRun a hard stop by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5525
  • feat(core): add the in-place refetch contract behind threads.reloadMainThread() by @taoche in https://github.com/assistant-ui/assistant-ui/pull/5522
  • fix(assistant-stream): guard pending tool settlement after cancellation by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5521
  • fix(assistant-stream): close out tool calls that have no result by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5535
  • fix: keep a settled tool call distinguishable from an unfinished one by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5537
  • chore(docs): refresh the model list to the cheapest current models by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5538
  • fix(react-langgraph): preserve sends racing load and cancellation by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5530
  • feat(react-langgraph): adopt the in-place refetch capability by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5531
  • fix(safe-content-frame): surface iframe content load errors by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5539
  • feat(core,react,ui): per-thread run state and thread list rename by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5542
  • fix(react-langgraph): let cancelRun end a run whose stream hangs by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5543
  • fix(react-google-adk): keep message ids stable across event replays by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5544
  • feat(react-google-adk): refetch the session in place for reloadMainThread by @okisdev in https://github.com/assistant-ui/assistant-ui/pull/5545
  • chore: update versions by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/5429
  • fix(core): handle failed initial thread runtime starts by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5552
  • fix(cloud): validate anonymous auth token responses by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5555
  • fix: restore UI Builder runtime context by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5556
  • fix: keep navbar submenu above banner by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5558
  • fix(react-data-stream): report cancellation during request setup by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5563
  • feat(assistant-stream): add opt-in strict=false lenient decoding mode by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5565
  • fix(react): skip add-message commands with no supported parts by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5566
  • docs: add runtime thread refetch support by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5567
  • chore: update versions by @github-actions[bot] in https://github.com/assistant-ui/assistant-ui/pull/5554
  • fix(core): preserve falsy tool results by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5569
  • fix(react-a2a): preserve replacement run state by @Kinfe123 in https://github.com/assistant-ui/assistant-ui/pull/5570
  • chore: update next to 16.3 by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5571
  • fix: defer blob URL revocation until after download click by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5420
  • fix: fall back to attachment type for extension-less filenames in AttachmentThumb by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5421
  • feat(assistant-stream): public RunController.flush() by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5574
  • fix(ui): restore rtl support in the base sidebar flavor by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5474
  • fix(ui): keep Radix tooltips instant after shadcn replacement (#5575) by @rupic-app[bot] in https://github.com/assistant-ui/assistant-ui/pull/5576
  • feat(store): AuiProvider extends/config grammar with dev-enforced nesting decision by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5430
  • fix(react): compose SelectionToolbarRoot onMouseDown with composeEventHandlers by @ephraimduncan in https://github.com/assistant-ui/assistant-ui/pull/5418
  • chore(python): assistant-stream 0.0.35 by @Yonom in https://github.com/assistant-ui/assistant-ui/pull/5578

New Contributors

  • @ephraimduncan made their first contribution in https://github.com/assistant-ui/assistant-ui/pull/4479
  • @Kinfe123 made their first contribution in https://github.com/assistant-ui/assistant-ui/pull/4536
  • @naamanu made their first contribution in https://github.com/assistant-ui/assistant-ui/pull/4614
  • @GuYounes made their first contribution in https://github.com/assistant-ui/assistant-ui/pull/4740
  • @rupic-app[bot] made their first contribution in https://github.com/assistant-ui/assistant-ui/pull/4768
  • @DLOVRIC2 made their first contribution in https://github.com/assistant-ui/assistant-ui/pull/4806
  • @AkhilTrivediX made their first contribution in https://github.com/assistant-ui/assistant-ui/pull/5020
  • @VihaanAgarwal made their first contribution in https://github.com/assistant-ui/assistant-ui/pull/5090
  • @Nick-Lucas made their first contribution in https://github.com/assistant-ui/assistant-ui/pull/5123
  • @Solaris-star made their first contribution in https://github.com/assistant-ui/assistant-ui/pull/5107
  • @SiKreuz made their first contribution in https://github.com/assistant-ui/assistant-ui/pull/5160
  • @darreleng made their first contribution in https://github.com/assistant-ui/assistant-ui/pull/5034
  • @nyl199310 made their first contribution in https://github.com/assistant-ui/assistant-ui/pull/5325
  • @taoche made their first contribution in https://github.com/assistant-ui/assistant-ui/pull/5522 Full Changelog: https://github.com/assistant-ui/assistant-ui/compare/pypi/[email protected]/[email protected]

Aug 3, 2026

32 packages

@assistant-ui/cloud-ai-sdk@0.1.29patchGitHub →
@assistant-ui/core@0.3.5patchGitHub →

Fixes

1
fixhandle stopped initial thread runtime starts
@assistant-ui/core@0.3.4patchGitHub →

Features

5
featsourceType opt-in on file message parts so attachment adapters can send url/id file references
feathonor sourceType "url" in a2a, ag-ui, and adk file converters
featexpose threadListItem.isRunning so a thread list row can show its own run
featadd the in-place refetch contract behind threads.reloadMainThread. A runtime opts in with unstable_refetchThread on ThreadRuntimeCore, which an external store supplies through the new ExternalStoreAdapter.onRefetchThread (unrelated to onReload, which re-generates an assistant message) and which surfaces as RuntimeCapabilities.refetchThread, reporting which mechanism a call would take rather than whether it does anything. Runtimes that opt in keep their runtime identity, so composer drafts survive and messages stay rendered while the refetch runs; the rest fall back to remounting the runtime hook. Core does not stop a run in progress before calling the capability: doing that means cancelRun, whose contract is that the user abandoned a send, so it returns the trailing user message to the composer. An implementation owns whatever coordination a concurrent run needs.
featadd threads.reloadMainThread to refetch the open thread's remote state in place

Fixes

5
fixprevent canceled attachment uploads from reappearing and settle failed removals as attachment errors
fixwrap a file part payload that is not a parsable url
fixkeep a settled tool call distinguishable from an unfinished one, so a tool returning false, 0, "" or null no longer loses its result on the cloud round trip and no longer reads as never completed
fixread an image's media type from its leading bytes in both adapters
fixsuggestion trigger with send no longer overwrites the composer draft while a run is in progress; on runtimes without queue support it now renders disabled mid-run, matching ComposerPrimitive.Send

Refactors

1
refactorshare the media type ladder and wire url between adapters

Docs

1
docsdeprecate Unstable_AudioMessagePart in favour of file parts
@assistant-ui/core@0.3.3patchGitHub →

Features

1
feathonour a supplied per-part status while the message is running

Fixes

3
fixenumerate the attachment content fields the aui/v0 encoder persists so per-part status stays out of the stored shape
fixkeep copied feedback visible for the full duration after repeated copies
fixkeep grouped and detached part statuses in sync
@assistant-ui/eve@0.0.7patchGitHub →

Fixes

1
fix· eveforward audio message parts as file parts and skip data parts instead of throwing
@assistant-ui/react@0.15.4patchGitHub →

Features

1
featadd opt-in strict: false mode that reconciles malformed stream input instead of throwing (decoders, state accumulator); assistant-transport resume runs always decode leniently

Fixes

1
fixskip add-message commands with no supported parts in assistant transport runtime
@assistant-ui/react@0.15.3patchGitHub →

Features

3
featsourceType opt-in on file message parts so attachment adapters can send url/id file references
featexpose threadListItem.isRunning so a thread list row can show its own run
featadd threads.reloadMainThread to refetch the open thread's remote state in place

Fixes

3
fixrefresh MCP App resources when the host changes
fixkeep a settled tool call distinguishable from an unfinished one, so a tool returning false, 0, "" or null no longer loses its result on the cloud round trip and no longer reads as never completed
fixsuggestion trigger with send no longer overwrites the composer draft while a run is in progress; on runtimes without queue support it now renders disabled mid-run, matching ComposerPrimitive.Send

Docs

1
docsdeprecate Unstable_AudioMessagePart in favour of file parts
@assistant-ui/react@0.15.2patchGitHub →

Fixes

1
fixenumerate the attachment content fields the aui/v0 encoder persists so per-part status stays out of the stored shape

Refactors

1
refactorshare the part status derivation with core
@assistant-ui/react-a2a@0.2.26patchGitHub →

Features

1
feathonor sourceType "url" in a2a, ag-ui, and adk file converters
@assistant-ui/react-ag-ui@0.0.50patchGitHub →

Features

1
feathonor sourceType "url" in a2a, ag-ui, and adk file converters

Fixes

1
fixconvert file parts placed directly in message content
@assistant-ui/react-ai-sdk@1.4.4patchGitHub →

Features

2
featresume stream ids discovered after the chat runtime mounts
featallow the resumable stream id storage key to be derived lazily from a getter, so apps can scope it per thread (see the Resumable Streams guide)

Fixes

6
fix· react-ai-sdkforward audio message parts as file parts instead of throwing
fixwrap bare base64 file and image payloads in a data URL envelope
fixdetect the media type of a bare base64 image instead of assuming png
fixwrap a file part payload that is not a parsable url
fixpass null-body-status responses through the resumable fetch wrapper instead of reconstructing them, avoiding a TypeError on WebKit when a 204/205/304 carries a non-null empty body
fixread an image's media type from its leading bytes in both adapters

Refactors

1
refactorshare the media type ladder and wire url between adapters
@assistant-ui/react-ai-sdk@1.4.3patchGitHub →

Features

1
featmap AI SDK text and reasoning part state onto the per-part status
@assistant-ui/react-data-stream@0.12.24patchGitHub →

Fixes

1
fixreport cancellations that occur while resolving request options
@assistant-ui/react-data-stream@0.12.23patchGitHub →

Fixes

1
fixcarry a file part's filename through to the model message
@assistant-ui/react-google-adk@0.0.21patchGitHub →

Features

2
feathonor sourceType "url" in a2a, ag-ui, and adk file converters
featthreads.reloadMainThread refetches an ADK session in place

Fixes

2
fixstop mangling file parts that carry an audio mime type
fixa message keeps its id when its event is replayed
@assistant-ui/react-langchain@0.0.23patchGitHub →

Features

1
featsourceType opt-in on file message parts so attachment adapters can send url/id file references

Fixes

3
fixsurface an audio response transcript instead of rendering a blank message
fixcarry audio through file message parts in both converter directions
fixpreserve file attachment filenames in LangChain blocks
@assistant-ui/react-langgraph@0.14.19patchGitHub →

Features

2
featsourceType opt-in on file message parts so attachment adapters can send url/id file references
featregister onRefetchThread, so threads.reloadMainThread refetches in place instead of remounting the runtime hook. The load effect body moves into a shared runLoad(purpose) with one AbortController per in-flight load, and a refetch goes through the same load boundary the initial load already uses, so it merges into whatever a run has produced since rather than replacing it. A run in progress is left alone: it is neither cancelled nor reset, because the merge already decides what each side keeps. A refetch that arrives while the initial load is still in flight defers to it, a new run supersedes an in-flight refetch, and one still in flight at unmount is aborted.

Fixes

7
fixreport thread loading on the first render frame
fixcancelRun now settles a run whose stream hangs instead of yielding
fix· react-langgraphpreserve sends racing thread load and cancellation
fixsurface an audio response transcript instead of rendering a blank message
fixcarry audio through file message parts in both converter directions
fixmake cancelRun a hard stop. the abort signal is handed to the caller's stream, so a callback that does not check it kept feeding chunks into the thread after cancellation; the consume loop now stops on its own.
fixpreserve file attachment filenames in LangChain blocks
@assistant-ui/react-langgraph@0.14.18patchGitHub →

Fixes

1
fixroute the values-path message reconcile through appendMessage
@assistant-ui/react-mcp@0.1.3patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-mcp@0.1.2patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-mcp@0.1.1patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-o11y@0.0.33patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-o11y@0.0.32patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-opencode@0.2.17patchGitHub →

Features

1
featadd OpenCodeAttachmentAdapter, converting browser files into attachments that preserve OpenCode's native file semantics

Fixes

8
fixavoid repeated child session scans during streaming
fixproject user file parts as message attachments instead of inline content, for server, pending, and shadow copies alike
fixwrap a file part payload that is not a parsable url
fixsend image parts as file parts so they reach the model
fixstop fingerprinting audio and data parts the outbound path never sends, so their pending copies reconcile with the server echo
fixreconcile pending file messages after OpenCode normalizes their wire URLs
fixisolate thread controller subscriber errors
fixread an image's media type from its leading bytes in both adapters

Refactors

1
refactorshare the media type ladder and wire url between adapters
@assistant-ui/react-opencode@0.2.16patchGitHub →

Features

1
featproject OpenCode Task child sessions as nested messages
@assistant-ui/react-pi@0.0.12patchGitHub →

Fixes

1
fixisolate thread controller subscriber failures
@assistant-ui/store@0.3.3patchGitHub →

Fixes

1
fixprevent Composer updates from being lost under React StrictMode
@assistant-ui/tap@0.9.9patchGitHub →

Other

1
miscre-add the deprecated useMemoCache export for older @assistant-ui/store versions
assistant-cloud@0.1.38patchGitHub →

Fixes

1
fixvalidate successful anonymous authentication responses before use
assistant-stream@0.3.33patchGitHub →

Features

1
featadd opt-in strict: false mode that reconciles malformed stream input instead of throwing (decoders, state accumulator); assistant-transport resume runs always decode leniently
assistant-stream@0.3.32patchGitHub →

Fixes

4
fixprevent pending frontend tool output from enqueuing after stream cancellation
fixcarry a file part's filename through to the model message
fixkeep a settled tool call distinguishable from an unfinished one, so a tool returning false, 0, "" or null no longer loses its result on the cloud round trip and no longer reads as never completed
fixsynthesize a result for tool calls that have none, so a thread holding a cancelled or abandoned tool call no longer breaks every later run
safe-content-frame@0.0.26patchGitHub →

Fixes

1
fixsurface iframe content load errors instead of reporting a timeout

Jul 30, 2026

18 packages

@assistant-ui/cloud-ai-sdk@0.1.28patchGitHub →

Fixes

1
fixpreserve AI SDK finish callback error handling
@assistant-ui/core@0.3.2patchGitHub →

Features

1
featAuiProvider accepts value={null} as an isolation boundary; useAui runs a fixed hook count per overload and deprecates the explicit-parent config

Fixes

3
fixsuppress onThreadIdChange callbacks for prop-driven thread switches
fixaccept case-insensitive data: URL schemes and normalize parsed mime types to lowercase
fixparse zero-byte base64 payloads in parseDataUrl

Refactors

3
refactormove createRuntimeExtras to the @assistant-ui/core/react entry and drop the internal re-export
refactormake Thread client importExternalState required
refactorimport useEffectEvent from React directly for latest-client reads and drop the use-effect-event ponyfill dependency
@assistant-ui/mcp-docs-server@0.2.0minorGitHub →

Features

1
featmigrate to MCP TypeScript SDK v2 scoped packages (@modelcontextprotocol/client, @modelcontextprotocol/core, @modelcontextprotocol/server), replacing the monolithic @modelcontextprotocol/sdk 1.x dependency
@assistant-ui/react-a2a@0.2.25patchGitHub →

Fixes

3
fixcancel A2A response streams when consumers stop iteration early
fixforward audio and data parts to the wire and pass unparseable data URLs through as URLs
fixaccept case-insensitive data: URL schemes and normalize parsed mime types to lowercase

Refactors

1
refactormove createRuntimeExtras to the @assistant-ui/core/react entry and drop the internal re-export
@assistant-ui/react-ag-ui@0.0.49patchGitHub →

Features

4
featsend A2UI actions back to the agent as forwardedProps.a2uiAction on the next run
featread the canonical nested _meta.ui.resourceUri MCP Apps pointer, keeping the deprecated flat "ui/resourceUri" key as a fallback
featconsume a2ui-surface activity snapshots and render A2UI surfaces as present tool-call parts
featrehydrate A2UI surfaces from restored activity history

Fixes

2
fixforward audio message parts and skip data parts instead of dropping or throwing
fixkeep streaming across mid-run MESSAGES_SNAPSHOT imports. The active assistant is preserved and re-anchored when the snapshot omits it, and when a snapshot shape still evicts it, the placeholder is recreated under its original id on the next content-bearing emit, so neither the token stream nor the message identity is lost.

Refactors

1
refactormove createRuntimeExtras to the @assistant-ui/core/react entry and drop the internal re-export
@assistant-ui/react-ai-sdk@1.4.2patchGitHub →

Features

1
featread the canonical nested _meta.ui.resourceUri MCP Apps pointer, keeping the deprecated flat "ui/resourceUri" key as a fallback

Fixes

1
fixaccept case-insensitive data: URL schemes and normalize parsed mime types to lowercase

Refactors

1
refactormove createRuntimeExtras to the @assistant-ui/core/react entry and drop the internal re-export
@assistant-ui/react-devtools@1.2.12patchGitHub →

Fixes

1
fixcase-insensitive data: and http(s) scheme checks in preview parsing
@assistant-ui/react-generative-ui@0.0.11patchGitHub →

Features

1
featadd react-free ./a2ui subpath with an A2UI operation reducer and UISpec converter

Fixes

1
fixnarrow the convertSurfaceToUISpec return type to UIElement, matching what the converter can produce
@assistant-ui/react-google-adk@0.0.20patchGitHub →

Fixes

2
fixforward audio message parts and skip data parts instead of dropping or throwing
fixcancel Google ADK streams when iteration stops early

Refactors

1
refactormove createRuntimeExtras to the @assistant-ui/core/react entry and drop the internal re-export
@assistant-ui/react-langchain@0.0.22patchGitHub →

Fixes

1
fixforward audio parts as base64 audio blocks and skip data parts instead of throwing

Refactors

1
refactormove createRuntimeExtras to the @assistant-ui/core/react entry and drop the internal re-export
@assistant-ui/react-langgraph@0.14.17patchGitHub →

Fixes

1
fixforward audio parts as base64 audio blocks and skip data parts instead of throwing

Refactors

1
refactormove createRuntimeExtras to the @assistant-ui/core/react entry and drop the internal re-export
@assistant-ui/react-mcp@0.1.0minorGitHub →

Features

2
featmigrate to MCP TypeScript SDK v2 scoped packages (@modelcontextprotocol/client, @modelcontextprotocol/core, @modelcontextprotocol/server), replacing the monolithic @modelcontextprotocol/sdk 1.x dependency
featform-mode MCP elicitation (pending state, answerElicitation, unstyled McpElicitationPrimitive namespace), tool list-change auto-refresh, and cache.defaultTtlMs response cache configuration

Fixes

4
fix· react-mcpresolve empty elicitation drafts to the unanswered state
fixhonor boolean schema defaults in elicitation seeding, flag mistyped boolean drafts as invalid, and add an elicitation: false opt-out
fixsurface elicitation validation on the pending item (stay-pending accept errors and McpElicitationPrimitive.Error), seed drafts from schema defaults
fixhandle custom MCP server storage failures
@assistant-ui/react-o11y@0.0.31patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-opencode@0.2.15patchGitHub →

Fixes

1
fixconnect OpenCode permissions to standard tool approvals

Refactors

2
refactormove createRuntimeExtras to the @assistant-ui/core/react entry and drop the internal re-export
refactorimport useEffectEvent from React directly for latest-client reads and drop the use-effect-event ponyfill dependency
@assistant-ui/react-pi@0.0.11patchGitHub →

Fixes

2
fixaccept case-insensitive data: URL schemes and normalize parsed mime types to lowercase
fixkeep event streams reconnecting when error callbacks fail

Refactors

2
refactormove createRuntimeExtras to the @assistant-ui/core/react entry and drop the internal re-export
refactorimport useEffectEvent from React directly for latest-client reads and drop the use-effect-event ponyfill dependency
@assistant-ui/store@0.3.2patchGitHub →

Features

1
featAuiProvider accepts value={null} as an isolation boundary; useAui runs a fixed hook count per overload and deprecates the explicit-parent config

Fixes

1
fixreport proxy properties as configurable so Object.keys, spread, and Object.getOwnPropertyDescriptor on clients and the proxied assistant state no longer throw the proxy invariant TypeError

Performance

1
perfsimplify useAui notification and effect plumbing

Refactors

3
refactorinline single-call-site useAui helper hooks
refactor· storelocal useShallowStable helper replaces tap useMemoCache; drop useMemoCache from tap's public entrypoint
refactorimport useEffectEvent from React directly for latest-client reads and drop the use-effect-event ponyfill dependency

Other

7
miscAuiIf: trim JSDoc and add a mount/unmount contract test
miscuseClientList: clear initial-data handles on commit instead of during render so discarded renders can replay
miscuseClientLookup: derive the key-to-index map from the validated element keys and drop the redundant keys memo
miscuseAuiState: derive the assistant state proxy from the client via a WeakMap so hand-built clients no longer yield an undefined selector argument
miscuseAui: memoize scope meta via shallow equality on the query object instead of a spread deps array, so query key-count changes are detected reliably
miscShare a single InferClientState type across useClientResource, useClientLookup, and useClientList
miscValidateClient: restructure into independent per-facet checks; createErrorClientAccessor now requires the scope name
@assistant-ui/tap@0.9.8patchGitHub →

Fixes

2
fixcount update depth per scheduler in UpdateScheduler and drop only the offending scheduler from a flush, so one looping root no longer starves or wedges unrelated roots
fixaccept reducer replays below the committed version instead of throwing

Refactors

1
refactor· storelocal useShallowStable helper replaces tap useMemoCache; drop useMemoCache from tap's public entrypoint

Other

3
miscThe update-depth error now throws from the markDirty that schedules the run past the limit, so the stack points at the offending setState.
misccreateTapRoot: reuse a single per-root UpdateScheduler across dispatches and assert without applying first
miscDeduplicate the rethrow-or-AggregateError error handling into a shared internal helper
assistant-stream@0.3.31patchGitHub →

Fixes

2
fixDataStreamDecoder drops tool-call args deltas for an already-closed args stream instead of crashing mid-decode when a text delta interleaves between a tool call's begin and its args
fixaccept case-insensitive data: URL schemes and normalize parsed mime types to lowercase

Jul 29, 2026

7 packages

@assistant-ui/core@0.3.1patchGitHub →

Fixes

1
fixkeep replacement runs cancellable after superseded runs settle

Refactors

1
refactorinternal selectors read optional scopes via s.optional.part instead of guarding on aui.part.source
@assistant-ui/react@0.15.1patchGitHub →

Refactors

1
refactorinternal selectors read optional scopes via s.optional.part instead of guarding on aui.part.source
@assistant-ui/react-langgraph@0.14.16patchGitHub →

Fixes

1
fixhonor LangChain RemoveMessage (type: "remove") in updates events instead of crashing
@assistant-ui/react-mcp@0.0.22patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-o11y@0.0.30patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/store@0.3.1patchGitHub →

Features

1
featoptional state view — s.optional.<scope> resolves to undefined when the scope is unavailable instead of throwing, so useAuiState((s) => s.optional.threadListItem?.remoteId) works outside a thread list item. The base state stays non-optional and keeps throwing on unavailable scopes.
assistant-stream@0.3.30patchGitHub →

Fixes

1
fixaddToolCallPart({response}) settles the tool-call part so the stream closes

Jul 28, 2026

51 packages

@assistant-ui/cloud-ai-sdk@0.1.27patchGitHub →

Other

1
miscAdopt erasableSyntaxOnly; public enums are now as const objects.
@assistant-ui/core@0.3.0minorGitHub →

Features

4
featproperty API for aui — nullary scope accessors are now properties (aui.thread.getState instead of aui.thread.getState); calling them still works but is deprecated. Accessors keep source/query/name selection metadata as properties; these are reserved names for scope methods. An unavailable scope's accessor no longer throws at selection time: aui.thread always succeeds and is always truthy, .source is null, and any other property read (or a call) throws — check availability via aui.thread.source != null. Accessor identity is binding-keyed: stable across renders without structural change, new on structural change — memoization keyed on an accessor now invalidates exactly when its binding changes.
featdrop APIs deprecated in v0.12/v0.14 — the legacy context hooks (useAssistantRuntime, useThreadRuntime, useThread, useMessageRuntime, useMessage, useComposerRuntime, useComposer, useMessagePartRuntime, useMessagePart, useAttachmentRuntime, useAttachment, useThreadListItemRuntime, useThreadListItem, useThreadList, useEditComposer and their attachment variants; use useAui / useAuiState), the component-only ToolsState.tools map (use toolUIs), and the "mcp-app" group key in groupPartByType (use "standalone-tool-call"). See the v0.15 migration guide.
featgetClientId(client) returns an opaque, WeakMap-legal identity for a bound client — the same object regardless of accessor wrapping depth. The cloud message persistence cache is now keyed on it instead of the per-mount accessor proxy. Removes unwrapClientAccessor and getBoundClient (introduced and replaced pre-release, never published).
featrender-bound immutable aui instances — derived scopes resolve to client instances during render and are frozen into the returned client; structural swaps produce a new client through React while value updates never change client identity. Removes the PartByIndexProvider lastPartRef guards and the useClientLookup stale-index clamp.

Fixes

1
fixcloud history adapter resolves the aui client at call time instead of capturing the client from the first render
@assistant-ui/core@0.2.23patchGitHub →

Features

1
featExternalThread props for assistant-transport (isLoading, state, extras, onResume, onAddToolResult, onLoadExternalState, onResumeToolCall, attachmentAdapter; importExternalState); export ToolInvocationTracker from core internal; composer parentId, draft-restore, and part-status fixes

Fixes

5
fixabort pending AssistantFrame tool calls when their run is cancelled
fixExternalThread validates the adapter accept string on every addAttachment entry point
fix· corepersist LocalRuntime runs paused for tool approval
fix· corepreserve thread-list position when switchToThread's on-demand fetch settles after a concurrent list
fixavoid reloading Cloud thread lists on unchanged runtime rerenders

Other

4
miscRestore the MessageRepository duplicate-id throw (it detects internal corruption); duplicate ids in an external-store messages array are now deduped at ingestion with a warning, keeping the last occurrence.
miscWarn instead of throw on recoverable inconsistencies: duplicate same-priority tool registrations merge with the latest registration taking precedence, duplicate message ids skip linking, stale client lookup indices are clamped, and null tool names in tool result messages are tolerated.
miscAdopt erasableSyntaxOnly; public enums are now as const objects.
miscSame-priority duplicate tool registrations throw again. The Tool type gains an optional overwrite flag (discouraged escape hatch) that lets a later registration silently replace a same-priority tool of the same name; the flag is stripped from the merged output.
@assistant-ui/eve@0.0.6patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/next@0.0.13patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react@0.15.0minorGitHub →

Features

2
featproperty API for aui — nullary scope accessors are now properties (aui.thread.getState instead of aui.thread.getState); calling them still works but is deprecated. Accessors keep source/query/name selection metadata as properties; these are reserved names for scope methods. An unavailable scope's accessor no longer throws at selection time: aui.thread always succeeds and is always truthy, .source is null, and any other property read (or a call) throws — check availability via aui.thread.source != null. Accessor identity is binding-keyed: stable across renders without structural change, new on structural change — memoization keyed on an accessor now invalidates exactly when its binding changes.
featdrop APIs deprecated in v0.12/v0.14 — the legacy context hooks (useAssistantRuntime, useThreadRuntime, useThread, useMessageRuntime, useMessage, useComposerRuntime, useComposer, useMessagePartRuntime, useMessagePart, useAttachmentRuntime, useAttachment, useThreadListItemRuntime, useThreadListItem, useThreadList, useEditComposer and their attachment variants; use useAui / useAuiState), the component-only ToolsState.tools map (use toolUIs), and the "mcp-app" group key in groupPartByType (use "standalone-tool-call"). See the v0.15 migration guide.
@assistant-ui/react@0.14.29patchGitHub →

Features

1
featExternalThread props for assistant-transport (isLoading, state, extras, onResume, onAddToolResult, onLoadExternalState, onResumeToolCall, attachmentAdapter; importExternalState); export ToolInvocationTracker from core internal; composer parentId, draft-restore, and part-status fixes

Fixes

16
fix· assistant-transporta follow-up run that finds an empty command queue no-ops instead of erroring "No commands to send"
fixassistant-transport marks in-transit commands delivered when a run completes successfully without state chunks, instead of leaving them pending forever
fix· assistant-transportonError reads the live in-transit commands at error time instead of a stale render snapshot
fixassistant-transport consumes parentId once per run; later unrelated runs no longer re-send the last append's parentId
fix· assistant-transportcommands enqueued during a resume run are flushed in a follow-up run instead of starving in the queue
fix· assistant-transportabort the in-flight run on unmount instead of leaking the fetch
fixstop logging attachment-add rejections to the console from ComposerPrimitive.AttachmentDropzone and ComposerPrimitive.Input; the rejection is already surfaced via the structured composer.attachmentAddError event, so the per-file console.error produced unopt-outable duplicate noise for apps handling the event
fixExternalThread validates the adapter accept string on every addAttachment entry point
fixExternalThread clearAttachments/reset call adapter.remove for pending attachments
fixExternalThread edit composers receive the attachmentAdapter
fixExternalThread merges a failed send back into the draft (text prepended, attachments and quote preserved)
fixExternalThread queue-adapter sends stamp the thread head as parentId
fixExternalThread throws a capability error when an unset optional callback is invoked
fix· corepersist LocalRuntime runs paused for tool approval
fixhandle rejected file picker attachment additions
fix· corepreserve thread-list position when switchToThread's on-demand fetch settles after a concurrent list

Other

2
miscAdopt erasableSyntaxOnly; public enums are now as const objects.
miscExternalThread: dedupe duplicate message ids with a warning (last occurrence wins) instead of throwing on duplicate resource keys.
@assistant-ui/react-a2a@0.2.24patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-ag-ui@0.0.48patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-ag-ui@0.0.47patchGitHub →

Features

1
featreconstruct mcp.app on restored tool-call parts in fromAgUiMessages from the _meta["ui/resourceUri"] MCP-UI pointer, so getMcpAppFromToolPart resolves the app on restored history instead of leaving McpAppRenderer on its fallback; effective for transports that preserve _meta (the standard @ag-ui/client HTTP transport strips it until upstream ToolMessageSchema gains a passthrough, agno-agi/agno#9087)
@assistant-ui/react-ai-sdk@1.4.1patchGitHub →

Refactors

1
refactormigrate to aui property accessors
@assistant-ui/react-data-stream@0.12.22patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-data-stream@0.12.21patchGitHub →

Other

1
miscAdopt erasableSyntaxOnly; public enums are now as const objects.
@assistant-ui/react-devtools@1.2.11patchGitHub →

Refactors

1
refactormigrate to aui property accessors
@assistant-ui/react-generative-ui@0.0.10patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-google-adk@0.0.19patchGitHub →

Refactors

1
refactormigrate to aui property accessors
@assistant-ui/react-hook-form@0.12.25patchGitHub →

Refactors

1
refactormigrate to aui property accessors
@assistant-ui/react-ink@0.0.35patchGitHub →

Refactors

1
refactormigrate primitives to aui property accessors; drop deprecated part-type handling
@assistant-ui/react-ink@0.0.34patchGitHub →

Other

1
miscAdopt erasableSyntaxOnly; public enums are now as const objects.
@assistant-ui/react-ink-markdown@0.0.34patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-ink-markdown@0.0.33patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-langchain@0.0.21patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-langgraph@0.14.15patchGitHub →

Features

1
featrender-bound immutable aui instances — derived scopes resolve to client instances during render and are frozen into the returned client; structural swaps produce a new client through React while value updates never change client identity. Removes the PartByIndexProvider lastPartRef guards and the useClientLookup stale-index clamp.

Refactors

1
refactormigrate to aui property accessors
@assistant-ui/react-langgraph@0.14.14patchGitHub →

Other

1
miscAdopt erasableSyntaxOnly; public enums are now as const objects.
@assistant-ui/react-lexical@0.2.7patchGitHub →

Refactors

1
refactormigrate to aui property accessors
@assistant-ui/react-markdown@0.14.8patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-mcp@0.0.21patchGitHub →

Refactors

1
refactormigrate to aui property accessors
@assistant-ui/react-mcp@0.0.20patchGitHub →

Other

1
@assistant-ui/react-native@0.1.33patchGitHub →

Refactors

1
refactormigrate primitives to aui property accessors; drop deprecated part-type handling
@assistant-ui/react-native@0.1.32patchGitHub →

Fixes

1
fixkeep MessagesFlatList following the bottom when the viewport shrinks (keyboard opening) mid-stream by extending the sticky pin to the onLayout path
@assistant-ui/react-o11y@0.0.29patchGitHub →

Refactors

1
refactormigrate to aui property accessors
@assistant-ui/react-o11y@0.0.28patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-opencode@0.2.14patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-opencode@0.2.13patchGitHub →

Other

1
miscAdopt erasableSyntaxOnly; public enums are now as const objects.
@assistant-ui/react-pi@0.0.9patchGitHub →

Other

1
miscAdopt erasableSyntaxOnly; public enums are now as const objects.
@assistant-ui/react-pi@0.0.10patchGitHub →

Refactors

1
refactormigrate to aui property accessors
@assistant-ui/react-streamdown@0.3.8patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react-syntax-highlighter@0.14.4patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/store@0.3.0minorGitHub →

Features

3
featproperty API for aui — nullary scope accessors are now properties (aui.thread.getState instead of aui.thread.getState); calling them still works but is deprecated. Accessors keep source/query/name selection metadata as properties; these are reserved names for scope methods. An unavailable scope's accessor no longer throws at selection time: aui.thread always succeeds and is always truthy, .source is null, and any other property read (or a call) throws — check availability via aui.thread.source != null. Accessor identity is binding-keyed: stable across renders without structural change, new on structural change — memoization keyed on an accessor now invalidates exactly when its binding changes.
featgetClientId(client) returns an opaque, WeakMap-legal identity for a bound client — the same object regardless of accessor wrapping depth. The cloud message persistence cache is now keyed on it instead of the per-mount accessor proxy. Removes unwrapClientAccessor and getBoundClient (introduced and replaced pre-release, never published).
featrender-bound immutable aui instances — derived scopes resolve to client instances during render and are frozen into the returned client; structural swaps produce a new client through React while value updates never change client identity. Removes the PartByIndexProvider lastPartRef guards and the useClientLookup stale-index clamp.
@assistant-ui/store@0.2.22patchGitHub →

Other

2
miscWarn instead of throw on recoverable inconsistencies: duplicate same-priority tool registrations merge with the latest registration taking precedence, duplicate message ids skip linking, stale client lookup indices are clamped, and null tool names in tool result messages are tolerated.
miscAdopt erasableSyntaxOnly; public enums are now as const objects.
@assistant-ui/tap@0.9.7patchGitHub →

Fixes

1
fixuseSyncExternalStore retains the last committed value when the snapshot getter throws; export useMemoCache from the package root
@assistant-ui/tap@0.9.6patchGitHub →

Features

1
featdrop configurableResource — use resource with an options argument instead

Other

2
miscAdopt erasableSyntaxOnly; public enums are now as const objects.
miscStop shipping react-shim declaration files the exports map disclaims — the shim subpaths are now genuinely untyped in every resolution mode instead of accidentally typed via TypeScript's fallback resolution.
@assistant-ui/vite@0.0.11patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/x-buildutils@0.0.20patchGitHub →

Other

1
miscAdopt erasableSyntaxOnly; public enums are now as const objects.
@assistant-ui/x-generative-compiler@0.0.11patchGitHub →

Features

1
featname the winning and overridden sources in the duplicate-tool-name composition warning
assistant-cloud@0.1.37patchGitHub →

Other

1
miscAdopt erasableSyntaxOnly; public enums are now as const objects.
assistant-stream@0.3.29patchGitHub →

Fixes

1
fixPlainTextEncoder emits assistant text only. Reasoning and tool-call argument deltas no longer leak into the output, non-text chunks (result, annotations, data, update-state, tool-call-args-text-finish) are skipped instead of throwing mid-stream, and the incorrect x-vercel-ai-data-stream header is removed from the response headers.
assistant-stream@0.3.28patchGitHub →

Fixes

3
fixDataStreamChunkDecoder skips blank framing lines and drops colon-less lines with a warning instead of throwing
fixparse SSEDecoder and data-stream chunk frames with secure-json-parse, matching the transport and UIMessageStream decoders; a malformed or prototype-pollution frame is now dropped with a warning and the stream continues instead of erroring the whole stream
fixparse UIMessageStream frames with secure-json-parse, matching the transport decoder

Other

2
miscAdopt erasableSyntaxOnly; public enums are now as const objects.
miscSame-priority duplicate tool registrations throw again. The Tool type gains an optional overwrite flag (discouraged escape hatch) that lets a later registration silently replace a same-priority tool of the same name; the flag is stripped from the merged output.
assistant-ui@0.0.108patchGitHub →

Features

1
featv0-15/aui-accessor-calls-to-properties codemod — rewrites nullary aui.x accessor calls to aui.x property access as part of npx assistant-ui upgrade.

Fixes

1
fixawait asynchronous CLI command handlers
create-assistant-ui@0.0.71patchGitHub →
safe-content-frame@0.0.25patchGitHub →

Other

1
miscAdopt erasableSyntaxOnly; public enums are now as const objects.

Jul 26, 2026

38 packages

@assistant-ui/cloud-ai-sdk@0.1.26patchGitHub →

Fixes

6
fixpreserve async tool call callbacks
fixkeep disabled thread fetching out of the loading state
fixreset selected threads and cached chats when the Cloud client changes
fixretry interrupted thread history loads
fixREADME quickstart renders UIMessage parts and drops nonexistent threadId destructure
fixretry automatic title generation after failed attempts

Refactors

1
refactorshare the mounted-and-current-cloud guard across thread actions

Tests

1
testexercise the ai v6 leg of the peer union in CI

Chores

1
choreupdate dependencies
@assistant-ui/core@0.2.22patchGitHub →

Fixes

27
fixavoid reporting copy success without a clipboard handler
fixrefresh Cloud history persistence when the Cloud client changes
fixrestrict AssistantFrame provider messages to the parent window
fixsettle thread runtime starts when stopped before mounting
fixisolate speech synthesis listener failures
fixmark a cancelled local runtime run incomplete when the adapter returns without throwing
fixpreserve falsy runtime state values
fixstop auto-submitting a parse-error tool result when divergent argsText closes without a backend result
fixdetect removed keys in shallow memoized state
fixpreserve the latest thread selection when switches finish out of order
fixsupport attachments without relying on a global File constructor
fixkeep composer attachments visible while their upload is in flight
fixpreserve concurrent local thread metadata and history writes
fixpreserve optimistic updates in invocation order
fixhandle failed composer append tasks
fixreject pending AssistantFrame tool calls when the host is disposed
fixhandle failed local history loads
fixisolate public runtime event subscribers
fixprioritize backend tool results over stale argument parse errors
fixisolate realtime voice session listener errors
fixapply pending mute state after voice session setup
fixallow omitting externalId in RemoteThreadInitializeResponse
fixkeep derived part scopes stable while removed parts unmount
fixgenerate Cloud attachment IDs without requiring Web Crypto
fixisolate composer runtime event listener errors
fixisolate thread runtime event listener errors
fixpreserve metadata.isOptimistic on user messages in fromThreadMessageLike

Refactors

1
refactorshare parseDataUrl and httpUrlPattern from core internal

Tests

1
testverify compiler-sensitive hooks against the built package

Chores

1
choreupdate dependencies

Other

1
miscfix nested message runtime path references
@assistant-ui/eve@0.0.5patchGitHub →

Features

1
featrequire eve 0.27.6

Refactors

1
refactormigrate convertEveMessage onto fromThreadMessageLike

Chores

1
choreupdate dependencies
@assistant-ui/metro@0.0.6patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/next@0.0.12patchGitHub →

Other

1
misc@assistant-ui/[email protected]
@assistant-ui/react@0.14.28patchGitHub →

Features

1
featfocus composer input when clicking blank space in ComposerPrimitive.Root

Fixes

5
fixprevent instant auto-scroll from interrupting active top-anchored runs
fixtolerate a transient part-type mismatch in the part hooks so a thread switch can't throw inside useSyncExternalStore and unmount the app
fixkeep controlled assistant-visible inputs in sync after edits
fixsupport attachments without relying on a global File constructor
fixpreserve the top-anchor reserve between turns

Chores

1
choreupdate dependencies

Other

1
miscWarn against throwing from part selectors and keep React Ink part rendering stable during transient part-type mismatches.
@assistant-ui/react-a2a@0.2.23patchGitHub →

Fixes

5
fixpreserve branched message history when loading A2A runtimes
fixforward user attachments and file parts to the wire and derive real image MIME types
fixreject unrecognizable agent card responses and fill proto3-omitted fields
fixrefresh A2A runtime clients when connection options change
fixreject malformed successful A2A send message responses

Refactors

1
refactorshare parseDataUrl and httpUrlPattern from core internal

Chores

1
choreupdate dependencies
@assistant-ui/react-ag-ui@0.0.46patchGitHub →

Fixes

2
fixapply mcp-apps ACTIVITY_SNAPSHOT events to tool calls from restored history
fixpreserve MCP Host fields in AG-UI tool results and restored history

Refactors

2
refactorshare interrupt-response validation between submitInterruptResponses and steerAway
refactorshare parseDataUrl and httpUrlPattern from core internal

Chores

1
choreupdate dependencies
@assistant-ui/react-ai-sdk@1.4.0minorGitHub →

Features

2
featformally open the AI SDK v7 line at 1.4. 1.3.41 shipped the v7 hard-dep switch as a patch inside the documented v6 line; from 1.4.0 the mapping is explicit: ^1.4 targets ai@^7, v6 users pin 1.3.40, v5 users pin 1.1.21.
featexpose the AI SDK chat helpers and error via runtime extras accessor hooks (useAISDKChat, useAISDKError)

Fixes

7
fixclose MCP clients that resolve after a connection timeout
fix· react-ai-sdkpersist pending tool approvals and append post-approval continuations
fix· react-ai-sdkpass the initialized remote thread id to prepareSendMessagesRequest
fixwait for external thread history to load before resuming a stream
fixserialize history persistence to prevent duplicate appends
fix· react-ai-sdkskip rewriting unchanged messages after each run
fixreplace stale useVercelAIThreadState name in the sliceMessagesUntil error and include the missing id

Tests

1
testpin history append retry semantics after a failed persistence pass

Chores

1
choreupdate dependencies
@assistant-ui/react-data-stream@0.12.20patchGitHub →

Fixes

2
fixreport request preparation and fetch failures through onError
fixpreserve falsy runtime state values

Chores

1
choreupdate dependencies
@assistant-ui/react-devtools@1.2.10patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-generative-ui@0.0.9patchGitHub →

Fixes

1
fixpreserve Slack alert level literal types

Chores

1
choreupdate dependencies
@assistant-ui/react-google-adk@0.0.18patchGitHub →

Fixes

4
fixreject incomplete direct stream options
fixvalidate session API response shapes
fixvalidate event stream response content types
fixvalidate Google ADK artifact API responses

Chores

1
choreupdate dependencies
@assistant-ui/react-hook-form@0.12.24patchGitHub →

Fixes

1
fixkeep form values in model context up to date

Chores

1
choreupdate dependencies
@assistant-ui/react-ink@0.0.33patchGitHub →

Fixes

2
fixremount windowed Static scrollback on thread switch
fixwrap ThreadListPrimitive.Items rows in ThreadListItemByIndexProvider with keys

Chores

1
choreupdate dependencies

Other

1
miscWarn against throwing from part selectors and keep React Ink part rendering stable during transient part-type mismatches.
@assistant-ui/react-ink-markdown@0.0.32patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-langchain@0.0.20patchGitHub →

Refactors

1
refactorshare parseDataUrl and httpUrlPattern from core internal

Chores

1
choreupdate dependencies
@assistant-ui/react-langgraph@0.14.13patchGitHub →

Fixes

3
fixhandle queued run failures without unhandled promise rejections
fixcarry streamed tool-call partial_json onto the full AIMessage delivered by LangGraph updates events so the converter keeps deriving argsText from the streamed text instead of re-stringifying parsed args.
fixpreserve streamed Bedrock tool call arguments

Refactors

1
refactorshare parseDataUrl and httpUrlPattern from core internal

Chores

1
choreupdate dependencies
@assistant-ui/react-lexical@0.2.6patchGitHub →

Features

1
featsupport lexical 0.48

Fixes

1
fixdelegate Tab key events to composer input plugins

Chores

1
choreupdate dependencies
@assistant-ui/react-markdown@0.14.7patchGitHub →

Fixes

1
fixkeep inline math that opens with a digit out of currency escaping

Chores

1
choreupdate dependencies
@assistant-ui/react-mcp@0.0.19patchGitHub →

Fixes

2
fixclose pending MCP connections when their resource is disposed
fixignore malformed persisted MCP connection timeout values

Chores

1
choreupdate dependencies
@assistant-ui/react-native@0.1.31patchGitHub →

Features

1
featadd ThreadPrimitive.MessagesFlatList with React Native auto-scroll behavior

Chores

1
choreupdate dependencies
@assistant-ui/react-o11y@0.0.27patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/react-opencode@0.2.12patchGitHub →

Fixes

1
fiximport useEffectEvent from the use-effect-event ponyfill instead of react

Chores

1
choreupdate dependencies
@assistant-ui/react-pi@0.0.8patchGitHub →

Features

2
featmap Pi settled and appended session events without snapshot refreshes
featsupport pi 0.82

Fixes

6
fixisolate shared Pi event streams between client instances
fixvalidate JSON payloads returned by the Pi HTTP client
fixmigrate the react-pi node host to the pi 0.80.8+ ModelRuntime API and raise the pi-coding-agent peer floor to >=0.80.8, so the ./node entry links again on pi 0.80.8+ (which removed AuthStorage and replaced ModelRegistry.create)
fixvalidate event stream response content types
fixwiden the pi-coding-agent peer to >=0.78.0 <0.80.8, covering 0.79.x and 0.80.x up to the release that removed the AuthStorage API the node host still uses
fixisolate subscriber errors while delivering shared stream events

Chores

1
choreupdate dependencies
@assistant-ui/react-streamdown@0.3.7patchGitHub →

Fixes

1
fixkeep inline math that opens with a digit out of currency escaping

Chores

1
choreupdate dependencies
@assistant-ui/react-syntax-highlighter@0.14.3patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/store@0.2.21patchGitHub →

Refactors

1
refactorResourceElement<Result> drops its args type parameter — elements are opaque descriptors; Resource<Result, Args> keeps the callable typing and ContravariantResource is removed

Chores

1
choreupdate dependencies
@assistant-ui/tap@0.9.5patchGitHub →

Features

2
featconfigurableResource — curries an options-first hook into (options) => Resource<V, A>, replacing .bind(null, options) boilerplate
featwithKey accepts a Resource — withKey(key, resourceFn) returns a resource whose produced elements carry the key

Fixes

2
fiximplement useMemoCache on tap's dispatcher so compiled components work under duplicated tap copies
fixcreate the scheduler MessageChannel lazily so importing tap does not hold the Node event loop open

Refactors

1
refactorResourceElement<Result> drops its args type parameter — elements are opaque descriptors; Resource<Result, Args> keeps the callable typing and ContravariantResource is removed

Chores

1
choreupdate dependencies
@assistant-ui/vite@0.0.10patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/x-buildutils@0.0.19patchGitHub →

Chores

1
choreupdate dependencies
@assistant-ui/x-generative-compiler@0.0.10patchGitHub →

Fixes

1
fixgive namespace-import toolkit spreads a specific compile error pointing at the default-import form
assistant-cloud@0.1.36patchGitHub →

Features

1
featadd cloud.projects.threads.list and cloud.projects.threads.messages.list for project-wide thread and message export

Fixes

5
fixrefresh Cloud history persistence when the Cloud client changes
fixdeduplicate concurrent Cloud authentication requests
fixnormalize Cloud base URLs across authentication modes
fixthread and message responses are now decoded to match their published types
fix· assistant-cloudwarn when an update targets a message without a remote id
assistant-stream@0.3.27patchGitHub →

Features

2
featadd GorpStreamDeltaTracker, migrating gorp's delta-tracking (change frames, isChangedAt, getChangedKeys) into GorpStream
featrename ObjectStream to GorpStream (old names remain as deprecated aliases)

Fixes

13
fixdedupe accumulator drop warnings per instance and drop class
fixisolate resumable stream observability hook errors
fixprevent assistant stream task settlement from escaping as unhandled rejections
fixavoid applying initial gorp stream operations twice
fixclean up abort listeners after frontend tool execution settles
fixguard gorp accumulator path navigation against inherited keys and prototype-polluting path segments
fixguard object stream settlement after cancellation
fixprioritize backend tool results over stale argument parse errors
fixcancel polyfilled async iterators when consumers stop early
fixvalidate assistant-transport chunk shape at the decode boundary and bounds-check accumulator part paths
fixvalidate per-type required fields at the assistant-transport decode boundary and drop malformed chunks in the accumulator instead of aborting the response; an unsupported part-start now inserts an empty reasoning placeholder to keep later part indices aligned
fixdrop malformed UIMessageStream frames at the decode boundary and fix tool-result closing the active args stream
fixonly record firstTokenTime when a text-delta actually mutates a part

Refactors

1
refactorconsolidate on a single wire protocol name (assistant-transport). Remove the unpublished gorp-shaped exports, expose diff tracking as AssistantTransportDeltaTracker and the state operation type as AssistantTransportStateOperation, and keep the published ObjectStream aliases working as deprecated delegates.
assistant-ui@0.0.107patchGitHub →

Fixes

6
fixinclude the running CLI version in info output
fixalign undefined-style registry defaults with the base default and correct the shipped skill's registry commands
fixinstall registry components when scaffolding the voice and interactables examples
fixsanitize tsconfig for every create scaffold and surface registry install failures
fix· clidiscover workspace packages from symlinked working directories
fix· clidiscover assistant-ui packages hoisted above the doctor working directory

Chores

1
choreupdate dependencies
create-assistant-ui@0.0.70patchGitHub →
heat-graph@0.0.14patchGitHub →

Chores

1
choreupdate dependencies
safe-content-frame@0.0.24patchGitHub →

Fixes

1
fixclean up frame resources after disposal and load failures

Chores

1
choreupdate dependencies