This release introduces TUI customization capabilities, session management improvements, and OAuth security enhancements, along with numerous bug fixes and stability improvements.
What's New
- Adds support for extending and customizing TUI with additional commands through new
Immediateflag andParserstruct - Adds session delete functionality to session browser
- Adds click-to-select support for agents in the sidebar
- Adds
/forkslash command to duplicate current session into a new tab - Adds mid-turn message steering for running agent sessions with new
/steerand/followupAPI endpoints - Adds OAuth token storage in OS keychain with silent refresh token support
- Adds debug OAuth commands: list, remove, and login
- Adds support for shell expansions (~, env vars) in config paths
- Adds total session count display in session browser dialog title
Improvements
- Improves TUI rendering to match sandbox template
- Makes Ctrl+W context-aware to preserve word deletion in editor when focused
- Makes
/exitclose only the current tab when multiple tabs are open
Bug Fixes
- Fixes crash when opening empty websocket frames in OpenAI provider
- Fixes Gemini thinking tokens not included in output token count for cost calculation
- Fixes tool calls getting stuck as running when moved out of active reasoning block
- Fixes missing type in schema and orphaned function calls in Responses API
- Fixes spurious blank line appearing in every assistant message
- Fixes layout shift when hovering over assistant messages to reveal copy button
- Fixes concurrent RunSession calls causing tool_use/tool_result mismatch
- Fixes panic in code mode when tool handler is nil
- Fixes suggestion ghost text remaining when completion dialog closes on backspace
- Fixes skill frontmatter parsing when description contains a colon
- Fixes sidebar agent click zones mapping all lines to first agent
- Fixes OAuth token security vulnerabilities and infinite recursion issues
- Fixes auto-detect tool install failures being treated as fatal
- Fixes background agent context being cancelled with parent message lifecycle
Technical Changes
- Stores OAuth tokens in OS keychain with graceful fallback to in-memory storage
- Serializes concurrent RunSession calls to prevent race conditions
- Sanitizes message history to ensure all tool calls have results
- Adds regression tests for SSE comment lines from OpenRouter
- Uses in-memory store in keyring tests to avoid macOS keychain permission dialog
- Separates steer and follow-up into distinct queues with lock/confirm semantics
- Adds documentation for OpenAPI toolset
- Optimizes PR CI build process
What's Changed
- docs: update CHANGELOG.md for v1.43.0 by @docker-read-write[bot] in #2347
- Better sandbox by @dgageot in #2348
- support session delete to session browser by @shaj13 in #2352
- fix: include Gemini thinking tokens in output token count for cost calculation by @dgageot in #2353
- fix(openai): ignore empty websocket frames by @pandego in #2350
- Store OAuth tokens in OS keychain and add silent refresh token support by @dgageot in #2355
- bump direct Go dependencies by @dgageot in #2358
- Allow to extend and customize TUI with additional commands by @shaj13 in #2346
- Debug oauth by @dgageot in #2365
- fix: handle missing type in schema and orphaned function calls in Responses API by @dgageot in #2362
- Fix tool call stuck as running when moved out of active reasoning block by @dgageot in #2360
- Add regression tests for SSE comment lines from OpenRouter by @dgageot in #2359
- feat: click on agent in sidebar to switch to it by @dgageot in #2356
- fix(tui): remove spurious blank line from every assistant message by @steilerDev in #2369
- fix: use in-memory store in keyring tests to avoid macOS keychain permission dialog by @dgageot in #2367
- docs: add documentation for OpenAPI toolset by @dgageot in #2371
- fix(tui): reserve stable top row for copy icon to prevent layout shift by @dgageot in #2374
- fix: serialize concurrent RunSession calls to prevent tool_use/tool_result mismatch by @dgageot in #2375
- Faster PR CI by @rumpl in #2378
- Sanitize message history by @rumpl in #2377
- fix(toolinstall): soft-fail auto-detect installs by @pandego in #2386
- fix: prevent panic in code mode when tool handler is nil by @dgageot in #2388
- optional title and app name by @shaj13 in #2366
- fix: /exit closes only the current tab when multiple tabs are open by @dgageot in #2387
- Add support for shell expansions (~, env vars) in config paths by @dgageot in #2389
- Bump direct Go dependencies by @dgageot in #2398
- fix: OAuth token security and bug fixes by @dgageot in #2395
- fix: decouple background agent context from parent message lifecycle by @dgageot in #2392
- Show total session count in session browser dialog title by @dgageot in #2391
- fix: make Ctrl+W context-aware to preserve word deletion in editor by @dgageot in #2390
- Add /fork slash command to duplicate current session into a new tab by @shaj13 in #2385
- Fix: allow tab auto-complete without executing by @joshbarrington in #2325
- Fix skill frontmatter parsing when description contains a colon by @dgageot in #2401
- fix: clear suggestion ghost text when completion dialog closes on backspace by @dgageot in #2399
- Add mid-turn message steering for running agent sessions by @trungutt in #2363
- Fix sidebar agent click zones mapping all lines to first agent by @dgageot in #2402
New Contributors
- @pandego made their first contribution in #2350
- @steilerDev made their first contribution in #2369
- @joshbarrington made their first contribution in #2325
Full Changelog: v1.43.0...v1.44.0