authorgravatar for maria@kuuro.netmaria <maria@kuuro.net> 2026-09-03 20:38:43-04:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-09-03 20:38:43-04:00
log0a0b6be96833adae68b36540c00d347eda278736
tree058e89931e6632266c9e40090267c147f3b7d220
parentd76b24dd15a219666941ab1b4967d8f738adcda0
signature Signed by PGP key B5690EEEBB952194

fix(web): keep right panel controls clickable (#9517)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

2 files changed, 16 insertions(+), 4 deletions(-)

apps/web/src/components/ChatView.tsx+12-3
...@@ -1865,8 +1865,7 @@ function ChatViewContent(props: ChatViewProps) {...@@ -1865,8 +1865,7 @@ function ChatViewContent(props: ChatViewProps) {
1865 panelAnimationDurationMs,1865 panelAnimationDurationMs,
1866 );1866 );
1867 const rightPanelPresent = rightPanelPresence.present;1867 const rightPanelPresent = rightPanelPresence.present;
1868 const rightPanelControlsInPanel =1868 const rightPanelControlsInPanel = rightPanelPresent && rightPanelOpen;
1869 rightPanelPresent && (!shouldUseRightPanelSheet || rightPanelOpen);
1870 const renderedRightPanelSurface = rightPanelPresence.value?.activeSurface ?? null;1869 const renderedRightPanelSurface = rightPanelPresence.value?.activeSurface ?? null;
1871 const renderedRightPanelSurfaces = rightPanelPresence.value?.surfaces ?? [];1870 const renderedRightPanelSurfaces = rightPanelPresence.value?.surfaces ?? [];
1872 const previewMiniPlayerVisible = shouldRenderPreviewMiniPlayer(1871 const previewMiniPlayerVisible = shouldRenderPreviewMiniPlayer(
...@@ -7451,6 +7450,15 @@ function ChatViewContent(props: ChatViewProps) {...@@ -7451,6 +7450,15 @@ function ChatViewContent(props: ChatViewProps) {
7451 <div className="pointer-events-auto flex h-full items-center">{panelToggleControls}</div>7450 <div className="pointer-events-auto flex h-full items-center">{panelToggleControls}</div>
7452 </div>7451 </div>
7453 );7452 );
7453 const inlineRightPanelControls = (
7454 <div className="mr-px flex h-full items-center gap-1 [-webkit-app-region:no-drag]">
7455 <RightPanelMaximizeControl
7456 maximized={rightPanelMaximized}
7457 onToggle={toggleRightPanelMaximized}
7458 />
7459 {panelToggleControls}
7460 </div>
7461 );
7454 const rightPanelContent = activeThreadRef ? (7462 const rightPanelContent = activeThreadRef ? (
7455 renderedRightPanelSurface?.kind === "preview" ? (7463 renderedRightPanelSurface?.kind === "preview" ? (
7456 <Suspense fallback={null}>7464 <Suspense fallback={null}>
...@@ -7611,7 +7619,7 @@ function ChatViewContent(props: ChatViewProps) {...@@ -7611,7 +7619,7 @@ function ChatViewContent(props: ChatViewProps) {
7611 reserveNativeControls={reserveTitleBarControlInset && !inlineRightPanelOwnsTitleBar}7619 reserveNativeControls={reserveTitleBarControlInset && !inlineRightPanelOwnsTitleBar}
7612 className="relative bg-background"7620 className="relative bg-background"
7613 >7621 >
7614 {!shouldUseRightPanelSheet || !rightPanelControlsInPanel ? panelLayoutControls : null}7622 {!rightPanelControlsInPanel ? panelLayoutControls : null}
7615 <ChatHeader7623 <ChatHeader
7616 {...(!supportsPullRequests || activeProjectRepository === null7624 {...(!supportsPullRequests || activeProjectRepository === null
7617 ? {}7625 ? {}
...@@ -8039,6 +8047,7 @@ function ChatViewContent(props: ChatViewProps) {...@@ -8039,6 +8047,7 @@ function ChatViewContent(props: ChatViewProps) {
8039 mode="inline"8047 mode="inline"
8040 open={rightPanelOpen}8048 open={rightPanelOpen}
8041 maximized={rightPanelMaximized}8049 maximized={rightPanelMaximized}
8050 layoutControls={rightPanelOpen ? inlineRightPanelControls : null}
8042 surfaces={renderedRightPanelSurfaces}8051 surfaces={renderedRightPanelSurfaces}
8043 environmentId={activeThreadRef.environmentId}8052 environmentId={activeThreadRef.environmentId}
8044 activeSurfaceId={renderedRightPanelSurface?.id ?? null}8053 activeSurfaceId={renderedRightPanelSurface?.id ?? null}
apps/web/src/components/RightPanelTabs.tsx+4-1
...@@ -990,7 +990,10 @@ export function RightPanelTabs(props: RightPanelTabsProps) {...@@ -990,7 +990,10 @@ export function RightPanelTabs(props: RightPanelTabsProps) {
990 // controls a few pixels higher and the cluster jumps on open.990 // controls a few pixels higher and the cluster jumps on open.
991 props.mode === "inline" && !props.layoutControls ? "pr-28" : "pr-3",991 props.mode === "inline" && !props.layoutControls ? "pr-28" : "pr-3",
992 ownsDesktopTitleBar && "drag-region",992 ownsDesktopTitleBar && "drag-region",
993 ownsDesktopTitleBar && "wco:pr-[calc(var(--workspace-native-controls-inset)+6rem)]",993 ownsDesktopTitleBar &&
994 (props.layoutControls
995 ? "wco:pr-[var(--workspace-native-controls-inset)]"
996 : "wco:pr-[calc(var(--workspace-native-controls-inset)+6rem)]"),
994 props.mode === "inline" && props.maximized && COLLAPSED_SIDEBAR_TITLEBAR_INSET_CLASS,997 props.mode === "inline" && props.maximized && COLLAPSED_SIDEBAR_TITLEBAR_INSET_CLASS,
995 )}998 )}
996 data-right-panel-tabbar999 data-right-panel-tabbar