@oh-my-pi/pi-ai
Fixed
- Fixed Ollama/Ollama Cloud EOS-only completions to retry empty stops with a single output token before the agent loop can halt silently. (#4659)
- Fixed Claude Sonnet 5 failing every request on feature-gated gateways (Azure Foundry, OpenAI-compatible relays) that reject strict tools with "structured_outputs not supported" — the rejection is now classified as a strict-tool rejection, so the request retries without strict tools and the session remembers the downgrade.
@oh-my-pi/pi-catalog
Fixed
- Fixed LiteLLM rich discovery to ignore unusable sentinel placeholders and continue to
/v2/model/infofor real models. (#4655)
@oh-my-pi/pi-coding-agent
Changed
- Limited subagent HUD display to 8 items with a summary for additional running subagents
- Improved TUI performance by coalescing agent registry and observer UI updates
Fixed
- Fixed high-subagent sessions overwhelming the TUI by bounding the running-subagent HUD and coalescing subagent progress repaint bursts.
- Fixed browser run cleanup crashing or wedging the whole omp session: run-end and tab-close aborts could reject fire-and-forget
wait()/facade/tab promises with no consumer, and the global unhandled-rejection handler then exited the process, killing every subagent sharing it. Run-scoped promises are now observed at creation and routine browser teardown aborts are downgraded to log lines (#4499, #4672). - Reduced CPU use while many task subagents stream progress by disabling the obsolete task partial-result spinner repaint loop (#4424).
- Capped collapsed nested subagent trees at the same per-level agent limit as top-level task rendering (failures prioritized, elided rows summarized), so deep many-subagent sessions no longer render unbounded progress trees on every repaint.
- Fixed skill card headers to render a single space between the
skilltag and skill name (#4662). - Fixed
get_session_statsRPC responses to include context-window usage so RPC clients can render context meters. - Fixed startup of cached llama.cpp vision models so the initial default/restored model refreshes
/propsmetadata before the session exposes it as text-only. - Fixed IRC-woken yielded subagents skipping empty-stop retry because stale yield-termination state carried into the wake turn (#4658).
- Fixed
irc waitskipping replies that arrived between wait calls by draining pending IRC asides before honoring queued-interrupt aborts (#4657).
@oh-my-pi/pi-tui
Fixed
- Registered emergency terminal restore with the postmortem fatal path whenever a real terminal starts, so fatal exits restore raw mode/alternate screen on the normal CLI graph (previously the registration was a side effect of a barrel module the CLI never imported).
@oh-my-pi/pi-utils
Added
- Added
postmortem.markExpectedCleanupError()/postmortem.isExpectedCleanupError()to tag errors thrown by routine resource teardown; the globaluncaughtException/unhandledRejectionhandlers downgrade marked errors (walking thecausechain) to warnings instead of exiting the process.
Fixed
- Bounded postmortem cleanup with a 10s deadline so a hanging cleanup callback can no longer wedge the process indefinitely after a fatal error or signal; the process now always reaches
process.exit.
What's Changed
- fix(catalog): ignore LiteLLM all-team-models placeholders by @roboomp in #4661
- fix(ai): retry empty Ollama completions by @roboomp in #4663
- fix(agent): reset IRC wake maintenance state by @roboomp in #4664
- fix(agent): surface pending irc replies to wait by @roboomp in #4665
- fix(tui): correct skill card header spacing by @roboomp in #4666
- fix(rpc): include context usage in session stats by @roboomp in #4671
- fix(agent): refresh startup llama.cpp vision metadata by @roboomp in #4675
Full Changelog: v16.3.9...v16.3.10