This release adds Atlas Cloud and API Route as new provider aliases, introduces live background agent visibility in the sidebar, streaming file previews in the lean TUI, and the Command Code harness type, alongside numerous bug fixes for A2A compatibility, provider cloning, think tool concurrency, and TUI settings.
What's New
- Adds Atlas Cloud as a built-in OpenAI-compatible provider alias, with automatic
ATLASCLOUD_API_KEYdiscovery and credential forwarding - Adds API Route as an OpenAI-compatible provider alias, using
https://global.api-route.com/v1andAPI_ROUTE_API_KEY - Adds
command-codeharness type, enabling agents to be run by the Command Code CLI (cmd) - Shows a live "Background: N running" indicator in the expanded and collapsed Agents sidebar
- Streams syntax-highlighted file previews in the lean TUI as
write_filetool arguments arrive, with filename-based syntax highlighting and plain-text fallback - Merges streaming deltas in the API server's SSE streams, coalescing per-provider chunks into larger events
Improvements
- Shows the command or file path in tool-call titles (e.g.,
Shell: docker ps -a) instead of just the tool name - Redesigns the TUI settings dialog to be responsive, contiguous within sections, with clickable category tabs and stable geometry across category switches
Bug Fixes
- Fixes race condition in the Think tool when multiple concurrent tool calls append to a shared slice without synchronization
- Fixes A2A toolset failing to read A2A 1.0 agent cards, which caused
no compatible transports founderrors when calling agents served byserve a2a - Fixes A2A toolset failing to discover agent cards under a base URL that has a path component
- Fixes A2A toolset panicking on null agent card interfaces instead of rejecting them
- Fixes A2A toolset not sending configured headers to the endpoint the client selects
- Fixes think scratchpads being shared across conversations instead of isolated per conversation
- Fixes provider clones not preserving transport, and surfaces clone failures with actionable errors
- Fixes routed provider clones not being isolated, and retains thinking-off intent and numeric precision across clones
- Fixes serving model accounting for routed turns, so only the successful attempt is priced using the serving leaf's catalogue entry
- Fixes serving metadata and fallback sidebar updates not being preserved across retries
- Fixes fallback serving model notifications not reaching all UI consumers
- Fixes runtime decisions delivered before confirmation waits being dropped
- Fixes
context_size: 64000(bare YAML integer) being ignored in Docker Model Runner configuration - Fixes tool-result images being sent incorrectly in chat completions; images are now sent as text (data URI/URL) inside the tool message
- Fixes canceled input reads leaking goroutines blocked on the underlying read
- Fixes potential deadlock in
gitbranchwatcher when replacing pending changes on a full channel - Fixes skills not unblocking inherited output pipes on cancellation
- Fixes skills caching oversized files instead of rejecting them upfront
- Fixes chat server not finalizing conversations before sending terminal responses
- Fixes chat server not preserving cached history when execution is canceled
- Fixes selected agent not being preserved during background usage updates
- Fixes collapsed sidebar not sizing correctly from the wrapped agent summary
- Fixes OpenAI requests not being priced by actual service tier (
fast/priority/ultrafastpremiums now derived per-model from the catalogue)
Technical Changes
- Enables 11 additional shared rubocop-go lint cops, bringing enforcement to 34 of 36 available cops
- Drops
ContextFirstParameterandNoContextFieldlint suppressions - Decouples attention dialogs, tool expansion, title generation, RAG backend, streaming sender, and command resolution from concrete types via consumer-defined interfaces
- Adds
Lint/ChannelDirectioncop to flag unnecessarily bidirectional channel parameters and return values - Adds
Lint/ChannelStateCheck,Lint/CancellationLoop, andLint/ClosedChannelLoopcops to detect channel drain races and busy-wait loops - Adds
cancellation_safe_result_sendandnonblocking_channel_replacementlint cops paired with the concurrency fixes - Reduces lint runtime by adopting shared rubocop-go execution infrastructure and targeted hot-path optimizations (deduped interface method sets, memoized escaped channel types, cached position keys)
- Binds OAuth callback ports during startup rather than on demand
- Shares streaming delta merging logic in
pkg/runtime/eventmerge - Adds community resources documentation page and relocates operational guides
- Adds Atelier to community resources
What's Changed
- docs: update CHANGELOG.md for v1.150.0 by @docker-read-write[bot] in #4563
- feat: add Atlas Cloud provider by @binyangzhu000-sudo in #3962
- lint: enable the expanded shared rubocop-go cop catalog by @dgageot in #4564
- refactor: consumer-owned interfaces for dialogs, tools, and app services by @dgageot in #4565
- chore(deps): bump docker/docs/.github/workflows/validate-upstream.yml from 1cb9a4d2c65d712da863e30cd3a1319ddeea3298 to 3f5e702096f8f304d5c007fa633d57098506123b in the actions group across 1 directory by @dependabot[bot] in #4574
- chore: refresh models.dev snapshot (+151 -138 ~264) by @github-actions[bot] in #4573
- docs: auto-update for merged PRs (2026-10-10) by @aheritier in #4566
- codingharness: add the command-code harness type by @PremModhaOfficial in #4577
- fix(think): protect concurrent tool calls with a mutex by @dlanov in #4570
- docs(claude): distinguish access paths and feature limits by @aheritier in #4586
- fix(runtime): retain decisions delivered before confirmation waits by @aheritier in #4589
- docs: auto-update for merged PRs (2026-10-14) by @aheritier in #4591
- fix: price routed turns using the serving model by @aheritier in #4579
- fix(provider): preserve transport and surface clone failures by @aheritier in #4587
- fix: isolate think scratchpads by conversation by @aheritier in #4592
- fix(dmr): honor a YAML integer context_size by @locker95 in #4596
- fix(a2a): read A2A 1.0 agent cards in the a2a toolset by @smashingtags in #4572
- feat: add API Route as an OpenAI-compatible provider alias by @DennyHo0917 in #4567
- chore: bump direct Go dependencies by @dgageot in #4598
- fix(tui): clean up the settings dialog by @dgageot in #4599
- fix(acp): show the command in tool-call titles by @locker95 in #4603
- lint: detect unnecessarily bidirectional channels by @dgageot in #4604
- fix: send tool-result images as text in chat completions by @rumpl in #4610
- feat: show live background agent count in Agents sidebar by @dgageot in #4611
- fix: concurrency/correctness fixes with matching custom lint cops by @dgageot in #4605
- test: reuse checked-in CLI fixtures across cases by @dgageot in #4613
- fix: stabilize flaky tests and chat conversation finalization by @dgageot in #4614
- lint: detect channel drain races and busy-wait loops by @dgageot in #4612
- test: run gitbranch watcher stress test in-memory with synctest by @dgageot in #4616
- docs: auto-update for merged PRs (2026-10-16) by @aheritier in #4606
- docs: add community resources and keep Community on GitHub Pages by @aheritier in #4618
- docs: add Atelier to community resources by @rumpl in #4622
- perf(lint): adopt shared rubocop-go execution and reduce analysis overhead by @dgageot in #4626
- test: speed up fixtures and isolate flaky test dependencies by @dgageot in #4627
- docs: auto-update for merged PRs (2026-10-17) by @aheritier in #4623
- fix: price OpenAI requests by actual service tier by @dgageot in #4625
- test: make Gemini integration fixtures reviewer-only by @aheritier in #4619
- feat: stream syntax-highlighted file previews in lean TUI by @rumpl in #4628
- chore(deps): bump the actions group across 1 directory with 5 updates by @dependabot[bot] in #4630
- feat(server): merge streaming deltas in the API server's SSE streams by @trungutt in #4634
New Contributors
- @binyangzhu000-sudo made their first contribution in #3962
- @PremModhaOfficial made their first contribution in #4577
- @dlanov made their first contribution in #4570
- @locker95 made their first contribution in #4596
- @smashingtags made their first contribution in #4572
- @DennyHo0917 made their first contribution in #4567
Full Changelog: v1.150.0...v1.151.0