All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
[0.3.0] - 2026-09-23
Added
:a2a_sync_timeoutsetting forA2UI.A2A, bounding how long the adapter waits for a synchronization acknowledgement and for buffered A2UI parts to drain. Compile-time, defaulting to5_000ms:config :a2ui, :a2a_sync_timeout, 5_000Neither timeout is fatal: a synchronization that times out continues processing, and a drain that times out yields a response carrying no buffered A2UI parts.
Changed
Requires
a2a ~> 0.3.0, up from~> 0.2. A2A 0.3 is that library's v1.0 protocol release: streaming events moved to theStreamResponsewrapper, A2A errors carry agoogle.rpc.ErrorInfoarray, andmessage/streamis gated on a declared streaming capability. A2UI uses only the synchronous A2A path —send_message,cancel_taskandA2A.Part.Data— so none of that reaches this library and no code changed.The requirement is now pinned to a single A2A minor rather than the whole
0.xrange. A2A is pre-1.0 and ships breaking changes in minor releases, so~> 0.2would have let 0.3's wire changes land here unannounced — and~> 0.3would do the same for 0.4. A2A 0.2.x is no longer supported.
[0.2.0] - 2026-03-24
Added
A2UI.Agentbehaviour anduse A2UI.Agentmacro for building agents with minimal boilerplateA2UI.Agent.send_message/2andsend_messages/2helpers for agent-to-client messagingA2UI.Connectionopaque handle for transport-agnostic client connections- SSE + JSON-RPC HTTP transport:
A2UI.Plug,A2UI.Plug.SSE,A2UI.Plug.JSONRPC,A2UI.Plug.ConnectionRegistry A2UI.Transport.SSEclient-side transport for connecting to SSE endpoints- A2A protocol transport binding:
A2UI.A2Aserver adapter,A2UI.Transport.A2Aclient transport (optional dep on:a2a ~> 0.2) A2UI.Protocol.Messages.Errormessage type for client-to-server error feedbackA2UI.Catalogmodule for compile-time component type validation against catalog schemas
Changed
- Agents track connections as
%{id => Connection.t()}map instead ofMapSetof PIDs (breaking for custom agent implementations that relied on the internal connection tracking format) - Demo agent refactored to use
A2UI.Agentbehaviour
Fixed
- Form handling: added missing
phx-submitattribute - Catalog validation: accept custom
component_modulesin validation
[0.1.0] - 2026-03-06
Added
- A2UI v0.9 protocol types: Surface, Component, DataModel, Messages
- JSONL parser for protocol message streams
- JSON Pointer (RFC 6901) implementation for data model access
- Data binding with path resolution and function call descriptors
- Component tree management with template expansion
- Surface manager for pure-functional state management
- Phoenix function components for all A2UI component types
- LiveView integration with two-way data binding and action dispatch
- Transport behaviour with local process-messaging implementation
- Video and AudioPlayer components
- Client-side validation via JS hooks (required, regex, length, numeric, email)
- Client-side formatting functions (formatString, formatNumber, formatCurrency, formatDate, pluralize)
- Server-side function evaluation (formatString, formatNumber, formatCurrency, formatDate, pluralize, boolean logic)
- JS interactivity hooks (A2UITabs, A2UIModal, A2UISubmit, A2UIValidation)
- Theming support via CSS variables (primaryColor, iconUrl, agentDisplayName)
- Local action support (openUrl, client-side function calls on Button)
- Demo application with
mix a2ui.demo
Fixed
- README: corrected component count (16 → 18), removed completed items from "Not Yet Implemented"
- SPEC.md: added Known Gaps section documenting unimplemented spec features