NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Flutter integration for the agents framework: a preconfigured harness agent, device-capability context providers and tools, chat history persistence, and configurable model profiles.
Last release 2 months ago
31 Jul 2026
Too new to tell
only 1 release windows
Nearly every release is documented
notes for 7 of 7 stable releases
Nothing withdrawn
no release was ever pulled
2 months old
7 releases · first in 2026
One column per month.
Breaking: requires `agents: ^2.0.0`. Inherits the workflow changes: streamAsync / resumeStreamAsync now return a live run driven in the background (wa
agents: ^2.0.0. Inherits the workflow changes:
streamAsync / resumeStreamAsync now return a live run driven in the
background (watch StreamingRun.watchStreamAsync() rather than reading
outgoingEvents straight after the await), external responses route by
request id back to the issuing executor and throw when they cannot be
routed, and WireMarshaller.valueConverters lets hosts checkpoint payloads
outside the JSON model.extensions: ^0.6.0 and extensions_flutter: ^0.5.0.
Inherits the AI function-invocation change: the invocation loop withholds
function declarations on a final tool-free round trip instead of returning
unanswered tool calls, and throws once
maximumConsecutiveErrorsPerRequest is exceeded rather than returning a
partial response. Agents configured with a low iteration or error limit will
see one extra provider call, or a thrown error where a partial response used
to come back.geocoding: ^5.0.0, which moved its top-level
functions onto a Geocoding class. The ReverseGeocoder and
ForwardGeocoder defaults are now the new top-level
reverseGeocodeCoordinates and forwardGeocodeAddress functions in this
package, which wrap a shared Geocoding instance. Injected fakes are
unaffected, and the Placemark / Location types are unchanged. Reverse
geocoding now also works on macOS, via the new geocoding_darwin
implementation.anthropic_sdk_dart: ^6.0.0, whose types appear in
the configured-chat-client factory surface.background_downloader 9.5.7, connectivity_plus 7.3.1, intl
0.20.3, network_info_plus 8.2.1, timezone 0.11.1, and wakelock_plus
1.7.0.Breaking: ConfiguredChatClientFactory.customClientResolver gains an AgentScope? scope parameter, forwarded from createChatClient. Host resolvers can n
ConfiguredChatClientFactory.customClientResolver gains an
AgentScope? scope parameter, forwarded from createChatClient. Host
resolvers can now key per-conversation state (for example a local model's
KV-cache lineage) to the conversation a client serves, removing the need
for scope-aware factory subclasses.src/ai_agent_provider.dart placeholder.telemetry/ subsystem, folded in from the downstream app: UsageStore
(the durable usage_records ledger implementing UsageRecordSink, now
living beside UsageTrackingChatClient), AgentRunTelemetryStore with
crash recovery (recoverInterrupted), AgentRunScope (an AgentScope
carrying agent and run ids for usage attribution), and
AgentCenterOverview time-series aggregation over the two ledgers.activity/ subsystem: AppActivityMonitor (app-wide idle signal;
hosts report foreground transitions via reportForeground(bool) — a
deliberate change from the app's reportLifecycle(AppLifecycleState) so
the class stays free of Flutter imports) and the ToolActivity registry
with ToolActivityTrackingChatClient.a2a/ gains the host side to match its existing pairing client:
A2AHostService (a shelf-backed HTTP server exposing local configured
agents to paired devices, with single-use pairing tokens, SHA-256 bearer
authorization, and per-caller session isolation) behind an io/stub
conditional facade, plus NetworkSharingSettings. Adds shelf and
pool dependencies (server platforms only at runtime; the web stub
reports hosting unsupported).web/ gains the search side folded in from the app:
SearchUrlWebSearchSource (query any q=-style endpoint; JSON/SearXNG
or HTML parsing with redirect unwrapping), WebSearchSettings
(SecretStore-backed multi-endpoint config with categories and user-agent
profiles), WebSearchTraceLog + TracingWebPageLoader (opt-in HTTP
tracing), and WebPageHtmlRenderer (renamed from the app's
WebPageRenderer to avoid colliding with this package's
web_page_renderer.dart markdown helpers) with
HeadlessWebViewHtmlRenderer — a reimplementation of the app's
webview_flutter renderer on flutter_inappwebview, gated by a static
isSupported (Android/iOS/macOS/Windows). The app no longer needs
webview_flutter; one WebView stack serves both loading and rendering.PushoverSettings (→ pushover/), EmbeddingSettings (→ memory/,
it is the MemoryScorer handed to RecordStoreVectorStore),
ThinkingSettings (→ configured_agents/), and a new user_profile/
capability folder (UserProfileSettings + UserProfileContextProvider).
Persisted key literals are unchanged (including historical agents_app.
prefixes) so existing installs keep their data.activity/ also gains the chat terminal subsystem, reworked during the
fold-in from an xterm-backed buffer to a terminal-widget-free design:
ChatTerminalSession records a capped ring of semantic TerminalEvents
(command started / output chunk / completed / failed / cleared) with a
sync broadcast onEvent stream and events replay, the TerminalActivity
registry keys sessions per conversation (delegate scopes fold onto the
parent), and TerminalMirroringShellExecutor mirrors any ShellExecutor
into a session. Presentation — prompt markers, ANSI colors, CRLF, status
lines — is the host renderer's job (the reference app binds events to an
xterm buffer).package:agents_flutter/chat_provider.dart entry point: the chat
view-model contract folded in from the downstream app — LlmProvider,
the UI-facing ChatMessage/Attachment/MessageOrigin/ToolApproval
types, LlmException, TokenSmoother, AgentLlmProvider (bridges an
AIAgent into the contract with tool-approval pause/resume, run
telemetry, and activity reporting), and EchoLlmProvider (renamed from
the app's EchoProvider; useful as a UI test double). It is a separate
library, not part of the main barrel, because the UI-facing ChatMessage
would collide with package:extensions/ai.dart's wire-level
ChatMessage in any file importing both.conversations/ subsystem: the Conversation/ConversationSession/
Channel domain, ConversationStore + ConversationSessionStore +
ChannelStore (RecordStore-backed, collection names unchanged from the
app), ConversationService, the ChatsQuery filter model, the
ChatTitleSummarizer background service, and an addConversations() /
addChatTitleSummarizer(residentTitleClient:) registration pair.tasks/ subsystem: AgentTask (+ recurrence), AgentTaskStore,
TaskSchedulerService, and addTaskScheduler(). The scheduler stays a
plain singleton the host starts explicitly.chat_history/ gains ChatTranscriptStore, co-located with
ChatMessageCodec/ChatMessageRecords whose record shape it reads; a
contract test now pins the record field literals and the write→read
round-trip.logging/ gains PromptLog and PromptLoggingChatClient (+
renderRequest); configured_agents/ gains
LoggingConfiguredChatClientFactory (prompt capture, usage attribution,
tool-activity tracking in one decorator stack) and
chooseLocalWarmupTarget for pre-loading a local model at startup.
The chat-client decorator is named PromptLoggingChatClient — not the
app's original LoggingChatClient — to avoid colliding with
package:extensions/ai.dart's class of that name.HeadlessWebViewPageLoader accepts an optional userAgent, sent with every page load in place of the platform WebView's default. Hosts opt in explicitly
HeadlessWebViewPageLoader accepts an optional userAgent, sent with
every page load in place of the platform WebView's default. Hosts opt
in explicitly (for example from a user-managed profile); when omitted,
behavior is unchanged and the system default is sent.Add vendor-neutral local web search and direct page-opening tools for the Flutter harness. open_web_page renders JavaScript in an isolated, incognito
open_web_page renders JavaScript in an isolated,
incognito headless WebView, extracts readable text and metadata, and applies
a configurable public-network navigation policy.open_web_page while retaining hosted
search. Both retain the existing per-agent web-search access gate.flutter_inappwebview, with structured timeout, navigation, HTTP, loading,
empty-content, and challenge-detection results. Flutter web reports the
capability as unsupported.Pushover as a harness capability with per-agent gating:
FlutterHarnessAgentOptions.pushoverClient (plus
pushoverToolOptions) — when a host attaches a configured
PushoverClient, the harness adds the Pushover tools. Client-gated
rather than flag-gated: the tools send real notifications, so they
exist exactly when the host attached a client.AgentAccessConfig.enablePushover — opt-in per saved agent, false by
default. ConfiguredAgentFactory strips the client from agents that
have an access record without the opt-in, wherever the client was
attached; agents without an access record keep the harness default.createPushoverTools and PushoverToolOptions — builds the send,
quota, and receipt tool set from one configuration.Require agents: ^1.6.0, including the new live shell output stream and callback APIs and persistent-shell stderr capture.
agents: ^1.6.0, including the new live shell output stream and
callback APIs and persistent-shell stderr capture.First public release. Flutter integration layer for the `agents` framework.
First public release. Flutter integration layer for the
agents framework.
FlutterHarnessAgent — a one-call HarnessAgent preconfigured with the
Flutter capabilities, compaction, function invocation, and per-call chat
history persistence. Reachable from a ChatClient via
asFlutterHarnessAgent(...), or through dependency injection with
addFlutterHarness(...) / useFlutterHarnessAgent(...).ServiceCollection or directly on ChatClientAgentOptions:
TemporalContextProvider plus the get_current_time tool.ConnectivityContextProvider (with ConnectivityMonitor)
plus the get_connectivity tool.DeviceContextProvider, get_device_info, and
get_app_info, with DeviceInfoHostedService and
PackageInfoHostedService for the DI path.LocationContextProvider, get_current_location, and
geocode_address.NetworkContextProvider and get_current_network_info.set_wake_lock tool.PushoverClient plus the send_pushover_notification,
get_pushover_limits, and check_pushover_receipt tools, registrable
with addPushover(...). Credentials stay out of the tool schema, so a
model chooses what a notification says but never who receives it.
Supports multipart image attachments, resolved from a model-supplied
reference through a host-provided PushoverAttachmentResolver, and
end-to-end encryption via PushoverAesEncryptor.configured_agents/): ConfiguredAgentsManager,
ConfiguredAgentFactory, AgentScope, and persistent
AgentConfigurationStore / ModelSourceStore for defining and switching
agents at runtime.configured_agents/model_profile/): per-model chat and
tool-call formats (Hermes, Llama 3, Mistral, LFM2), streaming tool-call
decoding, think-tag filtering, GGUF metadata inspection, and
OpenAiCompatibleChatClient.FlutterChatHistoryProvider, ChatMessageCodec,
and stale tool-result redaction.sembast: RecordStore with in-memory and
sembast backends, RecordStoreAgentFileStore, and
RecordStoreVectorStore with a memory scorer.DownloadService backed by background_downloader, plus a
Hugging Face API client and model downloader.AppLogStore, an AppLogStoreLoggerProvider, and
AgentTrafficLoggingAgent for recording agent request/response traffic.UsageTrackingChatClient and
TextFileInliningChatClient.a2a/.layout/.Your coding agent can read these notes before it upgrades. Set up the MCP server →