Repository navigation
Settings: interface size (90-150%) with Cmd/Ctrl +/-/0 - #361
Merged
Merged
Conversation
The whole interface scales through the webview zoom (WKWebView pageZoom, WebView2 ZoomFactor, WebKitGTK zoom-level via Tauri's set_zoom), so layout, icons and spacing grow together without touching CSS. - Settings > General gets an "Interface size" row under Appearance: 90% / 100% / 110% / 125% / 150%, default 100%, applied on click. - Cmd/Ctrl+= (also +) zooms in one step, Cmd/Ctrl+- out, Cmd/Ctrl+0 resets to 100%. Listed in the shortcut sheet and searchable in the command palette. Tauri's zoom_hotkeys_enabled stays off. - Stored as "zoom" in app.json (Prefs::zoom, read field by field like the others). Not part of the synced general prefs: the right size depends on each computer's screen. - The main window is zoomed right after it is built, so a cold start does not paint a 100% frame first. Its default and minimum size scale with the zoom, so the layout keeps the same CSS width as at 100% and does not drop below the responsive breakpoints; both are clamped to the screen's work area (150% on a 1080p screen at 125% system scaling does not fit vertically otherwise). Changing the zoom resets the minimum size. - The update window and the connection picker follow the zoom too: window::fit converts their measured CSS size to points. Closes #355 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Summary
Adds an interface size setting that scales the whole UI through the webview zoom (Tauri's
set_zoom: WKWebViewpageZoom, WebView2ZoomFactor, WebKitGTKzoom-level). Layout, icons and spacing grow together; no CSS changes.=(also+) zooms in one step, Cmd/Ctrl+-zooms out, Cmd/Ctrl+0resets to 100%. Registered inpalette/keys.tsx, shown in the shortcut sheet, and searchable in the command palette. The next step is computed on the Rust side, so a held key does not read the same step several times. Tauri'szoom_hotkeys_enabledstays off.zoominapp.json(Prefs::zoom, stored as a percentage, read infrom_fields; values outside the steps fall back to 100%). It is not in theclient_prefssync list, because the right size depends on each computer's screen. A test covers this.window::fitmultiplies the measured CSS size by the zoom factor; the native title bar is not scaled. When the zoom changes while one is open, itsResizeObserverfires because the viewport width changes, and it refits.No new platform-specific branches: everything goes through Tauri's cross-platform
set_zoom,set_min_sizeand monitor APIs.Test plan
tsc -b --noEmit,vitest run(new test: shortcut key mapping, and the UI steps matchSTEPSinzoom.rs)cargo clippy --all-targets -- -D warnings,cargo test(new tests: serialization and steps, minimum-size scaling and clamping, prefs round trip and invalid values, not synced)Closes #355
🤖 Generated with Claude Code