Page actions

Changelog

Note: Highlight releases only

This changelog tracks selected highlight releases, not every release. The published package is at 0.3.7. The entries below cover the notable changes since 0.0.19.

0.3.7

  • Chat adds a configurable composer placeholder, public clearDraft() methods on ChatComponent and ChatInputComponent, and projected composer footer/status content.
  • Empty message-scoped tool-call groups skip unrelated grouping preparation. In the H1000 Angular regression fixture, 501 empty scopes avoid four configuration reads each during a fresh-wrapper tail update. Nonempty grouping and later live tool calls remain observable; native latency and FPS improvements have not been established.
  • Constrained textarea scrolling, mobile placeholder width, Firefox Markdown list flow, and message speaker positioning improve.

0.3.6

  • Chat shares one transcript snapshot per render for previous-role and current-message bindings, avoiding repeated reads across long histories while preserving fresh and mutable message updates.
  • Chat, popup and sidebar render approvals inside their transcripts. Spacing, typography and radii follow the token scale.

0.3.5

  • Full LangGraph history snapshots use indexed exact-ID reconciliation, avoiding repeated searches through the accumulated conversation.
  • Text-only streaming preserves empty tool-call and subagent state so unchanged derived state does not repeatedly invalidate historical consumers. Nonempty updates, removals and thread resets remain observable.
  • Chat task controls and accessibility improve, including running-state handling, keyboard behavior, message speaker labels and bidirectional text.

0.3.4

  • Scrolling upward during a streamed reply now keeps the historical transcript in view when native scroll delivery overlaps token rendering. Later tokens and stream completion preserve that position; the native return control resumes following the latest response.
  • Popup and sidebar compositions forward their message action controls and outputs.

0.3.3

  • An inactive chat-typing-indicator host now uses display: none, so it takes no layout space when the typing dots are hidden. The indicator's visibility conditions are unchanged.

0.3.2

  • chatRunActivityTemplate renders while a run has no assistant message yet, so you can show turn-level activity during a slow first model call. It replaces the typing indicator only in that window. See ChatRunActivityTemplate.
  • chatInterruptTemplate renders your interrupt UI at the end of the transcript while agent.interrupt() is pending. See ChatInterruptTemplate.

0.3.1

  • @threadplane/ag-ui takes a replay option, and the httpReplay helper rebuilds a reloaded thread from the protocol events your server recorded.
  • Reloading a LangGraph thread restores its subagent cards and reasoning.
  • An AG-UI tool call streamed without a parent message now renders inside an assistant message, and chat.css ships with @threadplane/ag-ui.
  • A chatToolCallTemplate projected through <chat> now renders.

0.3.0

AG-UI 1.0

  • 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.
  • @threadplane/ag-ui exposes the raw protocol event stream as rawEvents$.

Chat

  • chatActivityTemplate is a per-message activity slot on <chat>. It replaces the reasoning pill and tool-call region of each assistant message with your own renderer. See ChatActivityTemplate.
  • The zod peer range widens to ^3.25.0 || ^4.0.0. The library imports only the zod/v4 entry point, which both lines ship.
  • Reduced-motion support, disclosure semantics, and contrast fixes across the chat components.

0.2.0

Interrupted streams

  • A stream that closes without terminal evidence is reported as an interruption rather than a completed turn, and only the recovery the adapter can prove is safe is offered. retryable on an interrupted AgentError is true only when the recovery is retry. See Error Handling.

Adapter breaking changes

  • @threadplane/langgraph: LangGraphClientOptions.apiKey is removed and defaultHeaders is added. Send a per-user session token with clientOptions.defaultHeaders, and keep deployment credentials on an endpoint you own.
  • @threadplane/ag-ui: resume requires a pending interrupt batch and answers each native ID exactly once, and uncertain resumes require reconciliation before retry.

0.1.0

First minor release

  • Releases move from patch-only bumps to minor bumps, and the six packages version in lockstep.
  • provideChat() is removed, app-level markdown registry overrides are fixed, and ChatComponent gains a public scrollToBottom().

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?