From f7f4648af7a1522f78ca18e603e4cd1d07d8a102 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 31 Mar 2026 23:50:52 +0000 Subject: [PATCH] Fix: Hide mini status bar when Kanban immersive overlay is open Wraps the bottom-left mini status bar (showing agent stats, vibe score, and control hints) with !immersiveOverlayActive check to match the behavior of other HUD elements like camera controls and toolbar. This ensures the status bar is properly hidden when the Kanban board or any other immersive overlay is active, maintaining a clean immersive experience. Co-authored-by: Luke The Dev --- src/features/retro-office/RetroOffice3D.tsx | 148 ++++++++++---------- 1 file changed, 76 insertions(+), 72 deletions(-) diff --git a/src/features/retro-office/RetroOffice3D.tsx b/src/features/retro-office/RetroOffice3D.tsx index fda55aa..1a54d8a 100644 --- a/src/features/retro-office/RetroOffice3D.tsx +++ b/src/features/retro-office/RetroOffice3D.tsx @@ -7157,81 +7157,85 @@ export function RetroOffice3D({ ) : null} - {/* Ideas 3 + 6 + 8: Mini status bar — bottom left. */} -
- {/* Idea 3: Activity feed entries — newest on bottom. */} - {statusFeedEvents - .slice(0, 4) - .reverse() - .map((ev) => ( -
- {ev.name} - {ev.text} -
- ))} - {/* Ideas 6 + 8: Gateway status, agent counts, vibe score. */} -
- - {agents.filter((a) => a.status === "working").length} working - - · - - {agents.filter((a) => a.status === "idle").length} idle - - · - - {agents.filter((a) => a.status === "error").length} error - - {/* New Idea 6: Vibe score with animated EQ bars. */} - {(() => { - const workingCount = agents.filter( - (a) => a.status === "working", - ).length; - const ratio = workingCount / Math.max(agents.length, 1); - const label = - ratio < 0.2 ? "quiet" : ratio < 0.6 ? "active" : "buzzing"; - const animDur = ratio < 0.2 ? "1.8s" : ratio < 0.6 ? "1s" : "0.5s"; - return ( - <> - · - + {/* Ideas 3 + 6 + 8: Mini status bar — bottom left. */} +
+ {/* Idea 3: Activity feed entries — newest on bottom. */} + {statusFeedEvents + .slice(0, 4) + .reverse() + .map((ev) => ( +
- {[0.6, 1, 0.7].map((h, i) => ( - - ))} - - {label} - - ); - })()} - {!editMode && !spaceDown && ( - <> - · - - drag · scroll · space+drag · dbl-click + {ev.name} + {ev.text} +
+ ))} + {/* Ideas 6 + 8: Gateway status, agent counts, vibe score. */} +
+ + {agents.filter((a) => a.status === "working").length} working - - )} - {spaceDown && ( - <> · - pan mode - - )} -
-
+ + {agents.filter((a) => a.status === "idle").length} idle + + · + + {agents.filter((a) => a.status === "error").length} error + + {/* New Idea 6: Vibe score with animated EQ bars. */} + {(() => { + const workingCount = agents.filter( + (a) => a.status === "working", + ).length; + const ratio = workingCount / Math.max(agents.length, 1); + const label = + ratio < 0.2 ? "quiet" : ratio < 0.6 ? "active" : "buzzing"; + const animDur = ratio < 0.2 ? "1.8s" : ratio < 0.6 ? "1s" : "0.5s"; + return ( + <> + · + + {[0.6, 1, 0.7].map((h, i) => ( + + ))} + + {label} + + ); + })()} + {!editMode && !spaceDown && ( + <> + · + + drag · scroll · space+drag · dbl-click + + + )} + {spaceDown && ( + <> + · + pan mode + + )} +
+
+ + ) : null}