Skip to content

feat(chrome): proportional type for prose, mono kept for every value - #444

Merged
kirillDevPro merged 2 commits into
mainfrom
feat/ui-font-prose
Sep 6, 2026
Merged

feat(chrome): proportional type for prose, mono kept for every value#444
kirillDevPro merged 2 commits into
mainfrom
feat/ui-font-prose

Conversation

@kirillDevPro

Copy link
Copy Markdown
Collaborator

What & why

Every window pinned Geist Mono at its root, so a Settings description or a dialog sentence read in the same face as a price. One rule per element: a value the user compares or reads as a figure (table cell, number, coin/core/strategy name, log line, axis label, timestamp, hotkey) stays mono; a label, sentence, heading or control caption takes the UI face. Settings, Login and order-edit flip their root and re-pin values; Strategies, Analytics, the tuner and the table panels flip prose per element. Every measured width uses the face it renders in (ui_body_text_width / ui_caption_text_width). Window titles, dock tabs, status bar, tooltips, dropdown triggers and group-box titles stay mono — MoonUI forces the face there.

Rides along, since it needs the new ui_font() helpers: the Strategies Sections column now leads each row with Moonbot's own title over the localized name (headings read Main · Основные), and the empty column no longer repeats the parameters pane's «select a strategy» sentence.

How to verify

  • Settings → General: descriptions proportional; slider value, tick labels, seconds/days mono.
  • Security: reveal the password — the key is mono; «N of 8», «N bits» mono.
  • Connections table unchanged. Hotkeys: F1/S1, keys and -> mono, prose proportional.
  • Header launcher captions proportional and still collapse at the same widths.
  • cargo test -p moon-ui-gpui --test theme_contractfonts.rs pins the data surfaces.

https://claude.ai/code/session_01RaQ2tnAyr4yiwGktPBv

Every window and dock panel pins Geist Mono at its render root, so a
Settings description, a dialog sentence or a toolbar caption reads in
the same face as a price. Monospace prose is wider, harder to scan and
looks unfinished next to the tables it explains.

Apply one rule per element: a value the user compares across rows or
reads as a figure (table cell, number, coin, core or strategy name, log
line, axis label, timestamp, hotkey) stays mono; a label, sentence,
heading or control caption takes the UI face. Settings, Login and the
order-edit dialog flip their root and re-pin every value; Strategies,
Analytics, the tuner and every table panel keep a mono root and flip
prose per element. Every width that is measured for a flipped string is
measured in the same face it renders in, through the new
`ui_body_text_width` / `ui_caption_text_width` partners in design.rs.

Window titles, dock tab labels, status-bar items, tooltips, dropdown
triggers and group-box titles stay mono: MoonUI forces the face there
and exposes no prop. A locale string that welds a label to a figure
stays mono as a whole. No locale value changes.

Claude-Session: https://claude.ai/code/session_01RaQ2tnAyr4pyiAiwGktPBv
The Sections list showed the Russian label with the schema title one
hover away, the opposite of the field rows beside it, and a trader
who knows a section by Moonbot's wording had to guess. The column also
repeated the "select a strategy" sentence the parameters pane already
shows, a duplicate an integration merge brought back.

Rows now read the schema title first with the localized name as a
muted caption under it, headings read "Main · Основные", and the
measured column width follows the wider of the two lines. The empty
column keeps only its heading.

Claude-Session: https://claude.ai/code/session_01RaQ2tnAyr4pyiAiwGktPBv
@kirillDevPro
kirillDevPro merged commit 661ca71 into main Sep 6, 2026
@kirillDevPro
kirillDevPro deleted the feat/ui-font-prose branch September 6, 2026 18:05
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