From b082bd65a65d830722fae8fde1ca2a885ade0503 Mon Sep 17 00:00:00 2001 From: funman300 Date: Thu, 30 Apr 2026 20:17:22 +0000 Subject: [PATCH] feat(engine): bump icon-button hit target to 32px and clarify local-only sync status ICON_BUTTON_PX moves from 28 to 32 to clear the desktop hit-target threshold. The change is self-contained: icon buttons are centered in flex rows whose neighbours retain their alignment, and the swatch buttons (40px) still dominate the visual hierarchy. The settings sync status fallback string changes from "Status: not configured" to "Status: local only" so users running without a remote backend read it as a deliberate choice rather than incomplete setup. The other status strings (Idle / Syncing / LastSynced / Error) flow from sync_status_label and are unaffected. Co-Authored-By: Claude Opus 4.7 (1M context) --- solitaire_engine/src/settings_plugin.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/solitaire_engine/src/settings_plugin.rs b/solitaire_engine/src/settings_plugin.rs index ca53cfa..b79ce10 100644 --- a/solitaire_engine/src/settings_plugin.rs +++ b/solitaire_engine/src/settings_plugin.rs @@ -33,8 +33,9 @@ use crate::ui_theme::{ const SWATCH_PX: f32 = 40.0; /// Side length of a small toggle / cycle button (e.g. the "⇄" affordances). -/// Sub-rung sizing — kept as a literal, see SWATCH_PX. -const ICON_BUTTON_PX: f32 = 28.0; +/// Sub-rung sizing — kept as a literal, see SWATCH_PX. 32 px meets the +/// minimum desktop hit-target threshold while staying smaller than `SWATCH_PX`. +const ICON_BUTTON_PX: f32 = 32.0; /// Volume adjustment step applied by the `[` / `]` hotkeys. pub const SFX_STEP: f32 = 0.1; @@ -257,7 +258,7 @@ fn sync_settings_panel_visibility( if panels.is_empty() { let status_label = sync_status .map(|s| sync_status_label(&s.0)) - .unwrap_or_else(|| "Status: not configured".to_string()); + .unwrap_or_else(|| "Status: local only".to_string()); let unlocked_backs = progress .as_ref() .map(|p| p.0.unlocked_card_backs.as_slice())