Three remaining acceptance criteria for T-87:
1. Cold-start reap. The Claude extension's activate() now kills
every leftover secondary tmux session for the current repo
before any new spawn. activate runs before any UI mounts, so
_nextSecondary's starting value of 1 is correct even when a
previous run died abruptly (kill -9, OOM, force-quit). The
deactivate() hook also calls reapSecondaries as a courtesy on
explicit extension teardown — but Flutter's deactivate doesn't
fire on app quit, so activate is the load-bearing path.
2. claude.kill-all-sessions actually kills server-side. The
command previously called pane.close on every claude pane,
which only kills the tmux client. It now also calls
tmux.killAllForRepo to kill the sessions on the clide socket.
3. Tests. test/builtin/claude/tmux_session_test.dart covers
killSession, listClideSessions, reapSecondaries, and
killAllForRepo via the TmuxRunner override — no real shell-out
in tests.
Co-Authored-By: Claude <noreply@anthropic.com>
Adds lib/builtin/claude/src/tmux_session.dart with helpers for the
clide-socket tmux server: killSession, listClideSessions,
reapSecondaries, killAllForRepo. The runner is overrideable via a
TmuxRunner typedef so tests don't shell out for real.
Wires ClaudePane.dispose() to call killSession(sessionName) for
secondary panes. Primary panes are left alone — D-41 keeps the
primary's tmux session alive across clide restarts so the next
launch re-attaches via `tmux new-session -A`.
Imports the helpers in the Claude extension as groundwork for the
app-shutdown reap and the existing claude.kill-all-sessions
command — wiring those uses lands separately.
Co-Authored-By: Claude <noreply@anthropic.com>
Single Flutter package at the repo root. All code, tests, assets,
and platform directories moved from app/ to root. Package renamed
from clide_app to clide — all imports rewritten. Merged pubspec
combines core (ffi) and app (flutter, yaml, xterm) dependencies.
Makefile simplified: no APP_PRESENT conditionals, no cd, no daemon
lifecycle. 317 tests pass.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>