Cancel pending timers when a child is closed
Stale timer bodies were re-delivered to the orchestrator pane after the parent had already processed the sub-agent's reply and called close_process. The timer registry held no link to the child lifecycle, so timers owned by or watching the closed child lingered until something triggered a fire — e.g. a trailing classifier tick for the now-removed child. Add an OnChildClosed hook to ChildEventListener, emit it from Session.Close (and the terminal-corpse path in reapChild), and have the timer manager prune the registry: cancel timers owned by the closed child; remove the closed child from each timer's watched list (cancel the timer outright when watched empties). Natural exit deliberately does not route through this hook — the classifier already emits an idle transition on exit which delivers any legitimate "fire when sub-agent finishes" semantics exactly once; cancelling on exit would swallow that.
This commit is contained in:
@@ -33,6 +33,10 @@ loosely follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
repaint.
|
||||
- Removed the redundant "Back to Settings" row from the
|
||||
Agents / Auto-summarization settings screen.
|
||||
- Pending `timer_*` entries are now cancelled when their owning or
|
||||
watched child is closed via `close_process`, preventing stale
|
||||
timer bodies from being re-delivered to the orchestrator pane
|
||||
after the work has already been handled.
|
||||
|
||||
## [0.0.6] - 2026-05-15
|
||||
|
||||
|
||||
Reference in New Issue
Block a user