Changelog
Note: Highlight releases only
This changelog tracks selected highlight releases, not every patch. The published package is at 0.0.66 — the entries below cover the notable changes since 0.0.19.
Next
- Breaking change, action required for
@threadplane/ag-uiconsumers: the peer range on@ag-ui/clientand@ag-ui/coremoves from^0.0.59to^1.0.1, so install both at1.0.1or later. The adapter imports validators from@ag-ui/core/schemas, which the 0.0.x line does not ship. The adapter also declaresprotocolVersionon every run. - The neutral agent contract gains an optional
usagesignal, an optionalpartslist on tool calls, and anauthoritativeIdsinput toselectPendingClientToolCalls. - AG-UI cancelled run outcomes now settle as
abortedwithout an error, and tool results delivered as content-part lists map to chat content blocks.
0.0.66
Install telemetry
- The package now declares a peer dependency on
@threadplane/telemetryand ships apostinstallstep plus a@threadplane/chat/development-installsubpath. Collection is inert in contributor workspaces and excludes automated browsers. - The published package surface was realigned to the Angular AI agent UI category, with a check that keeps it there.
0.0.64
Angular 22
- Angular 22 joins 20 and 21 in every peer range. See Installation for the supported majors.
0.0.63
MIT license
- Every Threadplane package moved to MIT for commercial and noncommercial use.
@threadplane/chatno longer accepts or checks an activation token.
0.0.58
A2UI v0.9.1
@threadplane/a2uimigrated to the A2UI v0.9.1 stable wire format. This is a breaking protocol change: surfaces authored against the pre-1.0 draft need regenerating.- Client-side functions, validation checks with a client error message, and a live
sendDataModelround-trip landed alongside the migration, together with a capabilities helper. <chat>renders A2UI surface theme chrome, so anagentDisplayNameandiconUrlon the surface show up in the rendered card. See the A2UI guide.
0.0.57
Client tools
- Client-tool continuation is now batched, policy-driven, and bounded: pass
[clientToolContinuationPolicy]to cap continuation groups per user turn and listen on(clientToolContinuationLimit)when the cap trips. - Client-tool execution claims arrived as the optional
[clientToolExecutionGuard]input, so a non-idempotent browser tool is not executed twice, together with an abort signal passed to executing tools. - A client tool call is never left unanswered on the server. The
settle/flush/resolvetrio on the adapter capability keeps the thread free of a tool call with no matching result. See Client Tools and Writing an Adapter.
Streaming lifecycle
<chat-streaming-md>gained an explicit lifecycle contract driven by the atomic[document]input rather than a debounce. See Markdown Rendering.- Run lifecycle moved into one place across the adapters, and the library builds with Angular strict templates.
0.0.56
Citations
- A visual and interaction system for citations and sources, including source-type visual language on the citation cards.
0.0.54
Streaming tables
- Markdown tables render while they stream instead of appearing as raw pipe characters. The built-in
'table'renderer emits native<tr>/<th>/<td>elements so streamed rows stay attached to the same browser table. <chat-sidebar>content layout and destroy-time cleanup were fixed.
0.0.53
Math and reasoning
- LaTeX and math render through a lazily-loaded KaTeX.
katexis an optional peer dependency; without it, math nodes fall back to their source text. - Consecutive reasoning steps merge into one pill, so a multi-step agent shows a single "Thought for Ns · N steps" chip instead of a stack.
- Message action controls are suppressed on content-less messages, keeping a bare tool call or a subagent delegation card compact.
A2UI icons
- A2UI renders real Material Symbols icons rather than the icon name as text, and normalizes camelCase icon names to the snake_case ligature form.
Note: 0.0.55, 0.0.59 through 0.0.62, and 0.0.65
These releases carry no user-facing @threadplane/chat change. They ship fixes in the adapters, test hardening, and coordinated version bumps across the publishable packages.
0.0.52
Classified errors and Retry
- New structured
AgentErroron theAgentcontract:agent.error()now returns anAgentError(orundefined) carrying a machine-readablekind(connection|auth|server|interrupted|aborted), aretryableflag, an optional HTTPstatus, and the originalcause. Both adapters normalize raw failures throughtoAgentError(). - New
agent.retry()action re-runs the last request and clearserror. The built-in<chat-error>primitive (auto-rendered by<chat>) shows cause-specific copy and a Retry button whenevererror.retryableis true. - New exports from
@threadplane/chat:AgentError,AgentErrorKind,toAgentError,isAbortError,AGENT_ERROR_MESSAGES, plusChatErrorComponentandextractErrorMessage. See Error Handling.
Thread routing
- New
injectThreadRouting()helper binds an app-owned active-thread signal to the Angular Router — restoring the thread id from the URL on load, stamping changes back into the URL, and treating a bare URL as the welcome state, with nolocalStorage. See Thread Routing.
Subagent cards
<chat-subagent-card>now renders the subagent's full transcript — every message as streaming markdown, with reasoning and the subagent's own tool-call cards — instead of only the latest message. Cards are inline and persistent, auto-expand while running, and collapse on completion. See ChatSubagentCard.
TypeScript DX
- Strict-safe, fully typed authoring surface for client tools,
view, andask, plus typed agent dependency injection. New type helpers exported from@threadplane/chat:ToolArgs,ViewProps,AgentRef/createAgentRef, and theStandardSchemaV1inference aliases.
0.0.49
Citations
- New
<chat-citations>primitive renders a message'scitationslist, withchatCitationCardTemplatefor per-citation card customization andCitationsResolverServicefor resolving[^id]markers against the citation list. Adapters populateMessage.citations;@threadplane/langgraphexposesextractCitations().
A2UI
- New A2UI surface rendering:
<a2ui-surface>plus thea2uiBasicCatalogof catalog components (text field, checkbox, button, multiple choice, slider, date/time, card, row, column, list, modal, tabs, and more) for agent-driven generative UI. Compose custom catalogs withwithViews.
Layout compositions
- New layout compositions:
<chat-sidenav>(collapsible side panel),<chat-popup>(floating launcher), and<chat-sidebar>(docked rail). See Layout Modes.
Agent contract
- New
regenerate(assistantMessageIndex)action on theAgentcontract. Discards the assistant message at the given index and everything after it, then re-runs against the preceding user message. Surfaced as the(regenerate)output on<chat>.
0.0.19
Reasoning
- New
<chat-reasoning>primitive renders model reasoning content as a "Thinking…" / "Thought for Ns" pill, default-collapsed once streaming completes. Auto-rendered by<chat>whenMessage.reasoningis populated. - New
Message.reasoningandMessage.reasoningDurationMsoptional fields on the shared agent contract. Both adapters populate them:@threadplane/langgraphfrom{type:'reasoning'}/{type:'thinking'}content blocks,@threadplane/ag-uifromREASONING_MESSAGE_*events.
Tool-call templates
- New
chatToolCallTemplatedirective registers per-tool-name templates inside<chat-tool-calls>. A literal"*"registers a wildcard catch-all. <chat-tool-calls>[grouping]="'auto'"(the default) auto-collapses sequential same-name tool calls into a labeled strip ("Searched 5 sites"). Pass[grouping]="'none'"to opt out.- The legacy single-
<ng-template>fallback inside<chat-tool-calls>is removed in favor of the named-template registry. Consumers wanting a catch-all usechatToolCallTemplate="*". <chat-tool-call-card>defaults to collapsed whencomplete. Pass[defaultCollapsed]="false"for always-expanded.- New status pill (running spinner / done check / error glyph) with consistent visual chrome.