Skip to content

feat(desktop): user-tunable text size + chat width in Appearance - #49902

Closed
namredips wants to merge 1 commit into
NousResearch:mainfrom
namredips:feat/desktop-text-size-chat-width
Closed

feat(desktop): user-tunable text size + chat width in Appearance#49902
namredips wants to merge 1 commit into
NousResearch:mainfrom
namredips:feat/desktop-text-size-chat-width

Conversation

@namredips

Copy link
Copy Markdown
Contributor

What

Adds two desktop display preferences under Settings → Appearance:

  • Text Size — Compact / Default / Large / Huge. Scales conversation text, captions, tool output, and the composer input.
  • Chat Width — Cozy / Wide / Full. Scales the message column and composer width on wide screens.

Both render as SegmentedControls, matching the existing Color Mode / Tool Call Display rows.

Why

On a large display the conversation column and composer are capped at --composer-width: 48.75rem (780px) and body text sits at 0.8125rem (13px), which several users find too small/narrow with no in-app way to adjust. The desktop already has Cmd +/- zoom, but zoom scales everything uniformly — it cannot widen the column relative to the window, and it does not address the common "just make the text bigger" ask without also shrinking effective screen real estate. These two independent levers do.

How

  • styles.css now derives the existing --conversation-*-font-size and --composer-width tokens from two new multipliers — --user-text-scale and --user-chat-width-scaleboth defaulting to 1, so a build with the store never run is byte-identical to current sizing.
  • New store/ui-scale.ts (nanostores) persists the chosen step to localStorage and writes the multiplier onto documentElement at boot. This mirrors store/translucency.ts exactly — renderer-owned, applied as a CSS var, side-effect-imported in main.tsx. No IPC, no main-process changes.
  • The composer input font-size (previously a hardcoded 0.8125rem) now references --conversation-text-font-size so it scales with the rest.
  • i18n strings added across en / ja / zh / zh-hant; i18n/types.ts updated (typecheck enforces locale parity).

Notes

  • Pure renderer styling. No new tools, no config-schema or .env changes, no main-process surface.
  • Preference is per-install (localStorage), like zoom / translucency / theme.
  • Defaults are conservative (Default / Cozy = today's exact look); larger / wider are opt-in via the picker.

Test plan

  • tsc -b / tsc --noEmit: clean
  • eslint src/: clean
  • vitest run (i18n + themes suites): pass
  • Manual: built via hermes desktop --build-only, verified the scale vars compile into the packed asar; toggling each control live re-scales fonts + column and persists across reloads.

@alt-glitch alt-glitch added type/feature New feature or request comp/tui Terminal UI (ui-tui/ + tui_gateway/) P3 Low — cosmetic, nice to have labels Jun 21, 2026
@alt-glitch alt-glitch added comp/desktop Electron desktop app (apps/desktop/*) and removed comp/tui Terminal UI (ui-tui/ + tui_gateway/) labels Jun 26, 2026
Adds two desktop display preferences under Settings → Appearance:

- Text Size (Compact / Default / Large / Huge) scales conversation
  text, captions, tool output, and the composer input.
- Chat Width (Cozy / Wide / Full) scales the message column and
  composer width on wide screens.

styles.css derives the existing --conversation-*-font-size and
--composer-width tokens from two new multipliers (--user-text-scale,
--user-chat-width-scale), both defaulting to 1 so an un-run build is
byte-identical to today. A new nanostores store (store/ui-scale.ts)
persists the chosen step to localStorage and writes the multiplier onto
documentElement at boot — same pattern as store/translucency.ts, so the
preference survives reloads and self-updates without touching source.

The composer input font-size, previously a hardcoded 0.8125rem, now
references --conversation-text-font-size so it scales too.

i18n strings added across en/ja/zh/zh-hant; types updated.
@teknium1

teknium1 commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

A UI scale control in Appearance settings has now landed via PR #60457 (originally #60249 by @Adolanium). Your PR proposed the same capability earlier — thanks for identifying the gap; you're credited in the merged PR's body. Closing this as superseded.

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

Labels

comp/desktop Electron desktop app (apps/desktop/*) P3 Low — cosmetic, nice to have type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants