Repository navigation
v0.5.4
Patch Release: Stability, Performance & Observability
Agent loop stability
- Empty-turn recovery — When a step ends normally but produces nothing actionable (no tool call, no text), the agent now
automatically continues the turn with a small bounded budget, so dropped chains of thought no longer stall a response. - Truncated tool-call recovery — Incomplete JSON streamed for a tool call is now detected and retried automatically
within a bounded budget, fixing rare dropped tool calls from providers that cut off arguments.
Both recoveries are tracked as internal continuations, keeping per-turn dispatch accounting correct.
TUI performance
- Faster prompt input — Sidebar panel data (workspace-search progress, memory sources/tallies) is now fetched off the
render path via background ticks, so a slow store read no longer delays keystrokes. - Cached sidebar rendering — The logo block and section strings are memoized and reused across animation/spinner-only
frames, rebuilding only when state actually changes. - Markdown alignment in streamed replies — Mid-stream replies assembled from multiple fragment renders could produce
rows wider than the wrap width, causing the terminal to re-wrap lines and headings/bullets to appear randomly indented.
The final frame now drops the streaming cache and draws one coherent full render, with seam trimming that compares
visible glyphs so blocks keep a single blank line between them.
Misc edge-case fixes: nil-cursor guard on draw, immediate memory panel refresh on session switch.
New observability tools
- phosphor_trace — Reads Phosphor's in-process OpenTelemetry span ring and prints a compact per-turn trace tree (span
name, nesting, duration, status, key GenAI attributes: model, step index, finish reason, token usage, tool name). Great
for diagnosing which step stalled or where nesting broke.
Enable it with observability.memory_buffer in phosphor.json (number of recent spans kept in the ring; off when
unset).
Chores
- Cross-platform golden-file comparison now normalizes line endings, so tests pass identically on Windows and Unix
checkouts.
ஃ Generated with Phosphor