From e37444c62edb26488d1703a22c63cc912cc63b81 Mon Sep 17 00:00:00 2001 From: Yusuf Suleman Date: Sat, 4 Apr 2026 08:55:30 -0500 Subject: [PATCH] =?UTF-8?q?fix:=20speed=20pill=20and=20feedback=20in=20sam?= =?UTF-8?q?e=20VStack=20=E2=80=94=20no=20more=20guessing=20position?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Speed pill and feedback button were in separate VStacks with independent absolute padding, causing misalignment. Now they share one VStack with .padding(.bottom, 70) at the container level. The speed pill sits directly above the tab bar area, positioned relative to the same anchor as all other bottom controls. Co-Authored-By: Claude Opus 4.6 (1M context) --- ios/Platform/Platform/ContentView.swift | 34 ++++++++++++------------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/ios/Platform/Platform/ContentView.swift b/ios/Platform/Platform/ContentView.swift index 7faa181..3bc0712 100644 --- a/ios/Platform/Platform/ContentView.swift +++ b/ios/Platform/Platform/ContentView.swift @@ -73,23 +73,12 @@ struct MainTabView: View { .tint(Color.accentWarm) .tabBarMinimizeBehavior(.onScrollDown) - // Feedback button (not on Reader) - if selectedTab != 2 { - VStack { - Spacer() - HStack { - FeedbackButton() - .padding(.leading, 20) - Spacer() - } - .padding(.bottom, 70) - } - } + // Bottom floating controls + VStack(spacing: 10) { + Spacer() - // Auto-scroll speed controls (overlay when playing on Reader) - if isAutoScrolling && selectedTab == 2 { - VStack { - Spacer() + // Speed pill (only when auto-scrolling on Reader) + if isAutoScrolling && selectedTab == 2 { HStack(spacing: 12) { Button { scrollSpeed = max(0.25, scrollSpeed - 0.25) @@ -117,11 +106,20 @@ struct MainTabView: View { .padding(.vertical, 10) .background(.regularMaterial, in: Capsule()) .shadow(color: .black.opacity(0.15), radius: 12, y: 4) - .padding(.bottom, 50) .transition(.move(edge: .bottom).combined(with: .opacity)) } - .animation(.spring(duration: 0.3), value: isAutoScrolling) + + // Feedback button (not on Reader) + if selectedTab != 2 { + HStack { + FeedbackButton() + .padding(.leading, 20) + Spacer() + } + } } + .padding(.bottom, 70) + .animation(.spring(duration: 0.3), value: isAutoScrolling) } .confettiCannon( trigger: $confettiTrigger,