NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #3482 most downloaded on pub.dev
Cross-platform AI agent harness for Dart and Flutter: streaming provider adapters, agent loop with tools, session persistence, context compaction.
Last release today
07 Oct 2026
Ships on a steady schedule
a new release about every 8 days
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
2 months old
254 releases · first in 2026
One column per month.
ci(quarantine): skip shell_job_countdown_pty_test.dart in the gate (flake, #1365 )
gh-1341 Bump js_widget_runtime pin to 9d57570 / ^0.4.156 — flutter_js hostCall/capture channel fix (fa-craft lag, voxel-sandbox spinner)
gh-1307 [BUG] nightly macOS suite red: js_app_error_capture_test — load error NOT captured (empty list) regression from #1273 's engine fix, merged gr
gh-1164 [GOAL] built-in js-apps skill (promoted from app asset, decisive apps-vs-widget routing) + JS render/runtime errors reported back to the autho
chore(pin): awf workflows track @main — always-latest policy (owner directive 2026-10-04). All five machine-loop stubs (teammate, SM, merge, sm-kicker
dmtools-agentic-workflows@main, so awf fixes (kicker real tickstest/machine_kit/factory_stub_ref_test.dart now guarding ALL FIVEuses: refs resolve to exactly main (never a stale SHA, never afactory_ref. The secrets: policy isSOURCE_GITHUB_TOKEN explicitly (their factories declare itsecrets: inherit PAT passthrough (factory-merge-trigger declares nomain policy (#1222).chore(ci): document the sm-kicker head-completeness codeless-head crash (upstream awf#15) — the factory job's gh api calls put --jq before --arg / --a
gh api calls put --jq before--arg/--argjson, so a CODELESS branch head (2 parents, 0 changedaccepts 1 arg(s), received 4 — even when CI is fully greenschedule_message self-chains no longer dieInboxWakePolicy, shared by the CLI and the app hosts) now exempts a[scheduled] prefix, from == to)[mail] wake refused, once per episode) and every lifecycle step is receipted to<messagesRoot>/_scheduled/receipts.jsonl (ScheduledReceiptLog):listDir error) now re-arms at failureBackoff with anonError log instead of silently disarming the delivery heartbeat.InboxWakePolicy next to the streak and re-arms on the samewake_attemptedwake_attempted / turn_started / wake_refused) onto the sameInboxWakePolicy.defaultMaxInboxWakeStreak, and the policy file lostignore_for_file.customProviders:, models.custom:,
roles chain entries, providersQueue: entries) accept optional
connectTimeoutMs/streamIdleTimeoutMs (strict positive-int parsing);
resolution is entry > the providerTimeouts: section > the 180 s/300 s
defaults, per field, and every seeded entry prints its effective values
at boot. The wire seams (sendWatchedProviderRequest connect watchdog,
createSseIterator idle watchdog) resolve per request URL, so all
adapters inherit the tuning; runs without entries are byte-identical
(AC6). Also: the retry backoff contract — a parseable delta-seconds
Retry-After wins over the ladder for that attempt, hard-capped at the
60 s ceiling (the clamp names the advertised value; 0 counts as
absent, malformed/HTTP-date headers fall back to the ladder with a trace
note) — and the dual retry budgets (connection-class cap 4, stream-class
cap 3, independent counters, the terminal story carries both). Trace
lines pin the format budget=<connection|stream> attempt=<n>/<cap> delay=<ladder|server|clamp>; the tuning report prints per-model
p50/p95 inter-chunk gap + watchdog-fire counts with the
streamIdleTimeoutMs ≈ 2× p95 recipe (the production feeder lands with
#1392's LatencyMeter).docs/embedding.md, with the explicit "hosts ride wireAgentCore,
never adk_dart" rule), the host-facing key-slot resolver
(AgentCoreServices.resolveKey + HostKeyResolver — the effective slot
NAME, pinned-twin drift hints identical to the CLI's migration notes,
registry-leg knownSlotNames, injected env/store readers only), and
lifecycle telemetry for in-process hosts (AgentCoreServices.telemetry:
the pure interface + in-memory ring in core, the fa.log file sink behind
lib/io.dart; requestStart/firstToken/turn/tool/run records with
durations and the provider HTTP status).gh api calls put --jq before
--arg/--argjson, so a CODELESS branch head (2 parents, 0 changed
files: a routine branch-sync merge with no content diff) crashes the
job with accepts 1 arg(s), received 4 — even when CI is fully green
on that head, and the job's own rescue dispatch can never heal exactly
those heads. Workaround until the upstream fix: keep the branch head
code-bearing. Live instance: run 37193754301 on head 1fe9b1232.schedule_message self-chains no longer die
silently at the agent-chatter wake cap. The idle inbox-wake gate
(InboxWakePolicy, shared by the CLI and the app hosts) now exempts a
delivered scheduled self-reminder ([scheduled] prefix, from == to)
from the 10-consecutive-wake streak: a deliberate agent-chosen cadence
(night watch, periodic sweep) wakes forever, while foreign
agent-to-agent chatter stays capped (anti-storm REG) and user-kind
mail always wakes. A 30s cadence floor bounds a zero-delay
re-schedule spin (E5). Refused wakes are visible ([mail] wake refused, once per episode) and every lifecycle step is receipted to
<messagesRoot>/_scheduled/receipts.jsonl (ScheduledReceiptLog):
scheduled / delivered / delivery_failed / scan_failed /
wake_attempted / turn_started / wake_refused. A failed scheduler scan
(transient listDir error) now re-arms at failureBackoff with an
onError log instead of silently disarming the delivery heartbeat.InboxWakePolicy next to the streak and re-arms on the same
resets), so a held gate no longer appends per-tick wake_attempted
rows (~43k duplicate lines/day) and a repeat episode after user input
is announced and receipted again. The app host receipts its wake path
(wake_attempted / turn_started / wake_refused) onto the same
trail — AC4 is no longer CLI-only. A self-reminder adopted across a
session-id change delivers FROM the live mailbox (from re-addressed
alongside to), so the resumed chain stays self-shaped and exempt
instead of falling back to the capped chatter lane. Plugin-only
pending batches are explicitly classified as chatter (the contract is
stated, not accidental), the wake cap is single-sourced from
InboxWakePolicy.defaultMaxInboxWakeStreak, and the policy file lost
a stale copy-pasted ignore_for_file.gh-1208 [BENCH] fix-git task image broken on CI runners — docker compose build fails in BOTH TBench-1 runs (unknown_agent_error, trial never starts)
fix( #1044 ): AIIN mobile/macOS add-provider — sign-in completes but the provider is never added
gh-1210 [BENCH] Pre-seed a system-level git identity in task containers (fa-setup.sh.j2) — stop burning agent turns on 'Author identity unknown'
gh-1054 [GOAL] Headless/unattended runs must detect long-stuck tool calls mid-run and follow up — liveness heartbeats + cancel/retry/convert, not a si
fix( #1121 ): replay zero-byte watchdog-killed requests on the shared ladder
feat(cli): stuck foreground tool calls nudge the model via steering
feat( #861 ): one passkey-capable auth surface for provider sign-in by @vabhzw17eg2qu4m9-bit in #1142
Full Changelog: v1.0.497...v1.0.498
feat( #1172 ): release pipeline pushes bump directly to main via fa-release-bot App
gh-1149 [daily-publish] cli leg failed
feat(1086): sandbox shell heredocs, here-strings, fail-fast guards
fix(release): land the version bump as a PR — protected main rejects direct bot pushes
chore(deps): bump ruby/setup-ruby from 1.324.0 to 1.327.0 in the github-actions group by @dependabot [bot] in #1056
Full Changelog: v1.0.490...v1.0.492
gh-1032 Migrate to flutter_agent_memory 0.2.3: conflict-free deletions (tombstones + deleted/ dir) by @ai-teammate in #1050
Full Changelog: v1.0.489...v1.0.490
feat( #969 ): show add-provider flow first on fresh install by @vabhzw17eg2qu4m9-bit in #971
Full Changelog: v1.0.488...v1.0.489
site: add /oauth/callback — the web app's OAuth popup receiver target by @ai-teammate in #1048
Full Changelog: v1.0.487...v1.0.488
fix(920): optimal space usage in the CLI TUI status band by @vabhzw17eg2qu4m9-bit in #923
Full Changelog: v1.0.486...v1.0.487
chore: pin factory 1fdb4c6 (git-guard exec-loop fix) by @IstiN in #1043
Full Changelog: v1.0.485...v1.0.486
fix(ci): pub.dev leg polls past API lag; pin-bump survives failed provenance by @IstiN in #1037
Full Changelog: v1.0.484...v1.0.485
pub.dev leg — poll the pub.dev API until it
reflects the rerun's publish instead of a single read. 2026-09-28: the
recovery rerun published AND self-verified 1.0.483 (pub.dev verified
at 05:44:11Z), but the leg's one-shot API query 52s later hit a stale
replica, saw 1.0.482 and false-errored "manual publish needed". Initial
behind-check now takes three spaced reads (newest wins) so a stale read
cannot trigger unnecessary recovery either.install-pin-bump no longer hard-gates on release-provenance.
When provenance FAILED (binaries/signature upload race), the marker job
was left SKIPPED — and rerun --failed never resurrects skipped jobs, so
the vpinned marker stayed stale forever (v1.0.483: the recovery rerun
went green, the marker never advanced). The job now uses
if: always(); pin_release.sh's own pre-move provenance gate
(check_install_pin.sh with FA_PIN_TARGET) fails it loudly instead of
moving the marker, and a FAILED job IS part of rerun --failed — so the
recovery cascade reaches it.fix(925): never let a bash_job log IO failure reach the root zone by @vabhzw17eg2qu4m9-bit in #930
Full Changelog: v1.0.482...v1.0.483
vpinned RELEASE MARKER —
no committed pin at all. install-config.yaml pinned_cli_version
said 0.1.452 while the generated site/install.sh carried 1.0.480
(#1015 hand-edited only the generated file): a committed pin rots, and a
pin advanced by committing/pushing from the release pipeline re-races
auto_release and re-triggers Pages on every tag. Instead, the
installer resolves the standing vpinned release marker (its
PINNED_VERSION asset names the known-good release) and verifies the
pointed release exactly as before — the marker is only a pointer, so a
tampered one fails closed (DoS at worst, never a bad binary; the
embedded trust anchor stays the real trust root).
scripts/pin_release.sh advances the marker from the tag-scoped
install-pin-bump CI job after release-provenance signs the release:
pure release-artifact manipulation — zero commits, zero pushes, no
RELEASE_PAT, no regeneration (is-newer keeps bumps forward-only; a
pre-move check_install_pin.sh run with FA_PIN_TARGET proves the new
release BEFORE the marker moves, and a post-move run proves the
published marker). scripts/check_install_pin.sh (new ci.yml
install-pin-gate job on every PR, aggregated into the Quality gate)
fails when the generated installer drifts from the marker model
(E_PIN_DRIFT), the marker is missing/ill-formed (E_PIN_MISSING /
E_PIN_INVALID), or the marked release lacks a signature-verified
SHA256SUMS covering every platform archive (E_PIN_PROVENANCE_MISSING
/ E_PIN_PROVENANCE_INVALID / E_PIN_ASSET_COVERAGE). Fixture coverage
in installer_verify_selftest.sh: contracts 1/1b/5/6, including
end-to-end pin_release.sh runs against a file:// fixture release
root. gen_installers.dart drops the pinned_cli_version knob.chore(factory): bump dmtools-agents to b44b5493 — #547 / #548 / #549 lockstep by @IstiN in #1019
Full Changelog: v1.0.481...v1.0.482
quarantine( #1012 #1014 ): linux shard-0 PTY timing flakes (scheduled_indicator + ctrl_c_double_press) by @IstiN in #1013
Full Changelog: v1.0.480...v1.0.481
gh-946 CLI Rename unattended change to autopilot by @ai-teammate in #949
Full Changelog: v1.0.479...v1.0.480
chore: factory pin bump d99fc8c → ac8b718 (unfreeze armed merge window) by @IstiN in #966
Full Changelog: v1.0.477...v1.0.478
feat(ui): one-tap copy affordance on every error surface by @vabhzw17eg2qu4m9-bit in #899
Full Changelog: v1.0.474...v1.0.476
No changes since v1.0.471.
No changes since v1.0.471.
chore(deps): bump the github-actions group with 10 updates by @dependabot [bot] in #853
Full Changelog: v1.0.468...v1.0.469
fix(cli): exit only on double Ctrl+C ( #830 ) by @vabhzw17eg2qu4m9-bit in #843
Full Changelog: v1.0.467...v1.0.468
tui: config section is now parsed strictly — an unknown key under
tui: (e.g. a typo'd theme2: left behind by hand-editing) throws
ConfigException at boot instead of being silently ignored. Remove
the unknown key; the error message lists the known ones
(theme, classic, statusLine). New tui.statusLine: section
configures the status bar (preset | custom groups | separator |
segmentOptions | transparent); unknown segment ids there are
warned and dropped at boot, not fatal.feat(tui): transcript chrome - Box frames, dividers, bordered tool cards ( #807 ) by @vabhzw17eg2qu4m9-bit in #828
Full Changelog: v1.0.466...v1.0.467
chore: pin factory d7d7308 — dispatch dup guard by @IstiN in #882
Full Changelog: v1.0.465...v1.0.466
chore: revert SM tick to hosted pool (Bitrise invisible to IstiN org) by @IstiN in #871
Full Changelog: v1.0.464...v1.0.465
chore: pin factory 77fc330 — sm: validation economy ( #506 ) by @IstiN in #868
Full Changelog: v1.0.463...v1.0.464
fix(cube): fs guard resolves symlinks — access checks judge the file the OS will open ( #791 ) by @vabhzw17eg2qu4m9-bit in #813
Full Changelog: v1.0.462...v1.0.463
feat(tui): keyHint grammar + /help hotkey table ( #809 ) by @vabhzw17eg2qu4m9-bit in #834
Full Changelog: v1.0.461...v1.0.462
feat(tui): theme token parity - 67 omp tokens, syntax/markdown palettes, symbol presets ( #804 ) by @vabhzw17eg2qu4m9-bit in #832
Full Changelog: v1.0.459...v1.0.460
ci(release): ASC version-floor pre-check + AAB gate self-test ( #798 ) by @vabhzw17eg2qu4m9-bit in #800
Full Changelog: v1.0.458...v1.0.459
ci: runner split (ARM pool + self-hosted M5 macOS) by @IstiN in #844
Full Changelog: v1.0.457...v1.0.458
One model-list dispatch everywhere: codex identity hint + bundled-catalog provenance by @vabhzw17eg2qu4m9-bit in #780
Full Changelog: v1.0.456...v1.0.457
fetchModelsForEndpoint, with registry entries' persisted
CustomProvider.kind winning over URL-shape guessing.
Breaking for out-of-tree ModelListDialect implementers: the
fetch override signature gains an optional named
void Function()? onBundledFallback parameter — keep it in the
override's signature (and ignore it) unless your dialect can answer
from a bundled offline catalog when the live fetch fails.fix(772): one identity per provider - name/kind split resolved through the catalog seam by @vabhzw17eg2qu4m9-bit in #779
Full Changelog: v1.0.455...v1.0.456
chore: pin factory dff2d08 (mergeBot fallback scoped — #762 ) by @IstiN in #822
chore: pin factory af38761 (unarm-stale BEHIND-only — #762 deadlock fix) by @IstiN in #799
Full Changelog: v1.0.453...v1.0.454
feat(machine): event-driven merge bot stub (factory a7a1b13) by @IstiN in #784
Full Changelog: v0.1.452...v1.0.453
test(550-family): /dap menu leg anchors on the painted screen (Stop DAP races sibling rows) by @vabhzw17eg2qu4m9-bit in #776
Full Changelog: v0.1.450...v0.1.451
Full Changelog : v0.1.449...v0.1.450
Full Changelog: v0.1.449...v0.1.450
Full Changelog : v0.1.448...v0.1.449
Full Changelog: v0.1.448...v0.1.449
fix(729): over-window resume — raised-window override + window-bounded compaction payloads by @vabhzw17eg2qu4m9-bit in #767
Full Changelog: v0.1.447...v0.1.448
fix( #761 ): never emit whole-screen CSI S/T when the leading edge row is static by @vabhzw17eg2qu4m9-bit in #766
Full Changelog: v0.1.446...v0.1.447
gh-746 Android Play Store Error by @ai-teammate in #750
Full Changelog: v0.1.445...v0.1.446
gh-752 Boarding screens in Apps disable swipping by @ai-teammate in #753
Full Changelog: v0.1.444...v0.1.445
chore: repin factory to 8d83bf4 (fail_validation unarm + branch fallback) by @IstiN in #755
Full Changelog: v0.1.443...v0.1.444
chore: repin factory to bd763b3 (review→rework arming fix) by @IstiN in #754
Full Changelog: v0.1.442...v0.1.443
fix(735): TermiosGuard — re-assert raw-mode tty flags after tool phases so Ctrl+S steering survives IXON re-enable
feat(cli): pi mode — pi's exact benchmark config (4 tools, bare prompt, token parity) by @vabhzw17eg2qu4m9-bit in #689
Full Changelog: v0.1.439...v0.1.440
config(machine): machine author is ai-teammate (the App), not the SOURCE-token login by @IstiN in #747
Full Changelog: v0.1.437...v0.1.438
gh-740 [GOAL] Compaction failure must never brick a session — deterministic trim fallback, decorrelated role chain, trap circuit-breaker (M1 spec: 90s
Full Changelog: v0.1.436...v0.1.437
Your coding agent can read these notes before it upgrades. Set up the MCP server →