Add a window corner-radius setting (Sharp / Default / Round) - #422
Merged
AllTerrainDeveloper merged 1 commit intoJul 27, 2026
Merged
Conversation
Adds an OS Settings → Appearance control ("Window corners") that lets the
user choose how rounded window corners are: Sharp (0px) / Default (8px) /
Round (16px). The choice writes the existing `--desktop-mode-window-radius`
custom property on the shell root via the settings apply pass, so every
open window reflows its corners live.
Follows the Dock size section pattern exactly: a `<wpd-segmented>` bound
to a new `windowRadius` state field, persisted + validated server-side in
includes/os-settings.php alongside the other appearance settings.
AllTerrainDeveloper
approved these changes
Jul 27, 2026
AllTerrainDeveloper
left a comment
Collaborator
There was a problem hiding this comment.
LGTM! Thank you!
Screen.Recording.2026-07-27.at.13.19.24.mov
epeicher
added a commit
that referenced
this pull request
Jul 27, 2026
Resolves conflicts from the editor-preview (#398) and corner-radius (#422) features by keeping trunk's new content with its version stamps stripped, per the new AGENTS.md rule: new @SInCE tags in window-links.php, editor-preview/*, types.ts, window/index.ts, hooks.ts, and the new hooks-reference / javascript-reference / bridge-protocol / api-index sections all land clean. Also repairs three headings in bridge-protocol.md that the original cleanup had accidentally glued to their following paragraph, and the one cross-reference that pointed at a glued slug.
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.
Summary
Adds an OS Settings → Appearance control, "Window corners", that lets the user choose how rounded window corners are:
The choice writes the existing
--desktop-mode-window-radiuscustom property on the shell root during the settings apply pass, so every open window reflows its corners live (no reload). It persists per user like the other appearance settings.Why
Corner radius was a fixed token (
--desktop-mode-window-radius: 8px) with no way to change it short of custom CSS. Exposing it as a segmented control is a small, self-contained personalisation that fits alongside Accent color / Dock size.Implementation
Follows the Dock size section pattern exactly:
src/settings/constants.ts—WINDOW_RADIIpresets +windowRadiusdefault.src/settings/types.ts—WindowRadiusIdtype +windowRadiusonOsSettingsState.src/settings/state.ts— default + validated coercion on load.src/settings/labels.ts—translateWindowRadiusLabel.src/settings/sections/window-radius.ts— new<wpd-segmented>section (mirrorsdock-size.ts).src/settings/panel.ts— mounts the section under the Appearance tab (after Dock size).src/settings/index.ts— apply pass sets--desktop-mode-window-radiuson<html>(next to the dock-size / accent vars).includes/os-settings.php— server-side default, sanitise (allow-list of the three ids), and output, mirroringdockSize.Only affects windows — widgets and the dock keep their own radii.
Testing
npm run typecheck,npm run lint,php -lon the PHP file, and builds of thedesktop+os-settings-paneltargets all pass.--desktop-mode-window-radiusto0/8/16pxlive; the choice survives a page reload (persisted server-side).