Skip to content

fix(web): raise the type scale so the portal is readable - #102

Merged
jusso-dev merged 1 commit into
mainfrom
fix/readability-typography
Jul 30, 2026
Merged

fix(web): raise the type scale so the portal is readable#102
jusso-dev merged 1 commit into
mainfrom
fix/readability-typography

Conversation

@jusso-dev

Copy link
Copy Markdown
Owner

Task 13.

Contrast was never the problem — scale was. The muted foreground measures around 6:1 on card surfaces, which passes AA. What made the portal read as small grey print is that the type scale sat a full step below browser defaults and the smallest step carried most of the body copy.

Measured before the change:

Token Was Now
--text-xs 0.6875rem (11px) 0.75rem (12px)
--text-sm 0.8125rem (13px) 0.875rem (14px)
--text-base 0.9375rem (15px) 1rem (16px)

Usage across components/, features/, and app/: 326 uses of text-xs against 175 of text-sm and 16 larger — and 124 of those were text-xs text-muted-foreground together. So the default reading size in the OS was 11px grey.

Changes

  • Bottom of the scale moved to the conventional 12/14/16. 12px is now reserved for genuine metadata rather than being the reading size.
  • Dark muted foreground lifted off the contrast floor (0.690.74 lightness). Modest, so secondary copy still reads as secondary.
  • Body copy in the primary OS views moves up a step, along with the three shared surfaces that appear on nearly every screen: page description, empty state, and error state.
  • Badges, table cells, and mono identifiers deliberately stay at 12px. Those are metadata and should stay visually subordinate; raising them would flatten the hierarchy rather than improve it.

Test

components/typography.test.ts pins the scale floor and asserts the muted lightness stays above the floor, so a future "tighten the design" pass can't silently walk it back down.

Note

This is a system-level change — every screen shifts slightly. Worth eyeballing the board and Command at a narrow viewport before merging; those are the densest layouts and the most likely to reflow.

🤖 Generated with Claude Code

The scale sat a step below browser defaults — xs 11px, sm 13px, base
15px — and text-xs carried most body copy in the OS (326 uses against
175 of text-sm, 124 of them 12px muted). The product read as small grey
print.

- Bottom of the scale is now the conventional 12/14/16, so 12px is
  reserved for genuine metadata rather than being the reading size.
- Dark muted foreground lifted off the contrast floor.
- Body copy in the primary OS views, and in the shared page header,
  empty state, and error state, moves up a step. Badges, table cells,
  and mono identifiers deliberately stay at 12px.

Contrast was never the problem; scale was.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@jusso-dev, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 50 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a0fd99b0-af3d-460a-b4d3-f454f31a06bf

📥 Commits

Reviewing files that changed from the base of the PR and between 763e9d4 and d3a3de6.

📒 Files selected for processing (14)
  • apps/web/components/os/agent-run-result.tsx
  • apps/web/components/os/empty-state.tsx
  • apps/web/components/os/error-state.tsx
  • apps/web/components/os/pack-handoff-timeline.tsx
  • apps/web/components/page-header.tsx
  • apps/web/components/settings-view.tsx
  • apps/web/components/typography.test.ts
  • apps/web/features/capabilities/capabilities-view.tsx
  • apps/web/features/command/command-view.tsx
  • apps/web/features/missions/mission-detail-view.tsx
  • apps/web/features/operations/operations-view.tsx
  • apps/web/features/operations/task-composer.tsx
  • apps/web/features/teams/teams-view.tsx
  • tokens.css

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@jusso-dev
jusso-dev merged commit bd65945 into main Jul 30, 2026
8 checks passed
@jusso-dev
jusso-dev deleted the fix/readability-typography branch July 30, 2026 05:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant