Sets TERM=xterm-256color, GIT_EDITOR=false, EDITOR=false, VISUAL=false,
JJ_EDITOR=false, JJ_PAGER=cat, PAGER=cat, GIT_PAGER=cat for all shell
executions.These are always applied regardless of the caller's environment
to prevent commands from spawning editors or pagers and hanging on a
nonexistent TTY.
Co-authored-by: Kieran Klukas <kieran@dunkirk.sh>
This fixes premature exits during tool use, hangs after certain
tool-calling stops, and issues when continuing into a session that is
already busy.
Co-Authored-By: Charm Crush <crush@charm.land>
When two clients share a session, one client canceling the in flight
turn could return a 500 to the other client whose request was still
open. This makes a canceled run behave as a normal completion.
Cancelations still reach every subscribed client.
Co-Authored-By: Charm Crush <crush@charm.land>
The captureDebugLogs function was using a plain bytes.Buffer which is
not safe for concurrent access. When app.New spawns goroutines that log
asynchronously (e.g., mcp.Initialize), the test would read from the
buffer while goroutines were still writing to it, causing a data race.
This change introduces a syncBuffer type that wraps bytes.Buffer with
a mutex, making it safe for concurrent reads and writes.
Display "Yolo mode enabled/disabled" via ReportInfo so the user gets
immediate visual feedback after pressing ctrl+y.
Assisted-by: Crush:claude-opus-4-6
The auto-expand logic now fires only when the todo/queue panel is first
created, not on subsequent session updates. A `pillsAutoExpanded` guard
flag prevents re-triggering until the next session.
💘 Generated with Crush
Assisted-by: Crush:kimi-k2.6
The todo/queue panel now opens automatically when the terminal is tall
enough (≥40 rows) and there are active items, eliminating the need for
a manual ctrl+t toggle in typical desktop use.
💘 Generated with Crush
Assisted-by: Crush:kimi-k2.6