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 →
@assistant-ui/core@0.3.13patchGitHub →
Features
3featgive 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.Fixes
11fixprevent 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.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.@assistant-ui/eve@0.0.13patchGitHub →
Fixes
1fixhand 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
2featgive 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.Fixes
3fixrelease replay response readers after completion, cancellation, and errors
@assistant-ui/react-a2a@0.2.29patchGitHub →
@assistant-ui/react-ag-ui@0.0.54patchGitHub →
Features
1featround-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
4fixpreserve 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
7fixreport 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 survivesfixraise 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 acceptsfixreport 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 silentlyfixstop 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@assistant-ui/react-mcp@0.1.12patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-native@0.1.36patchGitHub →
@assistant-ui/react-o11y@0.0.39patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-pi@0.0.17patchGitHub →
@assistant-ui/store@0.3.9patchGitHub →
Fixes
3fixscoped 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
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-cloud@0.1.40patchGitHub →
assistant-ui@0.0.110patchGitHub →
create-assistant-ui@0.0.73patchGitHub →
Other
1Aug 9, 2026
13 packages
@assistant-ui/cloud-ai-sdk@0.1.32patchGitHub →
@assistant-ui/core@0.3.12patchGitHub →
@assistant-ui/core@0.3.11patchGitHub →
Fixes
2@assistant-ui/eve@0.0.12patchGitHub →
@assistant-ui/react@0.15.13patchGitHub →
@assistant-ui/react@0.15.12patchGitHub →
@assistant-ui/react-google-adk@0.0.25patchGitHub →
@assistant-ui/react-langgraph@0.14.23patchGitHub →
@assistant-ui/react-lexical@0.2.9patchGitHub →
@assistant-ui/react-mcp@0.1.11patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-mcp@0.1.10patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-pi@0.0.16patchGitHub →
Aug 8, 2026
55 packages
@assistant-ui/agent-launcher@0.1.10patchGitHub →
@assistant-ui/cloud-ai-sdk@0.1.30patchGitHub →
@assistant-ui/core@0.3.9patchGitHub →
@assistant-ui/core@0.3.8patchGitHub →
@assistant-ui/core@0.3.10patchGitHub →
@assistant-ui/eve@0.0.10patchGitHub →
Fixes
1fixserialize 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 →
@assistant-ui/react@0.15.9patchGitHub →
Features
3Fixes
2@assistant-ui/react@0.15.11patchGitHub →
@assistant-ui/react@0.15.10patchGitHub →
@assistant-ui/react-ag-ui@0.0.52patchGitHub →
Fixes
2fixsend
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.@assistant-ui/react-data-stream@0.12.26patchGitHub →
@assistant-ui/react-data-stream@0.12.25patchGitHub →
@assistant-ui/react-devtools@1.2.13patchGitHub →
@assistant-ui/react-generative-ui@0.0.13patchGitHub →
@assistant-ui/react-google-adk@0.0.24patchGitHub →
@assistant-ui/react-hook-form@0.12.27patchGitHub →
@assistant-ui/react-ink-markdown@0.0.36patchGitHub →
@assistant-ui/react-langchain@0.0.25patchGitHub →
@assistant-ui/react-langgraph@0.14.22patchGitHub →
@assistant-ui/react-langgraph@0.14.21patchGitHub →
@assistant-ui/react-lexical@0.2.8patchGitHub →
@assistant-ui/react-markdown@0.14.10patchGitHub →
@assistant-ui/react-mcp@0.1.8patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-mcp@0.1.7patchGitHub →
Other
1@assistant-ui/react-native@0.1.35patchGitHub →
@assistant-ui/react-o11y@0.0.37patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-opencode@0.2.18patchGitHub →
@assistant-ui/react-pi@0.0.15patchGitHub →
@assistant-ui/react-pi@0.0.14patchGitHub →
@assistant-ui/react-streamdown@0.3.10patchGitHub →
@assistant-ui/react-syntax-highlighter@0.14.5patchGitHub →
@assistant-ui/store@0.3.7patchGitHub →
Features
1Fixes
1fixanswer 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/x-generative-compiler@0.0.12patchGitHub →
assistant-stream@0.3.35patchGitHub →
Features
1featpreserve app-authored reasoning summaries on message parts
Fixes
2fixcarry 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.create-assistant-ui@0.0.72patchGitHub →
Other
1Aug 6, 2026
23 packages
@assistant-ui/core@0.3.6patchGitHub →
Features
2featAuiProvider 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
3fixdrop 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
1featexport toEveInputResponse from the package barrel for custom approval flows
Fixes
4fixrender 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
1featAuiProvider 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
1fixonly run the use-generative loader on modules carrying the directive
@assistant-ui/react@0.15.5patchGitHub →
Features
2featAuiProvider 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
8fixallow callers to override the default type="button" on action button primitives
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
fixcompose SelectionToolbarRoot onMouseDown with composeEventHandlers so user handlers run before preventDefault
@assistant-ui/react-a2a@0.2.27patchGitHub →
Fixes
4fixrestore inbound file and audio parts as file message parts instead of text placeholders
fixkeep the wire filename on inbound image parts
@assistant-ui/react-ag-ui@0.0.51patchGitHub →
Features
2Fixes
1fixabort AG-UI HTTP requests when cancelling runs
@assistant-ui/react-generative-ui@0.0.12patchGitHub →
@assistant-ui/react-google-adk@0.0.22patchGitHub →
@assistant-ui/react-hook-form@0.12.26patchGitHub →
@assistant-ui/react-ink@0.0.36patchGitHub →
Features
2featAuiProvider 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
1fixAttachmentPrimitive.Thumb now renders custom children instead of always overriding them with the automatic label
@assistant-ui/react-ink-markdown@0.0.35patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-langchain@0.0.24patchGitHub →
@assistant-ui/react-langgraph@0.14.20patchGitHub →
@assistant-ui/react-mcp@0.1.4patchGitHub →
Features
1featAuiProvider 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/react-native@0.1.34patchGitHub →
Features
1featAuiProvider 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
2fixAttachmentPrimitive.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
1featAuiProvider 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/react-pi@0.0.13patchGitHub →
@assistant-ui/react-streamdown@0.3.9patchGitHub →
Fixes
2fixmerge user rehypePlugins after the security hardening pipeline instead of dropping it
fixpreserve Streamdown sanitization extensions with security
@assistant-ui/store@0.3.4patchGitHub →
Features
3featAuiProvider 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
@assistant-ui/tap@0.9.10patchGitHub →
@assistant-ui/x-buildutils@0.0.21patchGitHub →
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
useChatRuntimeby @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
listResourcesapi 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
initializeAuthauth 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 →
Other
1@assistant-ui/core@0.3.5patchGitHub →
@assistant-ui/core@0.3.4patchGitHub →
Features
5featsourceType 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
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.Fixes
5fixprevent canceled attachment uploads from reappearing and settle failed removals as attachment errors
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@assistant-ui/core@0.3.3patchGitHub →
Fixes
3fixenumerate the attachment content fields the aui/v0 encoder persists so per-part status stays out of the stored shape
@assistant-ui/eve@0.0.7patchGitHub →
@assistant-ui/react@0.15.4patchGitHub →
Features
1@assistant-ui/react@0.15.3patchGitHub →
Features
3featsourceType opt-in on file message parts so attachment adapters can send url/id file references
Fixes
3fixkeep 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@assistant-ui/react@0.15.2patchGitHub →
@assistant-ui/react-a2a@0.2.26patchGitHub →
Features
1feathonor sourceType "url" in a2a, ag-ui, and adk file converters
@assistant-ui/react-ag-ui@0.0.50patchGitHub →
@assistant-ui/react-ai-sdk@1.4.4patchGitHub →
Features
2Fixes
6fix· react-ai-sdkforward audio message parts as file parts instead of throwing
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@assistant-ui/react-ai-sdk@1.4.3patchGitHub →
Features
1featmap AI SDK text and reasoning part state onto the per-part status
@assistant-ui/react-data-stream@0.12.24patchGitHub →
@assistant-ui/react-data-stream@0.12.23patchGitHub →
@assistant-ui/react-google-adk@0.0.21patchGitHub →
Features
2@assistant-ui/react-langchain@0.0.23patchGitHub →
Features
1featsourceType opt-in on file message parts so attachment adapters can send url/id file references
@assistant-ui/react-langgraph@0.14.19patchGitHub →
Features
2featsourceType 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
7fix· react-langgraphpreserve sends racing thread load and cancellation
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.@assistant-ui/react-langgraph@0.14.18patchGitHub →
@assistant-ui/react-mcp@0.1.3patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-mcp@0.1.2patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-mcp@0.1.1patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-o11y@0.0.33patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-o11y@0.0.32patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-opencode@0.2.17patchGitHub →
Features
1Fixes
8fixproject user file parts as message attachments instead of inline content, for server, pending, and shadow copies alike
fixstop fingerprinting audio and data parts the outbound path never sends, so their pending copies reconcile with the server echo
@assistant-ui/react-opencode@0.2.16patchGitHub →
Features
1featproject OpenCode Task child sessions as nested messages
@assistant-ui/react-pi@0.0.12patchGitHub →
@assistant-ui/store@0.3.3patchGitHub →
Fixes
1fixprevent Composer updates from being lost under React StrictMode
@assistant-ui/tap@0.9.9patchGitHub →
assistant-cloud@0.1.38patchGitHub →
assistant-stream@0.3.33patchGitHub →
assistant-stream@0.3.32patchGitHub →
Fixes
4fixprevent pending frontend tool output from enqueuing after stream cancellation
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
Jul 30, 2026
18 packages
@assistant-ui/cloud-ai-sdk@0.1.28patchGitHub →
@assistant-ui/core@0.3.2patchGitHub →
Features
1Fixes
3fixaccept case-insensitive
data: URL schemes and normalize parsed mime types to lowercasefixparse zero-byte base64 payloads in parseDataUrl
Refactors
3refactormove createRuntimeExtras to the @assistant-ui/core/react entry and drop the internal re-export
@assistant-ui/mcp-docs-server@0.2.0minorGitHub →
@assistant-ui/react-a2a@0.2.25patchGitHub →
Fixes
3fixforward 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@assistant-ui/react-ag-ui@0.0.49patchGitHub →
Features
4featsend 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 fallbackfeatconsume a2ui-surface activity snapshots and render A2UI surfaces as present tool-call parts
featrehydrate A2UI surfaces from restored activity history
Fixes
2fixforward 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.
@assistant-ui/react-ai-sdk@1.4.2patchGitHub →
Features
1Fixes
1fixaccept case-insensitive
data: URL schemes and normalize parsed mime types to lowercase@assistant-ui/react-devtools@1.2.12patchGitHub →
Fixes
1fixcase-insensitive data: and http(s) scheme checks in preview parsing
@assistant-ui/react-generative-ui@0.0.11patchGitHub →
@assistant-ui/react-google-adk@0.0.20patchGitHub →
Fixes
2@assistant-ui/react-langchain@0.0.22patchGitHub →
@assistant-ui/react-langgraph@0.14.17patchGitHub →
@assistant-ui/react-mcp@0.1.0minorGitHub →
Features
2featmigrate to MCP TypeScript SDK v2 scoped packages (
@modelcontextprotocol/client, @modelcontextprotocol/core, @modelcontextprotocol/server), replacing the monolithic @modelcontextprotocol/sdk 1.x dependencyFixes
4fixhonor boolean schema defaults in elicitation seeding, flag mistyped boolean drafts as invalid, and add an
elicitation: false opt-outfixsurface elicitation validation on the pending item (stay-pending accept errors and
McpElicitationPrimitive.Error), seed drafts from schema defaults@assistant-ui/react-o11y@0.0.31patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-opencode@0.2.15patchGitHub →
Fixes
1fixconnect OpenCode permissions to standard tool approvals
@assistant-ui/react-pi@0.0.11patchGitHub →
Fixes
2@assistant-ui/store@0.3.2patchGitHub →
Features
1Fixes
1Refactors
3refactor· storelocal useShallowStable helper replaces tap useMemoCache; drop useMemoCache from tap's public entrypoint
Other
7miscuseClientList: 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
@assistant-ui/tap@0.9.8patchGitHub →
Fixes
2Refactors
1Other
3miscThe 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
assistant-stream@0.3.31patchGitHub →
Fixes
2fixDataStreamDecoder 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 lowercaseJul 29, 2026
7 packages
@assistant-ui/core@0.3.1patchGitHub →
@assistant-ui/react@0.15.1patchGitHub →
@assistant-ui/react-langgraph@0.14.16patchGitHub →
Fixes
1fixhonor LangChain RemoveMessage (type: "remove") in
updates events instead of crashing@assistant-ui/react-mcp@0.0.22patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-o11y@0.0.30patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/store@0.3.1patchGitHub →
Features
1featoptional 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
1fixaddToolCallPart({response}) settles the tool-call part so the stream closes
Jul 28, 2026
51 packages
@assistant-ui/cloud-ai-sdk@0.1.27patchGitHub →
@assistant-ui/core@0.3.0minorGitHub →
Features
4featproperty 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.feat
getClientId(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/core@0.2.23patchGitHub →
Features
1featExternalThread 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
5fixExternalThread 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
Other
4miscRestore 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.
@assistant-ui/eve@0.0.6patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/next@0.0.13patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react@0.15.0minorGitHub →
Features
2featproperty 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
1featExternalThread 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
16fix· 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 merges a failed send back into the draft (text prepended, attachments and quote preserved)
fixExternalThread throws a capability error when an unset optional callback is invoked
fix· corepersist LocalRuntime runs paused for tool approval
fix· corepreserve thread-list position when switchToThread's on-demand fetch settles after a concurrent list
@assistant-ui/react-a2a@0.2.24patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-ag-ui@0.0.48patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-ag-ui@0.0.47patchGitHub →
Features
1featreconstruct
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 →
@assistant-ui/react-data-stream@0.12.22patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-data-stream@0.12.21patchGitHub →
@assistant-ui/react-devtools@1.2.11patchGitHub →
@assistant-ui/react-generative-ui@0.0.10patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-google-adk@0.0.19patchGitHub →
@assistant-ui/react-hook-form@0.12.25patchGitHub →
@assistant-ui/react-ink@0.0.35patchGitHub →
@assistant-ui/react-ink@0.0.34patchGitHub →
@assistant-ui/react-ink-markdown@0.0.34patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-ink-markdown@0.0.33patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-langchain@0.0.21patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-langgraph@0.14.15patchGitHub →
Features
1featrender-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/react-langgraph@0.14.14patchGitHub →
@assistant-ui/react-lexical@0.2.7patchGitHub →
@assistant-ui/react-markdown@0.14.8patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-mcp@0.0.21patchGitHub →
@assistant-ui/react-mcp@0.0.20patchGitHub →
Other
1@assistant-ui/react-native@0.1.33patchGitHub →
@assistant-ui/react-native@0.1.32patchGitHub →
Fixes
1fixkeep 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 →
@assistant-ui/react-o11y@0.0.28patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-opencode@0.2.14patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-opencode@0.2.13patchGitHub →
@assistant-ui/react-pi@0.0.9patchGitHub →
@assistant-ui/react-pi@0.0.10patchGitHub →
@assistant-ui/react-streamdown@0.3.8patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react-syntax-highlighter@0.14.4patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/store@0.3.0minorGitHub →
Features
3featproperty 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.feat
getClientId(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
2miscWarn 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.
@assistant-ui/tap@0.9.7patchGitHub →
@assistant-ui/tap@0.9.6patchGitHub →
Features
1Other
2@assistant-ui/vite@0.0.11patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/x-buildutils@0.0.20patchGitHub →
@assistant-ui/x-generative-compiler@0.0.11patchGitHub →
Features
1featname the winning and overridden sources in the duplicate-tool-name composition warning
assistant-cloud@0.1.37patchGitHub →
assistant-stream@0.3.29patchGitHub →
Fixes
1fixPlainTextEncoder 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
3fixDataStreamChunkDecoder 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
2assistant-ui@0.0.108patchGitHub →
create-assistant-ui@0.0.71patchGitHub →
Other
1Jul 26, 2026
38 packages
@assistant-ui/cloud-ai-sdk@0.1.26patchGitHub →
Fixes
6fixREADME quickstart renders UIMessage parts and drops nonexistent threadId destructure
Refactors
1@assistant-ui/core@0.2.22patchGitHub →
Fixes
27fixmark a cancelled local runtime run incomplete when the adapter returns without throwing
fixstop auto-submitting a parse-error tool result when divergent argsText closes without a backend result
fixkeep composer attachments visible while their upload is in flight
fixprioritize backend tool results over stale argument parse errors
fixallow omitting externalId in RemoteThreadInitializeResponse
fixisolate composer runtime event listener errors
fixpreserve metadata.isOptimistic on user messages in fromThreadMessageLike
Refactors
1refactorshare parseDataUrl and httpUrlPattern from core internal
@assistant-ui/eve@0.0.5patchGitHub →
@assistant-ui/next@0.0.12patchGitHub →
Other
1misc@assistant-ui/[email protected]
@assistant-ui/react@0.14.28patchGitHub →
Features
1featfocus composer input when clicking blank space in ComposerPrimitive.Root
Fixes
5fixtolerate a transient part-type mismatch in the part hooks so a thread switch can't throw inside useSyncExternalStore and unmount the app
@assistant-ui/react-a2a@0.2.23patchGitHub →
Fixes
5fixforward user attachments and file parts to the wire and derive real image MIME types
Refactors
1refactorshare parseDataUrl and httpUrlPattern from core internal
@assistant-ui/react-ag-ui@0.0.46patchGitHub →
Fixes
2fixapply mcp-apps ACTIVITY_SNAPSHOT events to tool calls from restored history
fixpreserve MCP Host fields in AG-UI tool results and restored history
Refactors
2refactorshare interrupt-response validation between submitInterruptResponses and steerAway
refactorshare parseDataUrl and httpUrlPattern from core internal
@assistant-ui/react-ai-sdk@1.4.0minorGitHub →
Features
2featformally 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
7fix· react-ai-sdkpersist pending tool approvals and append post-approval continuations
fix· react-ai-sdkpass the initialized remote thread id to prepareSendMessagesRequest
fixreplace stale useVercelAIThreadState name in the sliceMessagesUntil error and include the missing id
@assistant-ui/react-data-stream@0.12.20patchGitHub →
@assistant-ui/react-generative-ui@0.0.9patchGitHub →
@assistant-ui/react-google-adk@0.0.18patchGitHub →
Fixes
4@assistant-ui/react-hook-form@0.12.24patchGitHub →
@assistant-ui/react-ink@0.0.33patchGitHub →
Fixes
2fixremount windowed Static scrollback on thread switch
fixwrap ThreadListPrimitive.Items rows in ThreadListItemByIndexProvider with keys
@assistant-ui/react-ink-markdown@0.0.32patchGitHub →
@assistant-ui/react-langchain@0.0.20patchGitHub →
@assistant-ui/react-langgraph@0.14.13patchGitHub →
Fixes
3fixcarry 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.Refactors
1refactorshare parseDataUrl and httpUrlPattern from core internal
@assistant-ui/react-lexical@0.2.6patchGitHub →
@assistant-ui/react-markdown@0.14.7patchGitHub →
@assistant-ui/react-mcp@0.0.19patchGitHub →
@assistant-ui/react-native@0.1.31patchGitHub →
@assistant-ui/react-opencode@0.2.12patchGitHub →
@assistant-ui/react-pi@0.0.8patchGitHub →
Features
2Fixes
6fixmigrate 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)
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
@assistant-ui/react-streamdown@0.3.7patchGitHub →
@assistant-ui/react-syntax-highlighter@0.14.3patchGitHub →
@assistant-ui/store@0.2.21patchGitHub →
@assistant-ui/tap@0.9.5patchGitHub →
Features
2Fixes
2Refactors
1@assistant-ui/x-generative-compiler@0.0.10patchGitHub →
Fixes
1fixgive namespace-import toolkit spreads a specific compile error pointing at the default-import form
assistant-cloud@0.1.36patchGitHub →
Features
1featadd cloud.projects.threads.list and cloud.projects.threads.messages.list for project-wide thread and message export
Fixes
5fixthread and message responses are now decoded to match their published types
assistant-stream@0.3.27patchGitHub →
Features
2Fixes
13fixdedupe accumulator drop warnings per instance and drop class
fixprevent assistant stream task settlement from escaping as unhandled rejections
fixguard gorp accumulator path navigation against inherited keys and prototype-polluting path segments
fixprioritize backend tool results over stale argument parse errors
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
1refactorconsolidate 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
6fixalign 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