From e685f10aff7202faca46006ec2d40aa9ed8e0d56 Mon Sep 17 00:00:00 2001 From: Thomas Hallock Date: Thu, 8 Jan 2026 10:23:48 -0600 Subject: [PATCH] fix(vision): move undock button to vision status bar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move the undock button into the DockedVisionFeed status bar alongside the disable-vision button. This prevents the buttons from overlapping. When vision is enabled, the dock-controls overlay is now hidden since all controls are in the unified status bar. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- apps/web/src/components/MyAbacus.tsx | 95 ++++++++++--------- .../components/vision/DockedVisionFeed.tsx | 94 ++++++++++++------ 2 files changed, 114 insertions(+), 75 deletions(-) diff --git a/apps/web/src/components/MyAbacus.tsx b/apps/web/src/components/MyAbacus.tsx index f7468898..942c1770 100644 --- a/apps/web/src/components/MyAbacus.tsx +++ b/apps/web/src/components/MyAbacus.tsx @@ -510,54 +510,56 @@ export function MyAbacus() { position: 'relative', })} > - {/* Control buttons - stacked vertically on right side to avoid blocking beads */} -
- - -
+ + + + )}
) : ( void /** Number of columns to detect */ columnCount?: number + /** Called when user wants to undock the abacus */ + onUndock?: () => void } /** @@ -41,7 +43,7 @@ interface DockedVisionFeedProps { * - For remote camera: Receives frames from phone, runs detection * - Shows the video feed with detection overlay */ -export function DockedVisionFeed({ onValueDetected, columnCount = 5 }: DockedVisionFeedProps) { +export function DockedVisionFeed({ onValueDetected, columnCount = 5, onUndock }: DockedVisionFeedProps) { const { visionConfig, setDockedValue, @@ -843,34 +845,68 @@ export function DockedVisionFeed({ onValueDetected, columnCount = 5 }: DockedVis )}
- {/* Right side: Close button */} - + {/* Right side: Undock + Close buttons */} +
+ {onUndock && ( + + )} + +
)}