- fix: toLanguageModelMessages should include attachments
- fix: ensure message status is set on runResultStream flush
- fix: toolResultStream should support JSONSchema params
- fix: assistantDecoderStream should end current tool call on flush
- 4c54273: chore: update dependencies
- 4c54273: fix: initialize thread on import
- 0f88efb: fix: external store thread list should not crash
- 1eab7b4: refactor: ThreadList
- 2276e57: fix: cjs builds
- e8752ac: fix: ThreadList a11y improvements
- 589d37b: feat: ThreadList / ThreadListItem UI
- 2112ce8: chore: update dependencies
- 10d70db: fix: remove console.log
- c3027a0: fix: disallow nested ThreadConfigs
- 933b8c0: chore: update deps
- 09a2a38: fix: TextContentPartProvider should support contentPartRuntime.getState()
- c59d8b5: chore: update dependencies
- 5462390: fix: Thread.Messages AssistantEditComposer support
- 0fb80c1: feat: ThreadConfig.UserMessage / AssistantMessage / EditComposer
- 0dcd9cf: feat: mark message types as readonly
- 7fa9a1b: feat: ThreadMessageLike metadata support
- 1a1f4a5: feat: message metadata for all message types
- c2f75e5: feat: ThreadListRuntime API types
- c6e886b: refactor!: drop deprecated features
- 2912fda: feat: ThreadListItemPrimitive
- b5f92fe: fix(external-store): crash on cancel when using separate converter, fix branching
- cdcfe1e: feat: ThreadListItemPrimitive (wip)
- cdcfe1e: fix: add React 19 RC to peerDeps
- 94feab2: feat: ComposerState.role / ComposerRuntime.setRole
- 472c548: feat: ThreadListPrimitive
- 14da684: feat: AppendMessage.startRun flag
- 1ada091: chore: update deps
- ff5b86c: build: refactor build script into @assistant-ui/tsbuildutils
- ff5b86c: fix: better ESM compatibility
- ff5b86c: chore: update deps
- 9a9c01d: feat(edge-runtime): add unstable_AISDKInterop flag
- fix: properly pass initialMessages to LocalRuntime
- fix: include generated css files in bundle
- fix: toContentPartStatus support for parallel tool calls
- d2375cd: build: disable bundling in UI package releases
- f6d197a: feat: Edge Runtime Server Accessible Ids (temp)
- 56f80fa: fix: tailwind plugin turbopack interop
- 2090544: fix: attachments infinite rerender bug
- be04b5b: feat: Unstable_AudioContentPart (wip)
- 2090544: fix: Attachment preview accessibility
- fb32e61: chore: update deps
- fb32e61: feat: react-19 support
- fd9ff67: fix(local-runtime): update capabilities on initial render
- 0afecda: fix(ai-sdk): server-side maxSteps interop
- b38165d: feat: export useAttachmentRuntime, useAttachment, FeedbackAdapter
- a1bfd26: fix(ai-sdk): DataStream interop without tool call streaming
- b38165d: feat(ai-sdk): Adapters support (attachment, feedback, speech, threadManager)
- fix: do not cache adapter in useEdgeRuntime
- 3a602b9: fix: correctly handle new thread creation
- ba5116f: feat: useInlineRender hook
- c38a018: feat: ThreadListRuntime
- 0edadd1: feat: useThreadModelConfig API
- 1aeda53: feat: Runtime.path API
- 0c8277e: feat: MessageRuntime.unstable_getCopyText API
- 91d3951: feat: MessageRuntime.getContentPartByToolCallId
- cf6861c: refactor!: simplify SpeechSynthesisAdapter to accept a text string
- 7c76939: feat: ThreadRuntime.getMesssageById
- feat: allow out of order tool args streaming
- dba0082: fix: border should apply to all aui-root children
- b182ea5: feat: Events API (experimental)
- 0a3bd06: feat: Attachment image thumbnail and previews
- c3806f8: fix: do not export internal Runtime types
- 899b963: refactor: add BaseThreadRuntimeCore class
- 899b963: feat: work towards Edit Composer attachment support
- 899b963: refactor: remove composerState.attachmentAccept, add composerRuntime.getAttachmentAccept()
- 8c80f2a: feat: MessageState.submittedFeedback state
- 809c5c1: feat: New Attachment UI
- 31702b2: feat: MessageRuntime.stopSpeaking MessageState.speech state
- 44bfecd: refactor: move primitive types under the same namespace as the primitive components
- 3d31f10: refactor: deprecate primitive-hooks
- cf872da: feat: AttachmentPrimitive
- fb46305: chore: update dependencies
- e225116: feat(ui): add component override option for ThreadWelcome
- 0ff22a7: feat: switch to DataStream transfer protocol for edge runtime
- 378ee99: refactor: rename maxToolRoundtrips to maxSteps
- 378ee99: feat: server-side tool roundtrips support
- d0db602: fix: useDangerousInBrowserRuntime correct options forwarding
- 55942d8: fix: useContentPartText backwards compat type
- e455aff: feat: FollowupSuggestions
- f7c156b: feat: mark new runtime API methods as stable
- f6a832e: chore: update dependencies
- 2b7c6fe: refactor: define interface types for the new runtime API
- 3df0061: fix: TextContentPartProvider missing fields
- 46f91c2: feat(langgraph): allow disabling autocancellation of pending tool calls
- 96b9d1f: feat: new Runtime API part 8
- 9fd85da: fix: ensure branch picker is supported before showing it
- d8bd40b: chore: update dependencies
- 42156cf: refactor: drop ReactThreadRuntimeCore, unstable_synchronizer
- cfa8844: feat: useComposerRuntime hook
- 70720ba: feat: lift EditComposer to runtime layer
- 325b049: fix: include attachments prop in the useExternalMessageConverter
- df9ec8f: feat: new Runtime API rollout part 2
- 3f549b2: refactor: rename internal export
- 27208fb: fix: only include "use client" banner in ESM builds
- ed24305: fix: add newline after "use client" for .js builds
- c438773: feat: allow disabling ComposerInput keyboard shortcuts
- e1ae3d0: chore: update dependencies
- cd1b286: fix: BranchPicker styles
- 88957ac: feat: New unified Runtime API (part 1/n)
- 1a99132: feat: ThreadRuntime.Composer subscribe
- 3187013: feat: add status, attachments and metadata fields to all messages
- 926dce5: feat: Feedback Primtives, UI and Adapter
- 155d6e7: chore: update dependencies
- f80226f: feat: ThreadActions.getModelConfig
- 0f547a9: fix: useSmooth should work inside TextContentPartProvider
- 6507071: fix: TextContentPartProvider text streaming support
- 6507071: feat: TextContentPartProvider isRunning
- 745d6e1: fix(runtimes/external-store): switch to thread should correctly copy the entire store
- 745d6e1: fix: only deprecate the null usage of switchToThread
- e4863bb: feat(runtimes/external): add onSwitchToNewThread callback
- e4863bb: feat: add attachmentAccept to ThreadComposer
- b0a22e3: feat: runtime.switchToNewThread()
- 11ca453: refactor: drop useModelConfig Context - use useAssistantActions instead
- 0f99aa6: feat: New Context API
- c348553: chore: update dependencies
- f0f7497: feat: MessageContent Empty should be displayed for empty messages with empty text part
- 8555685: feat: allow editing assistant/system messages
- 892b019: fix: Empty should default to the provided Text component
- c0f975a: feat: TextContentPartProvider
- 164e46c: feat: ignore edits with text part unchanged
- 5eccae7: fix: createActionButton disabled handling
- 04f6fc8: chore: update deps
- 7ed296b: fix: make AppendMessage attachments field optional for now
- 25a711d: fix: user message action bar css
- a81b18f: feat: ComposerPrimitive.AddAttachment
- 44d08bd: feat: styled components for attachments
- b48fbcc: feat: UserMessageAttachment UI
- cc5e7d4: perf: memoize tool Ul components
- bdd3084: feat: allow runtimes to signal support for attachments
- 7dcab47: fix: message copy handling for runtimes
- a22e6bb: feat: AttachmentAdapter.accept allow attachment adapters to specify supported file types
- 9e00772: feat: add composer attachments state
- d2580d3: feat: SimpleImageAttachmentAdapter
- c845fcf: feat: allow sending attachment-only messages
- 3ba193e: feat: AttachmentContext
- d2580d3: feat: SimpleTextAttachmentAdapter
- 3b0f20b: feat: MessagePrimitive.Attachments
- 3ba193e: feat: ComposerPrimitive.Attachments
- d2580d3: feat: CompositeAttachmentAdapter
- 44d08bd: feat: Edge/Local runtime AttachmentAdapter support
- 0a4b8d7: feat: adjust the override order of tool UIs
- 34ad491: feat: ThreadConfig.ToolFallback
- 34ad491: feat: ThreadConfig.tools
- 0a4b8d7: fix: tool UI fallback should not override makeAssistantToolUI definitions
- fb8e58f: feat: add thread runtime threadId
- b2801ce: feat(styling): cursor-not-allowed when composer input is disabled
- 0aa4e6b: fix: use-smooth-state should notdesync
- 3962831: feat: useExternalMessageConverter API
- 85defe1: feat: allow string content in ThreadMessageLike
- 6f7ccf7: feat: add toolName to addToolResult callback
- 6f7ccf7: feat: thread converter should ignore empty text parts
- c8b98b6: feat: animate composer border color on focus
- 800eb9e: fix: error on switchToThread / switchToNewThread
- 8768c67: feat: support shadcn scroll area
- f526279: feat: SpeechSyntehsis
- e8aa697: refactor: remove unsupported external runtime onCopy callback
- 4333382: fix(runtime/edge): handle maxToolRoundtrips
- ab1160c: fix: switchToThread should persist maxToolRoundtrips
- 554a423: chore: update deps
- 60c0fdc: fix: remove Composer focus ring when using @tailwindcss/forms
- edbab24: feat(runtimes/local): reset thread
- edb5a16: feat: DangerousInBrowserRuntime
- f8e2cf1: fix: @tailwindcss/forms input border
- 53cf707: fix: do not require content in ChatModelRunResult
- 3178788: feat: custom AssistantMessage metadata
- c154b8f: feat(runtime/edge): allow extra headers & body
- cd70d4f: refactor: rewrite ai-sdk integration to use external runtime
- 34621cc: feat(runtimes/edge): getEdgeRuntimeResponse API
- 2df3e73: fix: CircleStopIcon invisible on safari
- 1b9ded0: feat: lift thread composer state to ThreadRuntime.Composer
- ccf5fef: fix: do not capture enter key during IME composition events
- 556001f: chore: update deps
- 556001f: feat: tool call cancellation support
- 915b5b7: feat: expose streamUtils
- 9a55735: chore: update deps
- dbf1042: fix: minor styling fixes
- dbf1042: chore: update deps
- 440b051: fix: sending messages when thread is empty
- 0445cdf: fix: disallow sending new messages when last message is in requires-action state
- 0445cdf: refactor: remove Runtime.isRunning / auto-infer isRunning state from last message state
- 71f4b77: feat: update Tooltip styles
- a7e8ef6: refactor: rewrite external store sync
- 6629dd8: fix: render loop if a message ID is used twice
- f83e4d1: feat: LocalRuntime export / import
- 134d39e: fix: undo moving internal utilities to /react/internal
- de04d92: feat: loading status & smooth streaming interop
- 3cc67f2: refactor: move internal utilities to @assistant-ui/react/internal
- 2534938: feat: Message.Content Empty component
- 0302235: fix(external-store): add initial messages to message repository
- 4b4f9c8: feat(local-runtime): AsyncGenerator support
- 9dc942f: feat: useThread.isDisabled flag
- 0418c73: fix(runtimes/external-store): invalidate cache when isRunning changes during autoStatus
- 8688a9f: feat(runtimes/external-store): loosen the return type for convertMessage callback
- fc6bc35: feat: initialMessages SSR support
- 1c6bf72: feat(tailwindcss): allow customizing colors directly in tailwind config
- a216fbf: chore: update deps
- e5e6b20: feat(runtime): BranchPicker feature detection
- f26783a: feat(ui): allow ReactNode in SuggestionConfig.text
- f2d7590: fix(rsc): hide copy message button
- 1acdf45: feat: external store runtime
- 2d7a8bd: fix: markdown loading indicator
- 2d7a8bd: fix: ScrollToBottom visbility bug
- 2d7a8bd: fix: text content part data-status field
- ee38c0c: feat: message status v2
- ee38c0c: fix(runtimes/edge): wait for serverside tool call results before reporting onFinish
- 2baa898: chore: v5
- bc77b4f: feat(runtimes/edge): dynamic model creator functions
- e220617: feat(runtimes/edge): client side API key, model name, model parameters specification
- 998081b: fix: reduce specificity of built-in CSS styles
- feat: scrolling to bottom during streaming is now instant
- fix: useSmooth gets triggered during branch switch
- fix: issue with forwarding props to primitives
- fix: useSmooth scrolling performance in dev mode
- e0e51cf: refactor!: Rename AssistantMessage to ThreadAssistantMessage
- e0e51cf: refactor!: Rename UserMessage to ThreadUserMessage
- 679cd54: feat: system message support
- c7ba6a2: feat: Edge Runtime API
- e0e51cf: feat: add styled UI components
- ef25706: feat: Code Header and Syntax Highlighter support
- b5aa29f: feat: smooth streaming by default
- 1a8919b: feat: smooth text streaming
- 05fd5d6: feat: runtime capabilities API
- 5b68f4a: refactor!: drop Message.InProgress support
- 3dd7384: fix: better message hover state tracking
- 23f474e: fix: remove warning about useLayoutEffect in SSR
- c373fc9: feat: AssistantModalPrimitive.Anchor
- be2c26b: fix: Vercel useAssistant BranchPicker duplicates bug
- 62e9f19: feat: AssistantRuntime newThread
- 611fdcc: feat: useAssistantActions
- ca0eaa1: feat: Programmatic Interactions API
- d52c345: feat: Primitive Prop Types
- de20b1c: feat!: ContentPartText is now a
element
- 2ab2cab: feat!: experimental features are now marked as stable
- 904556d: feat: ComposerContext focus() API
- 33ae8f9: feat: AssistantModalPrimitive
- fd6a202: feat: Primitive Hook useThreadViewportAutoScroll
- c2a6b22: fix: improved Viewport autoscroll handling
- c2a6b22: fix: more reliable escape hotkey handling
- c2a6b22: feat: add "role" field to AppendMessage
- 269b32f: feat: Primitive Hooks API
- 2867923: feat: Composer API Docs
- ab16a99: feat: useMessageUtils Context API
- ab16a99: feat: useThreadActions Context API
- ab16a99: fix: make all Context APIs read-only
- 8513f9a: feat: ToolUI addResult API
- 36f3a1f: fix: add DisplayName to primitive components for better error logs
- 36f3a1f: chore: upgrade to radix-ui 1.1
- 36f3a1f: chore: update dependencies
- a6769d5: feat: ContentPartComponent types
- 52236ab: feat: new default chat bubble design
- 671dc86: feat: Tool Render functions
- a73b50f: fix: ComposerRoot onSubmit should be called when using keyboard shortcuts
- 6e9528d: build: add changesets
- 6e9528d: feat: add useAssistantTool API