Terminal families: add popular emulators + audit capability tables#11
Merged
Conversation
…tables Two research passes (12 unidentified terminals + a full audit of the ~17 we already claim) drove this. New TerminalFamily members with detection wired into the classifier: Warp (TERM_PROGRAM=WarpTerminal), VisualStudioCode (vscode / VSCODE_PID), Hyper, WaveTerminal (waveterm / WAVETERM), Mintty (XTVERSION), Contour (XTVERSION / TERM=contour), SimpleTerminal (st-256color), Termux (TERMUX_VERSION), PuTTY (TERM=putty), and Zellij (ZELLIJ). VTE_VERSION now resolves the whole indistinguishable VTE family (gnome-terminal, GNOME Console/ kgx, Black Box, Tilix, xfce4-terminal) to the GnomeTerminal representative. Zellij is flagged InsideMultiplexer but EXCLUDED from MultiplexerPassthrough — it is a re-rendering emulator with no generic escape passthrough (unlike tmux). Audit corrections to existing families (all verified against vendor source/docs): - OSC 52 read: drop Rio (no clipboard_load), iTerm2 (documented write-only), and tmux (doesn't reflect an inner query); keep Foot/Kitty/Ghostty/Alacritty/ WezTerm/xterm; add Mintty (3.8.2+) and Contour. - SGR-pixels mouse (1016): drop Rio (maps only 1006); add Contour/Warp/VS Code. - Pixel-size query: drop Windows Terminal (answers neither 14t/16t) and Alacritty (14t-only — our cell probe is 16t); add Rio/xterm/Termux/Wave. - OSC 22 pointer shape: add iTerm2/Warp/Mintty (not WezTerm — PR unmerged; not xterm — it uses X cursor-font names, not the CSS names we emit). - DECRQM: drop GNU Screen and Konsole (no reply path); add VS Code/Hyper/Contour/ Termux/Mintty. This also stops the runtime 2026 re-verification from wrongly disabling sync output on Konsole (which never answered DECRQM). - Styling: split the bundled "extended" bool into independent Hyperlinks / StyledUnderline / Overline — they didn't co-land per terminal. VTE was wrongly excluded from all three; the blanket Overline=false was wrong (true for Ghostty, WezTerm, Windows Terminal, Konsole, VTE). - Graphics: WezTerm ships Kitty graphics too; Rio ships Sixel. - Cursor: fix a real bug — the comment excluded Apple Terminal from DECSCUSR but `modern` didn't, so it claimed shape+blink control it lacks; now excluded. rxvt-unicode (9.22+) and mlterm (3.8.2+) DO implement DECSCUSR — no longer excluded. Termux excluded from OSC 12 cursor color. - Kitty keyboard: add Alacritty (0.13)/Rio/Warp/Contour. - Sync output: add Rio/Contour/Warp/Mintty/VS Code. - Truecolor: add every new family + the orphaned Tabby (== Terminus, renamed). Also fixed two pre-existing classifier bugs: TERM=iTerm returned Rio, and a duplicated ITERM_SESSION_ID check. ReliableWideGlyphs stays universally false by policy — the pre-paint/re-CUP defense always runs (untouched). 34 targeted identification + capability tests; full Core suite 996 green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0175wtwXrafD4fWAZ3i5THu6
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fleshes out terminal-family identification and the non-negotiated capability tables, driven by two research passes (12 unidentified terminals + a full audit of the families we already claim).
New families (with detection wired into the classifier)
Warp, VS Code (
vscode/VSCODE_PID), Hyper, Wave Terminal (waveterm/WAVETERM), mintty (XTVERSION), Contour (XTVERSION /TERM=contour), st (st-256color), Termux (TERMUX_VERSION), PuTTY (TERM=putty), and Zellij (ZELLIJ).VTE_VERSIONresolves the indistinguishable VTE family (gnome-terminal, GNOME Console/kgx, Black Box, Tilix, xfce4-terminal) to theGnomeTerminalrepresentative.Zellij is flagged
InsideMultiplexerbut excluded fromMultiplexerPassthrough— it re-renders with no generic escape passthrough (unlike tmux, where passthrough corrupts output).Audit corrections to existing families (verified against vendor source/docs)
clipboard_load), iTerm2 (write-only), tmux (does not reflect the query); add mintty (3.8.2+) + Contour.extendedbool into independent Hyperlinks / StyledUnderline / Overline (they did not co-land per terminal). VTE was wrongly excluded from all three; the blanketOverline=falsewas wrong (true for Ghostty, WezTerm, Windows Terminal, Konsole, VTE).moderndid not, so it claimed shape+blink control it lacks. rxvt-unicode (9.22+) and mlterm (3.8.2+) do implement DECSCUSR — no longer excluded. Termux excluded from OSC 12.Also fixed two pre-existing classifier bugs:
TERM=iTermreturnedRio, and a duplicatedITERM_SESSION_IDcheck.ReliableWideGlyphsstays universally false by policy — the pre-paint/re-CUP defense always runs (untouched).Notes / deferrals
Items the research flagged UNCERTAIN were handled conservatively: Konsole's kitty-keyboard membership is kept (unverified either way) with a code comment; Warp/Contour/Zellij exact XTVERSION strings and VTE's XTVERSION support want a live-terminal spot-check. PuTTY is nearly unfingerprintable (best-effort
TERM=puttyonly).Tests
34 targeted identification + capability tests (
TerminalFamilyExpansionTests); full Core suite 996 green.🤖 Generated with Claude Code