Title: Add a "Chat text size" setting (Small / Default / Large) to Appearance · Issue #64 · modelstudioai/openwork · GitHub
Open Graph Title: Add a "Chat text size" setting (Small / Default / Large) to Appearance · Issue #64 · modelstudioai/openwork
X Title: Add a "Chat text size" setting (Small / Default / Large) to Appearance · Issue #64 · modelstudioai/openwork
Description: Problem or Motivation OpenWork lets you change the app theme, color theme, font family, language, reduce motion and (in-flight) conversation width — but there is no way to change how large the conversation text is. The only lever today i...
Open Graph Description: Problem or Motivation OpenWork lets you change the app theme, color theme, font family, language, reduce motion and (in-flight) conversation width — but there is no way to change how large the conv...
X Description: Problem or Motivation OpenWork lets you change the app theme, color theme, font family, language, reduce motion and (in-flight) conversation width — but there is no way to change how large the conv...
Opengraph URL: https://github.com/modelstudioai/openwork/issues/64
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Add a \"Chat text size\" setting (Small / Default / Large) to Appearance","articleBody":"## Problem or Motivation\n\nOpenWork lets you change the app **theme**, **color theme**, **font family**,\n**language**, **reduce motion** and (in-flight) conversation width — but there is\n**no way to change how large the conversation text is**.\n\nThe only lever today is the OS-level app zoom wired to the View menu\n(`menu.ZOOM_IN/OUT/RESET` → `webContents.setZoomFactor`, see\n`apps/electron/src/main/handlers/system.ts`). That scales the **entire UI** —\nsidebar, toolbar, composer, icons, spacing — not just the reading text, and it\nis a transient window zoom, not a persisted appearance preference.\n\nThis is a recurring, unmet ask across comparable desktop clients. Users\nspecifically want a text-size control that adjusts **typographic size — body\ncopy, message content — while leaving the app chrome at its native scale**:\n\n- **Claude Desktop** — Appearance exposes a \"Chat font\" control, and there are\n standing feature requests (anthropics/claude-code #50543, #48887) for a\n text-size control that scales *only* message typography, not the whole UI.\n- **ChatGPT desktop** — long-standing user requests for a chat font-size option\n (the app currently has none, driving users to browser extensions).\n\nOpenWork's otherwise rich Appearance → Interface section (rich tool\ndescriptions, reduce motion) is missing this common accessibility/readability\naffordance.\n\n## Proposed Solution\n\nAdd a **\"Chat text size\"** segmented control to **Settings → Appearance →\nInterface**, right below the existing \"Reduce motion\" toggle, with three options:\n\n- **Small** — 0.9× the current text size,\n- **Default** — the current size (1×, no visual change for existing users),\n- **Large** — 1.15× for easier reading.\n\nBehavior (mirrors the merged `ReduceMotionContext` pattern — renderer-only, no\nbackend / qwen-code change):\n\n- A new `ChatTextSizeProvider` persists the choice in `localStorage`\n (`craft-chat-text-size`) and reflects it onto `\u003chtml\u003e` as\n `data-chat-text-size=\"small|medium|large\"`.\n- Global CSS in `index.css` maps that attribute to a `--chat-font-scale` custom\n property (`0.9` / `1` / `1.15`).\n- The chat transcript container in `ChatDisplay.tsx` carries a `chat-text-scope`\n class whose `font-size: calc(1em * var(--chat-font-scale))` multiplies the\n **inherited** message text size. Because it is `em`-relative it is exactly\n neutral at Default and scales the conversation body copy up/down without\n touching the sidebar, top bar, composer, or icons.\n- New i18n keys added across all 7 locales.\n\n## Feasibility\n\n**Frontend-only.** No qwen-code backend involvement: it is a renderer preference\n(localStorage) applied via an `\u003chtml\u003e` data attribute + a CSS variable consumed\nby the transcript container, following the exact idiom already shipped for\nReduce motion (#50/#51). Nothing about message content, streaming, or the agent\nruntime changes.\n\n## Acceptance criteria (what the CDP assertion will verify)\n\nDriving the real UI over CDP (Settings → Appearance → Chat text size control),\nwith no seeded session:\n\n1. The segmented control renders and starts on **Default** (`aria-checked`).\n2. Selecting **Large** sets `data-chat-text-size=\"large\"` on `\u003chtml\u003e`, persists\n `\"large\"` to `localStorage['craft-chat-text-size']`, and resolves\n `--chat-font-scale` to `1.15`.\n3. A probe element carrying the real `chat-text-scope` class has its **computed\n `font-size` measurably larger at Large than at Default** (proving the CSS the\n transcript uses produces a real pixel-level text-size change, not just an\n attribute flip).\n4. Selecting **Small** → scale `0.9` and a computed font-size smaller than\n Default; selecting **Default** reverts the attribute/scale — proving apply,\n change, and revert.\n","author":{"url":"https://github.com/DragonnZhang","@type":"Person","name":"DragonnZhang"},"datePublished":"2026-07-07T01:24:37.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/64/openwork/issues/64"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:ebad1321-2d40-1a3d-8c42-1fec8baaa74a |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | A054:153E3D:109B9C3:16A462A:6A5226FB |
| html-safe-nonce | 563920c27a6005af2b3dc86a955ab1655a350d1feaf48d3b7832438db9ee8cd0 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBMDU0OjE1M0UzRDoxMDlCOUMzOjE2QTQ2MkE6NkE1MjI2RkIiLCJ2aXNpdG9yX2lkIjoiNjcyOTMyNzQ0NTE2NDU2NjI2NyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 2e33a23ca8de04dd46b45b7b7540206d7d002fe7ed357e724936e94dd5f5a48a |
| hovercard-subject-tag | issue:4824387889 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/modelstudioai/openwork/64/issue_layout |
| twitter:image | https://opengraph.githubassets.com/8e84a1138c64b6695c04ea50ff1453d1e31525d9a108bf75fc714985c8acbb7a/modelstudioai/openwork/issues/64 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/8e84a1138c64b6695c04ea50ff1453d1e31525d9a108bf75fc714985c8acbb7a/modelstudioai/openwork/issues/64 |
| og:image:alt | Problem or Motivation OpenWork lets you change the app theme, color theme, font family, language, reduce motion and (in-flight) conversation width — but there is no way to change how large the conv... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | DragonnZhang |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/modelstudioai/openwork git https://github.com/modelstudioai/openwork.git |
| octolytics-dimension-user_id | 283556804 |
| octolytics-dimension-user_login | modelstudioai |
| octolytics-dimension-repository_id | 1256697754 |
| octolytics-dimension-repository_nwo | modelstudioai/openwork |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1256697754 |
| octolytics-dimension-repository_network_root_nwo | modelstudioai/openwork |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 7aed05249554b889eb33d002851a973eebcc7e91 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width