From a7cd39e73ab2d325e1d1b61194d8c923165f8a80 Mon Sep 17 00:00:00 2001 From: ciregenz Date: Fri, 26 Jun 2026 06:42:34 -0700 Subject: [PATCH] [eric] browser: keep cross-dashboard cards on-screen (visibility-hidden) not off-screen, off-screen occlusion-culls the guest and reloads it on return = Discord logout --- frontend/src/app/pages/Dashboard/cards/BrowserCard.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/pages/Dashboard/cards/BrowserCard.tsx b/frontend/src/app/pages/Dashboard/cards/BrowserCard.tsx index 145d84d0..e721d2f3 100644 --- a/frontend/src/app/pages/Dashboard/cards/BrowserCard.tsx +++ b/frontend/src/app/pages/Dashboard/cards/BrowserCard.tsx @@ -742,13 +742,14 @@ const BrowserCard: React.FC = ({ }} sx={{ position: 'absolute', - // Kept-alive card from another dashboard: parked far off-screen because a guest surface ignores CSS visibility/opacity; click-through, webContents stays live so its session survives, never unmounted. + // Kept-alive card from another dashboard: hidden via visibility but LEFT AT ITS NORMAL POSITION on purpose. Moving it off-screen makes Chromium occlusion-cull the guest, which drops a logged-in session (Discord logs out); keeping it on-screen keeps the webContents composited + alive so the login survives. Click-through so it never eats input. + visibility: keepAliveHidden ? 'hidden' : undefined, pointerEvents: keepAliveHidden ? 'none' : undefined, // contain: webview repaints don't shake neighbor cards. contain: 'layout style', // Own compositor layer so hover/paint invalidations stay contained to this card. See AgentCard for full rationale. willChange: 'transform', - left: keepAliveHidden ? -100000 : displayX, + left: displayX, top: displayY, width: displayW, height: displayH,