Proposed scale 12 / 14 / 18 / 48. The safe cases are omitted; these are the six surfaces where the change is visible or contentious. Left = today, right = proposed. Judge the crowding, not the icon.
Narrow columns, two stacked header rows, an eye + a filter chevron per column. 11 → 14 is a 27% jump in the tightest space in the app.
MIN_COLUMN_WIDTH). At 80px it will crowd. Options: let it crowd, raise
MIN_COLUMN_WIDTH to ~96, or make the data viewer the one sanctioned ICON_XS (12) surface.
My recommendation: keep it at 14 and raise MIN_COLUMN_WIDTH — one exception surface is how scales rot.
Status dot, port glyphs and the composite add badge are all positioned with hardcoded offsets derived from the glyph size.
ICON_XS. They change in name only. The one genuine change is the composite add badge, whose size and
offset are computed as round(HEADER_ICON_SIZE × 0.6) / −round(× 0.2) — those ratios were
tuned against 11. Against 14 they give 8 / −3, which needs an eyeball, not just a recompile.
The separator is 9 today — the smallest icon in the codebase. On the scale it becomes 12, a 33% jump, inside a 22→24px header next to 11px uppercase text.
iconSize()-derived control icons do. Otherwise 12 has to mean two different things.
Clock, CircleDot, GitCommit at 10, sitting inside 0.65rem (≈10.4px) text.
Already at TREE_ICON_SIZE = 14. The glyph does not move; only the row grows 22 → 24 for the AA target.
Worth noting: a 500-row tree gets 1000px taller. Irrelevant when virtualised and scrolled, but it does mean fewer rows visible per screen — about 8% fewer.
| Surface | Change | Risk | My call |
|---|---|---|---|
| Data-viewer headers | 11 → 14 | high | Keep 14, raise MIN_COLUMN_WIDTH 80 → 96 |
| Canvas add badge | 7 → 8, offset −2 → −3 | high | Recompute + eyeball; ratios were tuned against 11 |
| Breadcrumb separator | 9 → 12 | medium | Exempt punctuation glyphs from the scale |
| Toolbar icons | 16 → 14 | medium | Accept — they get smaller, box stays 24 |
| Inline metadata | 10 → 12 | low | Accept |
| Tree rows | 14 → 14 | none | Row 22 → 24 only |
| Status / port glyphs | 12 → 12 | none | Rename to ICON_XS, no visual change |
MIN_COLUMN_WIDTH to 96 (my recommendation), or let 80px columns crowd?