mirror of
https://github.com/l0ng-ai/tty7.git
synced 2026-09-22 00:02:23 +00:00
ClientMsg::SendInput (kind 55) writes to a pane's PTY without touching the controlling subscriber, its epoch, or the size, answered by DaemonMsg::InputAck (kind 51) or an Error for a missing or exited pane; PaneClient::send_input wraps it. Both stay within protocol 5. run_stream now polls its half of the socket and epoch-checks against the pane before forwarding Input or Resize, so a controller displaced by a preempting Attach stops writing into the shell and has its connection shut down instead of half-open forwarding forever. Each observer meters its queued Output through its own OutputGate; one that lets 8 MiB pile up is pruned rather than growing daemon memory, while the controller and the PTY never wait on it. The pidfile reap guard accepts any legitimate daemon exe name (current exe, tty7-app, tty7-server, tty7; .exe optional, case-insensitive on Windows), and the agent-hooks console fast path matches tty7-server.exe and tty7.exe next to tty7-app.exe. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014JPaaZVK7rfQPKyrymzsYv