From 9eefa5c47445a18cd2b336693eed93cbda15f81e Mon Sep 17 00:00:00 2001 From: hongming Date: Sun, 24 May 2026 20:31:29 -0700 Subject: [PATCH] fix(display): allow browser sessions to take control --- canvas/src/components/tabs/DisplayTab.tsx | 10 ++-- .../handlers/workspace_display_control.go | 7 ++- .../workspace_display_control_test.go | 42 ++++++++++++++++ .../internal/middleware/wsauth_middleware.go | 8 ++++ .../middleware/wsauth_middleware_test.go | 48 +++++++++++++++++++ 5 files changed, 110 insertions(+), 5 deletions(-) diff --git a/canvas/src/components/tabs/DisplayTab.tsx b/canvas/src/components/tabs/DisplayTab.tsx index 5944db28a..540f2e358 100644 --- a/canvas/src/components/tabs/DisplayTab.tsx +++ b/canvas/src/components/tabs/DisplayTab.tsx @@ -265,6 +265,11 @@ function DisplayControlBar({ onAcquire: () => void; onRelease: () => void; }) { + const userControl = control?.controller === "user"; + const adminControl = userControl && control?.controlled_by === "admin-token"; + const canAcquireUserControl = control?.controller === "none" || (userControl && !hasSession); + const canReleaseUserControl = adminControl || (userControl && hasSession); + return (
{control && ( @@ -282,8 +287,7 @@ function DisplayControlBar({ {controlError &&

{controlError}

}
)} - {(control?.controller === "none" || - (control?.controller === "user" && control.controlled_by === "admin-token" && !hasSession)) && ( + {canAcquireUserControl && (