Skip to content

fix(tui): pin platform default driver — TG 2.4.17 auto-detect picks the keypress-dropping ansi driver#51

Merged
jinyeow merged 1 commit into
mainfrom
fix/pin-driver-default
Jul 22, 2026
Merged

fix(tui): pin platform default driver — TG 2.4.17 auto-detect picks the keypress-dropping ansi driver#51
jinyeow merged 1 commit into
mainfrom
fix/pin-driver-default

Conversation

@jinyeow

@jinyeow jinyeow commented Jul 22, 2026

Copy link
Copy Markdown
Owner

What

Terminal.Gui 2.4.17's auto-detect selects its new ansi driver on a bare terminal, and that driver's input path drops every other keypress — vim j/k moves once per two presses. Every plain-terminal user of current main has this since the 2.4.16→2.4.17 bump (#8).

ResolveDriver now pins the pre-2.4.17 platform default explicitly (windows on Windows, dotnet elsewhere) and never falls through to TG auto-detect. COBALT_DRIVER still overrides everything, including =ansi to retest the upstream bug.

Diagnosis (UAT, herdr on Windows Terminal, 2026-07-22)

driver result
auto (probe: ansi) double-press
ansi explicit double-press (also on main)
windows explicit clean
dotnet explicit clean

Second press moves 1 row (input eaten, not repaint lag), both lists, persistent. Ruled out on the way: INPUT-1's targeted redraw (#18) and the :log observer marshalling (#35) — both exonerated by kill-switch probes.

Changes

  • ResolveDriver: isWindows seam; platform pin replaces the null fall-through; multiplexer/RDP path degrades to the pin (never TG auto) if dotnet is unregistered; null only when even the pinned driver is missing.
  • ADR 0016: 2026-07-22 amendment (auto-detect = ansi since 2.4.17; supersedes the "TG picks windows" claims) + records INPUT-1's owed both-driver UAT as passed (the double-press at that UAT was this driver, initially misattributed).
  • README + CHANGELOG updated.
  • 20 driver-resolution tests (TDD, RED→GREEN); full Release suite green; clean CI-style build 0 warnings / 0 errors.

…ks the keypress-dropping ansi driver

Terminal.Gui 2.4.17 added an 'ansi' driver and its auto-detect now selects
it on a bare terminal (IDriver.GetName() confirms), superseding 2.4.16's
'windows' default. The ansi driver's input path drops every other keypress:
vim j/k moves once per two presses (input eaten — the second press moves one
row — in both lists, persistently). Reproduces on main under
COBALT_DRIVER=ansi; windows and dotnet are clean.

ResolveDriver now pins the pre-2.4.17 platform default explicitly (windows
on Windows, dotnet elsewhere) instead of falling through to TG auto-detect;
the multiplexer/RDP path degrades to the same pin if 'dotnet' is ever
unregistered. null (TG picks) remains only when even the pinned driver is
missing. COBALT_DRIVER still overrides everything, including =ansi.

Also records in ADR 0016 that INPUT-1's owed both-driver UAT passed
2026-07-22 (the double-press seen at that UAT was this ansi driver,
initially misattributed to INPUT-1).
@jinyeow
jinyeow merged commit 7ca7573 into main Jul 22, 2026
5 checks passed
@jinyeow
jinyeow deleted the fix/pin-driver-default branch July 22, 2026 11:43
jinyeow added a commit that referenced this pull request Jul 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant