Teknium
2ae96939f5
fix(cli): self-heal cooked-mode termios drift that freezes CLI input
...
When a prompt_toolkit run_in_terminal cooked->raw restore is lost (cancelled
coroutine, racing chained cross-thread windows from background-review
summaries / process-notification prints), the tty stays in cooked mode while
the Application still expects raw. The kernel line-buffers keystrokes and the
CLI appears to stop taking input even though the event loop is healthy.
Observed live 2026-08-13: interactive session left in 'icanon echo' after a
background skill-review fork + notify_on_complete turn; only an external
stty rescue restored input.
Fix: _heal_cooked_mode_drift() re-applies prompt_toolkit's own raw-mode flag
surgery when stdin's lflag has drifted cooked, and process_loop's idle branch
runs a rate-limited _check_termios_drift() watchdog that skips legitimate
cooked windows (app._running_in_terminal), agent-running phases, non-tty
stdin, and Windows.
2026-08-13 14:22:14 -07:00
..
2026-07-29 19:53:17 -07:00
2026-07-31 21:21:20 -07:00
2026-07-29 13:10:23 -07:00
2026-08-08 17:37:26 -07:00
2026-07-29 13:10:23 -07:00
2026-07-08 07:59:24 -07:00
2026-06-19 16:59:43 -07:00
2026-07-29 13:10:23 -07:00
2026-07-14 22:14:10 -07:00
2026-07-31 22:35:12 -07:00
2026-07-29 13:10:23 -07:00
2026-05-28 22:26:25 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 23:16:18 -07:00
2026-07-30 03:39:26 -05:00
2026-07-21 04:29:34 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-06-25 19:57:58 -05:00
2026-07-29 13:10:23 -07:00
2026-08-09 22:09:49 -04:00
2026-08-01 15:34:16 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 23:16:18 -07:00
2026-08-09 22:09:49 -04:00
2026-05-12 14:56:47 -07:00
2026-07-29 13:10:23 -07:00
2026-07-01 00:12:32 -07:00
2026-07-17 20:55:24 +00:00
2026-08-08 19:22:53 -07:00
2026-04-29 23:53:17 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-06-20 14:18:33 -05:00
2026-07-29 13:10:23 -07:00
2026-08-10 10:40:19 -07:00
2026-07-29 13:10:23 -07:00
2026-07-31 12:04:59 -04:00
2026-04-29 21:07:47 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-05-25 01:20:33 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-08-08 17:02:55 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-05-29 00:31:44 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 15:12:28 -07:00
2026-08-02 20:30:06 -07:00
2026-07-29 21:30:53 -07:00
2026-07-29 13:10:23 -07:00
2026-07-23 08:19:14 -07:00
2026-07-23 07:24:46 -07:00
2026-08-09 22:09:49 -04:00
2026-07-29 13:10:23 -07:00
2026-08-09 22:09:49 -04:00
2026-05-28 22:26:25 -07:00
2026-07-29 13:10:23 -07:00
2026-05-24 16:13:03 -07:00
2026-07-29 13:10:23 -07:00
2026-05-25 01:41:54 -07:00
2026-07-29 13:10:23 -07:00
2026-08-13 11:07:37 -07:00
2026-07-29 13:10:23 -07:00
2026-07-31 22:33:16 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-08-09 10:33:58 -07:00
2026-06-03 23:51:44 -06:00
2026-07-29 13:10:23 -07:00
2026-07-31 21:21:16 -07:00
2026-07-31 21:21:16 -07:00
2026-06-19 01:53:32 +05:30
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-08-13 23:45:21 +05:30
2026-08-14 02:15:22 +05:30
2026-05-28 22:26:25 -07:00
2026-05-28 22:26:25 -07:00
2026-07-27 21:10:51 -07:00
2026-07-29 13:10:23 -07:00
2026-05-28 22:26:25 -07:00
2026-08-09 22:09:49 -04:00
2026-05-29 19:04:40 -07:00
2026-07-29 13:10:23 -07:00
2026-07-28 23:53:16 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-06-28 01:08:09 -07:00
2026-08-13 14:22:14 -07:00
2026-07-29 15:12:28 -07:00
2026-08-08 14:06:30 +05:30
2026-07-29 13:10:23 -07:00
2026-07-22 16:51:01 -04:00
2026-06-05 18:05:05 -07:00
2026-07-29 23:16:18 -07:00
2026-07-29 15:34:53 -07:00
2026-07-29 23:16:18 -07:00