All features

Draw the colours the app asked for

Try the real interface

Explore this workspace.

Real Torbie UI · mock sessions
Tab bar
Loading Torbie…
Technical background

terminal.minimumContrastRatio defaulted to 4, and xterm.js rewrites every foreground that misses the ratio — 24-bit ones included. Solarized Light sits at 3–5:1 against a light background, so all thirteen of its colours were pushed toward mud and near-neighbours collapsed onto each other. The default is now 1, xterm's own "off" value, while the app chrome keeps its own floor of 4.

The problem

terminal.minimumContrastRatio defaulted to 4, and the value goes straight into xterm.js, which rewrites every foreground that misses the ratio — 24-bit colours included, since its minimum-contrast path has no exemption for them. At 4, Solarized Light on a light background sits at 3–5:1, so all thirteen of its colours get pushed toward mud and near-neighbours collapse onto each other.

How it works

The default is now 1 — xterm.js's own "off" value, and its own default. The same key also drove the app chrome's contrast floor, so the chrome now floors at its own UI_MINIMUM_CONTRAST_RATIO = 4 via max(4, terminal.minimumContrastRatio): measured identical output at 1 and at 4, while 6 still escalates it, so raising the setting for accessibility keeps working.

Settings
  • terminal.minimumContrastRatio: 1

    Was 4. 1 is off — draw what the application asked for.

What this does not claim
  • The source catalogue records no separate caveats for this entry. The implementation and evidence above define its scope.
In upstream Tabby

Windows Terminal's equivalent, adjustIndistinguishableColors, resolves Automatic → Never unless Windows high-contrast is on. So this is now "draw what the app asked for", the same as Windows Terminal and iTerm2.

Source commits
TerminalAdded 2026-08-153 files+47 / −3 lines