Skip to content

v0.1.66

Latest

Choose a tag to compare

@shayne-snap shayne-snap released this 11 Aug 00:03
676a0a2

v0.1.66

Summary

This release sharpens the TUI and hardens the ACP/MCP runtime:

  1. ACP session lifecyclesession/delete so Zed's Trash actually removes whale threads, plus permission options constrained to the ACP schema enum so approvals are never silently dropped.
  2. Agent turn reliability — an "execute, don't narrate" system block plus wider premature-end recovery catches announce-then-stop turns across the ACP, terminal CLI, and subagents; abrupt turns recover with interrupt tracing.
  3. MCP integration robustness — no more server spawn storms on every session/new, negative caching of failed servers, sanitized logs, concurrency-safe stderr capture, and restored tool promotion on resume.
  4. TUI polish — wrap-around arrow navigation in every list picker, and Alt+P permission cycling that works even while a turn is running.

What's Changed

ACP: session/delete so Zed Trash removes whale sessions (#355) — @reneleonhardt

  • initialize now advertises sessionCapabilities {list:{}, delete:{}}, so Zed's agent-panel Trash works instead of being a cosmetic no-op (zed-industries/zed#51912).
  • session/delete validates sessionId before touching disk, refuses in-flight prompts, removes the session .jsonl (fatal on failure) plus sidecar artifacts (best-effort), and is idempotent for unknown ids.
  • Prompt registration re-resolves the session under lock, closing a lookup→register gap that could resurrect deleted .jsonl files.

Agent: "execute, don't narrate" system block (#357) — @reneleonhardt

  • New static system-prompt block instructing the agent to execute rather than narrate, wired into the shared turn loop so it covers the ACP, terminal CLI, and subagents.
  • Premature-end recovery widened to catch announce-then-stop patterns such as trailing colons and gerund lead-ins ("Fixing:", "Running tests:").

ACP: permission options constrained to the schema enum (#358) — @reneleonhardt

  • PermissionOption.Kind is now a typed PermissionOptionKind with constants and validation; invalid kinds fail loudly on the send path instead of being silently rejected by strict clients.

TUI: wrap-around arrow navigation (#359) — @shayne-snap

  • ↑ on the first list item cycles to the last and ↓ on the last cycles to the first, via a shared wrapSelection helper applied across menus, pickers, and panels — fzf/vim-style navigation.

TUI: Alt+P permission cycle while busy (#360) — @shayne-snap

  • Alt+P now cycles ask → auto-review → auto-accept → ask even mid-turn; changes apply immediately to subsequent tool calls without emitting a spurious EventTurnDone.

Agent: recover abrupt turns and trace interrupts (#361) — @shayne-snap

  • Recovery now catches additional premature end-turn lead-ins (e.g. Chinese "最后是"/"立即" and English "finally") so users no longer need to type 继续.
  • Esc / Ctrl+C / exit-requested sources are preserved through the runtime protocol and persisted in turn markers, making unrelated interruptions diagnosable.

MCP: integration robustness (#362) — @reneleonhardt

  • Each session/new no longer re-spawns MCP servers (including failed ones); failed servers are negatively cached to stop spawn storms and log spam.
  • Log sanitization removes the raw client-supplied names/errors log-injection vector; stderr capture is concurrency-safe; sessionID race conditions fixed; tool promotion ordering restored on resume.

PRs

Thanks

Thanks to @reneleonhardt for the ACP session lifecycle work — session/delete for Zed and schema-valid permission options — and the MCP integration hardening, and to @shayne-snap for the TUI navigation and Alt+P polish, the announce-then-stop recovery, and for reviewing and merging this release's changes. 🐋