diff --git a/ModLog.md b/ModLog.md index 6597871c..3443595e 100644 --- a/ModLog.md +++ b/ModLog.md @@ -30,6 +30,21 @@ - Tutorial remains fully visible under all safe-area cutouts (dynamic island/notch) and never overlaps the camera orb or floating controls. - Z-index contract stays synchronized across code + docs to prevent future layering regressions. - Users get the same glow/animation styling while regaining unobstructed swipe instructions that satisfy WSP UX guardrails. +- Follow-up tweak (2025-11-10 2nd pass): constrained popup height with safe-area-aware `maxHeight`, tightened typography, and enabled auto-scroll so it never intersects the capture orb even on smaller iPhones. + +## [2025-11-10] GotJunk Map Camera Orb Visibility Fix + +**Change Type**: UI conditional rendering +**Architect**: Codex (0102) +**WSP References**: WSP 3 (module boundaries), WSP 7 (pre-commit validation), WSP 22 (ModLog), WSP 57 (UI documentation consistency) + +### What Changed +- Added a `showCameraOrb` prop to `BottomNavBar` so the capture orb can be toggled off per view. +- Updated `App.tsx` to disable the orb when the map overlay is open or when the user is in the map tab, preventing UI overlap on the GotJunk Map screen. + +### Impact +- Map view now shows only map controls (zoom/info/pins) while camera and list views still get the orb immediately. +- WSP 87 navigation guidance preserved: no camera controls rendered during non-camera contexts, avoiding accidental capture actions. ## [2025-11-03] MCP Server First Principles Optimization - 78% Reduction diff --git a/modules/foundups/gotjunk/frontend/App.tsx b/modules/foundups/gotjunk/frontend/App.tsx index 69a175c0..38af66e8 100644 --- a/modules/foundups/gotjunk/frontend/App.tsx +++ b/modules/foundups/gotjunk/frontend/App.tsx @@ -490,6 +490,7 @@ const App: React.FC = () => { : browseFeed.filter(item => item.classification === classificationFilter); const currentReviewItem = myDrafts.length > 0 ? myDrafts[0] : null; + const showCameraOrb = !(isMapOpen || activeTab === 'map'); // Handle instructions modal close const handleInstructionsClose = () => { @@ -743,6 +744,7 @@ const App: React.FC = () => { console.log('🔍 Search clicked'); // TODO: Open search modal }} + showCameraOrb={showCameraOrb} /> {isGalleryOpen && ( diff --git a/modules/foundups/gotjunk/frontend/components/BottomNavBar.tsx b/modules/foundups/gotjunk/frontend/components/BottomNavBar.tsx index d3b3a467..8ff8140a 100644 --- a/modules/foundups/gotjunk/frontend/components/BottomNavBar.tsx +++ b/modules/foundups/gotjunk/frontend/components/BottomNavBar.tsx @@ -18,6 +18,7 @@ interface BottomNavBarProps { setCountdown: React.Dispatch>; hasReviewItems: boolean; onSearchClick?: () => void; // Search functionality + showCameraOrb?: boolean; } const buttonVariants = { @@ -35,6 +36,7 @@ export const BottomNavBar: React.FC = ({ setCountdown, hasReviewItems, onSearchClick = () => console.log('🔍 Search clicked'), + showCameraOrb = true, }) => { const cameraRef = useRef(null); const pressTimerRef = useRef(null); @@ -118,25 +120,27 @@ export const BottomNavBar: React.FC = ({ transition={{ type: 'spring', stiffness: 300, damping: 30 }} > {/* Camera Orb - Floating above nav bar */} -
- {/* Main capture button with live preview - Intelligent scaling: iPhone 11=143px, iPhone 16=149px */} -
- -
-
+ {showCameraOrb && ( +
+ {/* Main capture button with live preview - Intelligent scaling: iPhone 11=143px, iPhone 16=149px */} +
+ +
+
+ )} {/* Main Nav Bar */}