All features

Every dark and light pair, one search, and tabs that keep their own tone

Try the real interface

Explore this workspace.

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

The Pair tab found six designs and now finds fourteen, in twenty-one rows: names are split where words run together, a plain name counts as a half, and a family with more variants keeps its lead pair. The colours decide which half is which, never the name alone. Pair is the first tab, one search above the tabs serves all three, and each mode tab opens on its own tone.

The problem

The Pair tab listed six designs from a catalogue that holds many more. The search box sat inside each tab, so switching tabs lost it; the page opened on whichever mode the OS was in; and a tone filter chosen on the Light mode tab was still selected on the Dark one.

How it works

Pairing finds the design from the name and lets the colours decide the halves. Names split at separators and where lower case turns to upper, with case and accents folded, and variant words such as moon, storm, dawn and mocha come out the same way dark and light do. A design pairs when it has a scheme that measures dark and one that measures light, and a scheme whose name claims the other tone from its colours is never a half. The page now owns a single search above the tabs, opens on Pair, and each mode tab sets its own tone every time it is opened.

Details
  • The old rule is transcribed into the fast test, which asserts its six pairs are all still found and then pins the full list of twenty-one rows.
  • morning and evening are deliberately not tone words. Base2Tone ships Morning and Evening as two designs, and taking the words out would pair a design nobody drew.
  • A longer name joins a design only when it also carries a tone word, so Tomorrow Night Eighties joins Tomorrow and Solarized Darcula does not join Solarized.
  • The Pair titles moved onto the scheme names' edge. The check mark used to sit in a fixed-width slot in front of every title, empty or not.
What this does not claim
  • Deliberately left unpaired, and asserted: Atom with AtomOneLight, whose palettes are unrelated; Spring with Tomorrow; the two Base2Tone designs; and families where only one half is bundled, such as Gruvbox and GitHub.
  • A tone word fused into a name with no case change or separator is not split. Nothing bundled is named that way.
  • The tone filter override is deliberately not remembered, and a previously stored value is ignored rather than deleted.
Source commits
UI & themingAdded 2026-09-1212 files+1,004 / −216 lines