This release improves command history handling, adds sound notifications, and includes various bug fixes and performance optimizations.
What's New
- Adds sound notifications for long-running tasks and errors (opt-in feature, disabled by default)
- Adds LSP multiplexer to support multiple LSP toolsets simultaneously
- Adds per-toolset model routing via model field on toolsets configuration
- Adds click-to-copy functionality for working directory in TUI sidebar
- Makes background_agents a standalone toolset that can be enabled independently
Improvements
- Improves tmux experience with better keyboard enhancements and focus handling
- Optimizes BM25 scoring strategy for better performance
- Reduces redundant work during evaluation runs
- Fixes animated spinners inside terminal multiplexers
- Repaints terminal on focus to fix broken display after tab switch in Docker Desktop
Bug Fixes
- Fixes loading very long lines in command history that previously caused crashes
- Fixes LSP server being killed by context cancellation and restart failures
- Fixes session-pinned agent usage in RunStream instead of shared currentAgent
- Fixes sidebar context percentage flickering during sub-agent transfers
- Fixes concurrent map writes by moving registerDefaultTools to constructor
- Returns clear error when OPENAI_API_KEY is missing for speech-to-text
Technical Changes
- Splits monolithic runtime.go into focused files by concern
- Refactors code to use slices and maps stdlib functions instead of manual implementations
- Enables modernize and perfsprint linters with all findings resolved
- Migrates tool output to structured JSON schemas for todo tools
- Replaces json.MarshalIndent with json.Marshal in builtin tools
- Uses errors.AsType consistently instead of errors.As with pre-declared variables
What's Changed
- Don't ignore GITHUB_TOKEN by @dgageot in #2002
- history: Fix loading very long lines by @vvoland in #1940
- docs: update CHANGELOG.md for v1.30.0 by @docker-read-write[bot] in #2003
- Fix broken links to pages subsections by @gtardif in #2005
- feat: add sound notifications for task completion and errors by @Mostamhd in #1870
- Add LSP multiplexer to support multiple LSP toolsets by @dgageot in #1970
- fix(#2012): Return clear error when OPENAI_API_KEY is missing for speech-to-text by @aheritier in #2013
- Bump direct Go dependencies by @dgageot in #2011
- Fix LSP server killed by context cancellation and restart failures by @dgageot in #2008
- Replace duplicated mockEnvProvider test types with shared environment providers by @dgageot in #2014
- fix: use session-pinned agent in RunStream instead of shared currentAgent by @dgageot in #2009
- docs: fix hallucinated CLI flags, commands, and config formats by @dgageot in #2020
- refactor: use slices and maps stdlib functions instead of manual implementations by @dgageot in #2021
- refactor(anthropic): deduplicate sequencing, media-type, and test helpers by @dgageot in #2019
- refactor: split runtime.go and extract pkg/modelerrors by @dgageot in #2010
- tui: improve tmux experience and simplify keyboard enhancements by @dgageot in #2017
- codemode: fix Start() fail-fast and use tools.As for wrapper unwrapping by @dgageot in #2007
- Simplify rulebased router: remove redundant types and score aggregation by @dgageot in #2016
- Unify streamAdapter/betaStreamAdapter retry logic into generic retryableStream by @dgageot in #2018
- Fix task deploy-local by @dgageot in #2024
- fix: default sound notifications to off (opt-in) by @dgageot in #2025
- feat: add per-toolset model routing via model field on toolsets by @dgageot in #2015
- refactor: use errors.AsType consistently instead of errors.As with pre-declared variables by @dgageot in #2028
- tui: repaint terminal on focus to fix broken display after tab switch by @dgageot in #2026
- Enable modernize and perfsprint linters, fix all findings by @dgageot in #2027
- update Slack link in readme by @derekmisler in #2032
- Replace json.MarshalIndent with json.Marshal in builtin tools by @dgageot in #2031
- refactor(dmr): split client.go into focused files by concern by @dgageot in #2029
- Fix last brew install cagent mention by @gtardif in #2034
- tui: fix animated spinners inside terminal multiplexers by @dgageot in #2035
- refactor(runtime): split monolithic runtime.go into focused files by @dgageot in #2030
- feat: click to copy working directory in TUI sidebar by @dgageot in #2036
- Use ResultSuccess/ResultError helpers in tasks and user_prompt tools by @dgageot in #2040
- fix: move registerDefaultTools to constructor to prevent concurrent map writes by @dgageot in #2041
- Fix sidebar context % flickering during sub-agent transfers by @dgageot in #2042
- eval: reduce redundant work during evaluation runs by @dgageot in #2047
- perf: optimize BM25 scoring strategy by @dgageot in #2043
- refactor: remove duplication in model resolution, thinking budget, and message construction by @dgageot in #2038
- feat: make background_agents a standalone toolset by @dgageot in #2033
- todo: migrate tool output to structured JSON schemas by @dgageot in #2045
Full Changelog: v1.30.0...v1.30.1