fix(tui): drain Kitty key release events before exit to prevent SSH leak

Adds Terminal.prepareForExit() to disable Kitty protocol and wait for
in-flight release events before fully stopping. This prevents escape
sequences from leaking to the parent shell over slow SSH connections.

Fixes #1204
This commit is contained in:
Mario Zechner 2026-02-03 00:01:39 +01:00
parent c9a20a3aa4
commit 9a4d043b28
5 changed files with 43 additions and 1 deletions

View file

@ -2,6 +2,10 @@
## [Unreleased]
### Fixed
- Fixed Kitty key release events leaking to parent shell over slow SSH connections ([#1204](https://github.com/badlogic/pi-mono/issues/1204))
## [0.51.1] - 2026-02-02
### New Features

View file

@ -2552,6 +2552,10 @@ export class InteractiveMode {
// requestRender() uses process.nextTick(), so we wait one tick
await new Promise((resolve) => process.nextTick(resolve));
// Drain any in-flight Kitty key release events before stopping.
// This prevents escape sequences from leaking to the parent shell over slow SSH.
await this.ui.terminal.prepareForExit();
this.stop();
process.exit(0);
}