Page actions

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-ui consumers: the peer range on @ag-ui/client and @ag-ui/core moves from ^0.0.59 to ^1.0.1, so install both at 1.0.1 or later. The adapter imports validators from @ag-ui/core/schemas, which the 0.0.x line does not ship. The adapter also declares protocolVersion on every run.
  • The neutral agent contract gains an optional usage signal, an optional parts list on tool calls, and an authoritativeIds input to selectPendingClientToolCalls.
  • AG-UI cancelled run outcomes now settle as aborted without 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/telemetry and ships a postinstall step plus a @threadplane/chat/development-install subpath. 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/chat no longer accepts or checks an activation token.

0.0.58

A2UI v0.9.1

  • @threadplane/a2ui migrated 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 sendDataModel round-trip landed alongside the migration, together with a capabilities helper.
  • <chat> renders A2UI surface theme chrome, so an agentDisplayName and iconUrl on 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 / resolve trio 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. katex is 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 AgentError on the Agent contract: agent.error() now returns an AgentError (or undefined) carrying a machine-readable kind (connection | auth | server | interrupted | aborted), a retryable flag, an optional HTTP status, and the original cause. Both adapters normalize raw failures through toAgentError().
  • New agent.retry() action re-runs the last request and clears error. The built-in <chat-error> primitive (auto-rendered by <chat>) shows cause-specific copy and a Retry button whenever error.retryable is true.
  • New exports from @threadplane/chat: AgentError, AgentErrorKind, toAgentError, isAbortError, AGENT_ERROR_MESSAGES, plus ChatErrorComponent and extractErrorMessage. 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 no localStorage. 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, and ask, plus typed agent dependency injection. New type helpers exported from @threadplane/chat: ToolArgs, ViewProps, AgentRef / createAgentRef, and the StandardSchemaV1 inference aliases.

0.0.49

Citations

  • New <chat-citations> primitive renders a message's citations list, with chatCitationCardTemplate for per-citation card customization and CitationsResolverService for resolving [^id] markers against the citation list. Adapters populate Message.citations; @threadplane/langgraph exposes extractCitations().

A2UI

  • New A2UI surface rendering: <a2ui-surface> plus the a2uiBasicCatalog of 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 with withViews.

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 the Agent contract. 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> when Message.reasoning is populated.
  • New Message.reasoning and Message.reasoningDurationMs optional fields on the shared agent contract. Both adapters populate them: @threadplane/langgraph from {type:'reasoning'} / {type:'thinking'} content blocks, @threadplane/ag-ui from REASONING_MESSAGE_* events.

Tool-call templates

  • New chatToolCallTemplate directive 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 use chatToolCallTemplate="*".
  • <chat-tool-call-card> defaults to collapsed when complete. Pass [defaultCollapsed]="false" for always-expanded.
  • New status pill (running spinner / done check / error glyph) with consistent visual chrome.

Looking for something specific?