The 818% story had a sequel I didn't want to write.
Last week I shipped the fix for my app's biggest blind spot: a CPU number on every row, drawn in red and bold when a process runs hot, so a runaway emulator can never again cook my laptop while the list looks calm. I was pleased with it. Then I looked at the screenshot I was about to put on this site.
The red capsule was there. And around it: a green badge, an amber badge, a blue chip, a little magnifying-glass icon, another icon shaped like a diamond. Every row was wearing this. The one number that meant your machine is on fire was competing for attention with a badge whose entire message was "this is a Flask dev server" — in the same amber I'd just reserved for warm CPU.
I have a design rule, written down long before this app, that I hold other people's dashboards to: color is signal, never decoration. My own default UI broke it on every single row.
How the rainbow got there
Nobody made me do it, which is the annoying part. The badges accreted one feature at a time. Framework detection shipped — have a green badge. Source detection shipped — have a blue one. Profiles, managed services, categories — each got a color, and each color looked reasonable in the PR where it was born. Nobody ever looked at seven of them stacked in one row and asked what, exactly, all this color was for.
The answer is: nothing. A badge's color coded its category, which is not a thing you need to be alerted to. And when everything is colored, color stops meaning anything — so the row that genuinely needs you has to shout over the decoration. The alarm works despite the design, not because of it.
Writing the rules down
So the app now has a design system — a short one, in the repo, that future features get held to. The spine of it:
- Color is spent on two things only: risk (a process it'd be dangerous to stop) and hot CPU. Category, source, profile — differentiated by weight and position, never hue.
- Machine values are monospace. Ports, PIDs, paths, percentages — anything you read as a value lines up in columns you can scan, the way the terminal already does it.
- Hierarchy lives in weight and size, so the whole thing reads correctly in greyscale — which also means it reads correctly with any kind of color vision.
- Icons are affordances, not ornament. A chevron you can press earns its place. A decorative magnifying glass on a badge does not.
Applied without mercy, those rules produce a UI I find genuinely beautiful: an almost-greyscale instrument where the only lit-up thing is the thing that needs you. I built it. And then I hesitated.
The part where I couldn't choose
Because here's the honest problem: that stripped-down look would ambush every existing user. The badges people are used to — gone. The color they navigate by — gone. Some users genuinely like the colored badges; they're informative, and scanning by color is a real habit even when a designer disapproves of it. Meanwhile the terminal people mostly want one thing — the values in monospace columns — and don't care about my feelings on amber.
I went back and forth for longer than I'll admit, and eventually noticed I was trying to pick one answer to a question that has three constituencies. The app already lets you choose Standard or Terminal appearance, with six terminal palettes. Taste-as-a-setting is the house pattern. So the design system ships as three selectable row styles:
- Calm — the new default. Everything you had, decluttered and quieter. No upgrading user gets ambushed.
- Mono — same rows, but every machine value (port, PID, path, command) in monospace. The list becomes a table you scan.
- Signal — the rules applied without mercy. Badges gone from rows (still in the detail view), values in mono, everything greyscale except risk and hot CPU. The only loud thing is the thing that needs you.
Is shipping three styles partly an admission that I couldn't pick one? Yes. I'd rather admit that than pretend one taste fits a menu bar app used by people who chose six different terminal palettes.
Signal, all the way down
The interesting engineering was making Signal actually mean it. It's easy to grey out a badge strip; it's harder to chase the principle through the whole app.
The Stats page had the same disease as the rows: a blue tile for "Processes", a green one for "Projects", a color per runtime in the mix panel. Under Signal all of it drops to grey — except one tile. The orange "Open *" count, the one that tracks listeners bound to every network interface instead of just localhost, keeps its color. Being reachable from the whole network is a real risk; that's precisely what color is budgeted for. One orange square on a grey dashboard, and your eye lands on it instantly. That's the entire thesis in one screen.
Even the little blue info icon next to row notes goes grey under Signal. An informational note is, by definition, not a signal.
The Tools page needed nothing — its command chips were already monospace, its sidebar icons already grey and navigational. That audit result was quietly the most satisfying moment of the whole exercise: a design system that can answer "no work needed" is a checklist, not a mood board.
Update, later the same day: a user looked at the shipped build and said, correctly, "when I change style, every single element must change — buttons included." They were right on both counts. The chrome around the rows — filter tabs, toggle chips, banners — now follows the style too, and the native macOS buttons are gone entirely, replaced by a house button: flat fill, hairline border, mono label under Mono and Signal, and red reserved for the destructive role, because "may kill a process" is signal. A design system that stops at the rows was half a design system.
What I actually learned
A design rule you haven't written down doesn't exist — it just feels like taste, and taste loses every negotiation with an incoming feature that wants a colored badge. And defaults accrete: nobody decides to build a rainbow; they approve seven reasonable PRs and the rainbow emerges.
The red 818% got me to look. The row around it is why I had to.
Settings → Row Display → Row style. Pick your kind of quiet.
Pick your kind of quiet.
$5. One Mac. Yours to keep. No tracking, no telemetry, no account. Or run the free CLI — le is open source.