Summary
There is currently no way for a user to increase the UI/font size in the desktop app. On a high-resolution display the interface reads quite small, and none of the usual escape hatches work. I'd like a UI scale (or font size) control in Settings.
Why the existing mechanisms don't cover this
The desktop app already computes a renderer zoom factor in desktop/window-scale.ts, but it is deliberately one-directional:
// desktop/window-scale.ts:70
const fittedScale = Math.min(
1,
validDimension(contentWidth) / baselineWidth,
validDimension(contentHeight) / baselineHeight,
);
Because it is clamped to Math.min(1, …), the factor can only ever shrink the UI (floor DESKTOP_MIN_SCALE = 2 / 3, line 3) when the window gets smaller than its startup canvas. Enlarging the window never enlarges the UI above 100%.
A few related observations:
- No zoom accelerators. No application menu is built (
desktop/main.ts:407 only pops a context menu), so Electron's stock Ctrl++ / Ctrl+- zoomIn/zoomOut menu roles never get registered.
- Manual zoom doesn't stick.
installResponsiveWindowScale re-applies setZoomFactor on every resize (desktop/window-scale.ts:118), so a zoom level set by any other means is overwritten on the next resize event.
- A CSS-level fix wouldn't be enough. The styling is predominantly hardcoded pixels — roughly 168
font-size: Npx declarations against ~34 in rem across src/. Changing a root font-size would rescale only a small fraction of the interface and leave the rest, so this likely wants to be a zoom-factor feature rather than a typography one.
Proposed behavior
A user-set scale multiplier in Settings (something like 80%–150%), persisted with the other app settings, that feeds into resolveDesktopWindowScale — for example composing with the fitted scale rather than being capped at 1, so the automatic shrink-to-fit behavior is preserved while allowing values above 100%. Bonus: register zoomIn/zoomOut/resetZoom accelerators alongside it.
Current workaround
Launching Electron with Chromium's device scale factor works and does not fight the existing logic, because installResponsiveWindowScale captures its baseline from the window at startup, so fittedScale still begins at 1:
electron --force-device-scale-factor=1.25 desktop-dist/main.mjs
That's fine when running from source, but it isn't reachable for anyone using a packaged build.
Environment
- OpenChatCut v0.2.3
- Linux (Ubuntu 24.04, GNOME/Wayland)
- Electron 43.1.1, running from source
Summary
There is currently no way for a user to increase the UI/font size in the desktop app. On a high-resolution display the interface reads quite small, and none of the usual escape hatches work. I'd like a UI scale (or font size) control in Settings.
Why the existing mechanisms don't cover this
The desktop app already computes a renderer zoom factor in
desktop/window-scale.ts, but it is deliberately one-directional:Because it is clamped to
Math.min(1, …), the factor can only ever shrink the UI (floorDESKTOP_MIN_SCALE = 2 / 3, line 3) when the window gets smaller than its startup canvas. Enlarging the window never enlarges the UI above 100%.A few related observations:
desktop/main.ts:407only pops a context menu), so Electron's stock Ctrl++ / Ctrl+-zoomIn/zoomOutmenu roles never get registered.installResponsiveWindowScalere-appliessetZoomFactoron every resize (desktop/window-scale.ts:118), so a zoom level set by any other means is overwritten on the next resize event.font-size: Npxdeclarations against ~34 inremacrosssrc/. Changing a root font-size would rescale only a small fraction of the interface and leave the rest, so this likely wants to be a zoom-factor feature rather than a typography one.Proposed behavior
A user-set scale multiplier in Settings (something like 80%–150%), persisted with the other app settings, that feeds into
resolveDesktopWindowScale— for example composing with the fitted scale rather than being capped at1, so the automatic shrink-to-fit behavior is preserved while allowing values above 100%. Bonus: registerzoomIn/zoomOut/resetZoomaccelerators alongside it.Current workaround
Launching Electron with Chromium's device scale factor works and does not fight the existing logic, because
installResponsiveWindowScalecaptures its baseline from the window at startup, sofittedScalestill begins at1:That's fine when running from source, but it isn't reachable for anyone using a packaged build.
Environment