Browse Source
Tcl 8.6 windows console channels expose no -inputmode configure key, so punk::console guards testing -inputmode/-mode classified a real 8.6 console as a pipe. A twapi console handle for stdin is now treated as definitive console detection at all three affected sites (stdin only - pipe probes still never touch the process console; mintty-as-pipes has no console handle and falls through to the env heuristics as before): 1. get_ansi_response_payload's raw-cycling gate (introduced 0.1.5) skipped the raw cycle for 8.6 line-mode queries. 2. is_input_console_or_tty returned a false negative, making settle_can_respond's layer-2 heuristic settle a real 8.6 console as unable to respond. 3. input_at_eof (introduced 0.1.2) took the pipe branch and performed its probe read on the drained console channel. This was the line-mode query killer: verified empirically against clean tclkits 8.6.13 and 8.6.17, a read on a drained 8.6 console channel makes the channel driver park a blocking cooked-mode ReadConsole; driver reads sample the console mode when issued, not when data arrives, so the query's subsequent raw flip cannot rescue it and the terminal response is swallowed until Enter. Since get_ansi_response_payload calls input_at_eof immediately before its raw cycle, every 8.6 line-mode query timed out (~500ms) with the response later leaking to the line reader as phantom input - also the source of increased ANSI artifacts (e.g. 'help env') once 0.7.0 brokering made code-interp queries actually reach the terminal. Interactively verified on punksys (tcl 8.6.13, src launch): line-mode get_cursor_pos and dec_get_mode succeed mid-command, brokered query loops run clean, and typed-ahead lines are recovered without phantom input. Known residue (documented in the G-007 detail notes): queries fired while the repl reader is armed and idle at a line-mode prompt (including some repl-init detection queries) still hit the parked-read limitation on 8.6 - repl init ordering is a follow-up; raw mode is unaffected. Tests: probes.test gains constraint-gated wiring tests for the twapi console branch of is_input_console_or_tty and input_at_eof (skip in piped runs, engage on a real console). Full suite passes at baseline (exec-14.3 only) under Tcl 9.0.3; probes suite also verified under Tcl 8.6. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.commaster
4 changed files with 78 additions and 8 deletions
Loading…
Reference in new issue