You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
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).
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.
Rendered text sizes, measured live at phone widths
Counting only leaf elements carrying real text inside
<main>, computed font-size under 12px:Static confirmation from the source — the utilities that produce them:
Nine of those values sit inside a 2px band (0.65 – 0.78rem).
text-[0.68rem]versustext-[0.7rem]is a 0.32px difference at a 16px root — not a decision anyone made, an artefactof 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"
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.
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 notfollow the user to their phone.
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:
DESIGN-SYSTEM.md— the doc is descriptive today and recordstext-[…rem]as an observed contradiction; give it a prescriptive scale (e.g. Tailwind'stext-xs12px as the floor for anything a user reads, with a single documented exception fordense telemetry if one is genuinely wanted).
not at the call sites.
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.