feat(engine): UI scale setting — 90/100/115/130% (Phase K) #182
Reference in New Issue
Block a user
Delete Branch "feat/ui-scale"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Phase K from docs/ui-redesign-2026-07.md: a UI Scale row in Settings → Accessibility, cycling 90% → 100% → 115% → 130%, applied live.
How it works
Settings::ui_scale(serde-default 1.0,sanitized()clamps to [0.9, 1.3]) drivesbevy::ui::UiScalevia a sync system on the settings-mutator spine — every menu, modal, HUD element, and the touch action bar scales; the table itself stays window-fit (compute_layoutowns world-space sizing, unaffected by UI scale).UiScalemultiplies everyVal::Px, including system-bar insets — at 90% the bottom action bar would have sunk into the Android gesture zone. The three safe-area systems (top/bottom anchors + modal scrim padding) now pre-divide the physical insets by the UI scale (chrome offsets still scale, as they should) and re-run on scale changes, not just inset changes.sync_ui_scale_resourceunordered against the keyboard settings writers) — caught by the workspace suite, fixed by riding theSettingsMutationchain, amended before this PR.Deferred from Phase K (doc-noted)
Tests
4 new — step cycling incl. wrap + hand-edited in-between values, percent labels, Settings→UiScale sync, sanitize clamping. Full workspace suite (ambiguity gate included) + clippy green.
Worth an emulator smoke + Fold look after merge: 130% on the folded screen is the stress case (Home modal, action bar row width).
🤖 Generated with Claude Code