Skip to content

[design] The type scale has no floor — 148 sub-12px strings on Terminals, 9.9px body copy on Settings, nine sizes inside a 2px band #390

Description

@serge-ivo

Rendered text sizes, measured live at phone widths

Counting only leaf elements carrying real text inside <main>, computed font-size under 12px:

route11.2px10.4px10.9px9.9px
Terminals1484
Activity100
Assistant / Board3913
Preferences21
Settings (instance)1077
Usage62
tmux / Terminal4 (+8 at 11.8px)

Static confirmation from the source — the utilities that produce them:

111 × text-[0.7rem] → 11.2px
19 × text-[0.68rem] → 10.9px
17 × text-[0.65rem] → 10.4px
3 × text-[0.66rem] 2 × text-[0.62rem] 2 × text-[0.6rem]
2 × text-[0.55rem] → 8.8px

Nine of those values sit inside a 2px band (0.65 – 0.78rem). text-[0.68rem] versus
text-[0.7rem] is a 0.32px difference at a 16px root — not a decision anyone made, an artefact
of copying from whichever neighbour was nearest (#366 reached the same conclusion statically; this
is what it looks like rendered).

Why it matters more than "small text looks tidy"

  • 9.9px and 10.4px are used for descriptive body copy under form controls, on the instance
    Settings tab and in chat — text a user is expected to read to make a decision, not a label they
    glance at. WCAG sets no absolute minimum, but every platform guideline puts body copy at ≥ 11pt
    (~14.6px); 11.2px is roughly 8.4pt.
  • The console has a text-size control (Preferences → Appearance, 0.9× – 1.3×) which scales the
    root — so a user can enlarge it. That is a mitigation and it is also the tell: the control
    exists because the default is too small, and it is per-browser (localStorage), so it does not
    follow the user to their phone.
  • Terminals renders 148 sub-12px strings on one screen and Activity 100. These are the two
    pages whose entire content is dense status text, i.e. exactly where legibility is the product.

What to do

This is the same root cause as #366 and should not be fixed by 168 mechanical edits:

  1. Define the type scale in DESIGN-SYSTEM.md — the doc is descriptive today and records
    text-[…rem] as an observed contradiction; give it a prescriptive scale (e.g. Tailwind's
    text-xs 12px as the floor for anything a user reads, with a single documented exception for
    dense telemetry if one is genuinely wanted).
  2. Collapse the nine values in the 2px band to one or two, in the component layer [design] The atomic layer under #187: 273 buttons in 14 shapes, 3 card geometries, 17 font sizes #366 proposes,
    not at the call sites.
  3. Then lint text-[…] — a ban only works once there is somewhere for the decision to live.
    Doing the lint first relocates the problem into 168 edits and teaches nothing.

Suggested order is unchanged from #187's thread: #367 (system) → #366 (primitives + this scale) →
#187 (blocks)
.

Measured 2026-08-08 against production, WebKit, 320px and 390px, signed in. Companion to #389
(tap targets), same sweep.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestfrontendFrontend / UI work

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions