Skip to content

v1.3.147

Choose a tag to compare

@topcheer topcheer released this 12 Jul 09:15
· 3423 commits to main since this release

v1.3.147

Bug Fixes

Tool Execution Deadlock (agent_tool.go, multi_file_tools.go, multi_file_write.go)

  • safeExecute now runs tools in a goroutine with context cancellation select. If a tool blocks on I/O and ignores ctx cancellation, the agent loop still unblocks when the user cancels. The leaked goroutine completes in the background but the agent is no longer stuck.
  • multi_file_write / multi_file_edit: replaced _ = ctx with actual ctx.Err() checks in write loops so cancellation propagates into the file-writing tools themselves.
  • applyAtomicPlans now accepts ctx and rolls back on cancellation.

Provider Retry Message Accumulation (model_messages.go, model_update.go, submit.go)

  • Added Replace bool field to systemNotifyMsg. When true, uses SetText instead of AppendText.
  • Retry status messages set Replace=true so each retry replaces the previous status line instead of appending duplicates.
  • Non-retry system messages keep AppendText (default false), preserving existing behavior.

IM Binding Session ID Migration (runtime.go, model.go)

  • When session ID changes within the same workspace (e.g. /clear, /branch), bindings are now migrated from the old session to the new one. Previously, reloadBindingLocked would see the old LastSessionID as "foreign" and mute everything, causing the binding watcher to re-mute every 3 seconds.
  • detectAndAutoMute is now called during SetSession when it was skipped during SetIMManager (because session was nil at startup).