ci / rust (push) Successful in 2m15s
When a session terminates (the user runs `exit`, tmux is killed, or `maestro kill` is called) the daemon's per-session broadcast channel closes and `serve_attach` breaks out of its loop. The socket was then dropped without a Close frame, so the client's `stream.next()` would hang and the terminal stayed stuck in raw mode. - daemon: send `Message::Close(None)` before returning from `serve_attach` whenever the session itself ended (broadcast closed, or session was killed between auth and subscribe). - client: track remote-close, restore the TTY first, then print `[maestro] session ended` so the message lands in cooked mode. - tests: cover the kill path and the liveness-watcher reap path on the daemon side. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>