From 9d36562bab48913fc6944aa0e1dcb8a574d8207f Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 11 Jun 2026 04:52:50 -0400 Subject: [PATCH] Build 10: width-gate the Pay numpad, mark the settings scroll edge The numpad was platform-gated while the mobile shell is width-gated, so narrow desktop windows showed neither numpad nor a visible input (sweep P2). Settings rows clipping under the pinned profile card now meet a hairline instead of slicing glyphs on an invisible edge. Co-Authored-By: Claude Fable 5 --- src/gui/views/goblin/mod.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/gui/views/goblin/mod.rs b/src/gui/views/goblin/mod.rs index d3d0bf37..954d61ea 100644 --- a/src/gui/views/goblin/mod.rs +++ b/src/gui/views/goblin/mod.rs @@ -723,9 +723,12 @@ impl GoblinWalletView { } ui.add_space(if tall { 32.0 } else { 16.0 }); - // Numpad on mobile, typed input on desktop. - let typed_hint = View::is_desktop() && self.pay_amount.is_empty(); - if !View::is_desktop() { + // Numpad at narrow (mobile-shell) widths, typed input on the wide + // desktop layout — gate by width like the shell itself, or narrow + // desktop windows get neither input. + let narrow = ui.available_width() < 700.0; + let typed_hint = !narrow && self.pay_amount.is_empty(); + if narrow { w::numpad(ui, &mut self.pay_amount); } else { w::amount_typed_input(ui, &mut self.pay_amount); @@ -1134,6 +1137,15 @@ impl GoblinWalletView { }); ui.add_space(16.0); + // Mark the scroll boundary: rows clipping under the pinned profile + // card otherwise read as sliced glyphs on an invisible edge. + let line_y = ui.cursor().min.y; + ui.painter().hline( + ui.max_rect().x_range(), + line_y, + eframe::epaint::Stroke::new(1.0, t.line), + ); + ui.add_space(6.0); ScrollArea::vertical() .auto_shrink([false; 2]) .show(ui, |ui| {