feat(desktop): user-tunable text size + chat width in Appearance - #49902
Closed
namredips wants to merge 1 commit into
Closed
feat(desktop): user-tunable text size + chat width in Appearance#49902namredips wants to merge 1 commit into
namredips wants to merge 1 commit into
Conversation
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.
namredips
force-pushed
the
feat/desktop-text-size-chat-width
branch
from
June 27, 2026 02:45
50d5f84 to
5868836
Compare
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. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds two desktop display preferences under Settings → Appearance:
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 at0.8125rem(13px), which several users find too small/narrow with no in-app way to adjust. The desktop already hasCmd +/-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.cssnow derives the existing--conversation-*-font-sizeand--composer-widthtokens from two new multipliers —--user-text-scaleand--user-chat-width-scale— both defaulting to1, so a build with the store never run is byte-identical to current sizing.store/ui-scale.ts(nanostores) persists the chosen step tolocalStorageand writes the multiplier ontodocumentElementat boot. This mirrorsstore/translucency.tsexactly — renderer-owned, applied as a CSS var, side-effect-imported inmain.tsx. No IPC, no main-process changes.font-size(previously a hardcoded0.8125rem) now references--conversation-text-font-sizeso it scales with the rest.en/ja/zh/zh-hant;i18n/types.tsupdated (typecheck enforces locale parity).Notes
.envchanges, no main-process surface.Test plan
tsc -b/tsc --noEmit: cleaneslint src/: cleanvitest run(i18n + themes suites): passhermes desktop --build-only, verified the scale vars compile into the packed asar; toggling each control live re-scales fonts + column and persists across reloads.