Termigo v0.9.3
Orchestration, an approval queue, and the fixes that came out of using them.
-
Sub-agents read in parallel. A broad study request - audit this project,
explore an unfamiliar codebase - is split into tasks that run at once, each
with its own context, and a task can declaredepends_onto receive what the
others found. They read; they do not build a site for you. What comes back is
findings, and the main agent still makes every edit. -
A
buildersub-agent can now write, because sub-agents finally have a way to
ask. The SDK's approval protocol works by ending the run and resuming from
the next request, and a sub-agent has no message boundary to end at - so it
waits on a promise the user resolves instead./approveand/denytaken,allorlist. With several builders queued
a bare/approverefuses and prints the list rather than guessing, because
answering the wrong agent cannot be taken back. Stop answers the question too:
blocked work is denied rather than left waiting forever.A builder gets
write_file,create_directory,editandmulti_edit, and
write_filerefuses a path that already exists - whole-file replacement is
the one write with no conflict check, and four agents at once is exactly where
it would lose someone's work. No delete, no shell, and its own read history. -
Approving a command used to fail it. The environment block appended to every
request landed after the approval, and the SDK looks for approvals in the last
message only - so it found a user turn, never ran the command, and the
provider rejected the whole history. The error named the conversation rather
than the approval, which is why it read as a corrupted session. -
A broad request on a thinking model failed outright with "Thinking mode does
not support this tool_choice". The forced fan-out was decided from the request
alone and never looked at the model, so the feature broke exactly the requests
it exists for. -
Todo lists now end when the work ends. The strip hid only when the list was
empty, never when it was done, and a stopped run left its item claiming to be
in progress permanently. Lists also stay with the project they were written
for instead of following you into the next one. -
One reasoning block per run, bounded and scrolling, with the tool calls it
produced still visible around it. -
Each run writes one line to the app log: context assembly time, prompt size
broken down by what contributed it, cache hit rate, steps, and why it stopped.
Most of the fixes above were found by reading it.
From upstream: reliable Korean/CJK IME input on macOS, close-tabs-to-the-right
and close-other-tabs, a configurable editor wrap column, and hardened agent
notification delivery.
Test coverage went from 100 files to 135 over this release.