From 5525f36d2204186a8272c754e74e10d04e6c036f Mon Sep 17 00:00:00 2001 From: Andy <119136210+AndyMik90@users.noreply.github.com> Date: Fri, 16 Jan 2026 10:47:11 +0100 Subject: [PATCH] fix(terminal): enable scrolling in worktree dropdown when many items exist (#1175) The worktree dropdown was being cut off when there were many worktrees, with no ability to scroll to see additional items. Root cause: Radix UI ScrollArea requires an explicit definite height to calculate when scrollbars should appear. The combination of max-h with flex-1 created sizing ambiguity that prevented scroll detection. Changes: - Replace ScrollArea with native overflow-y-auto for reliable scrolling - Add collisionPadding to DropdownMenuContent for viewport edge handling - Add max-height constraint using Radix CSS variable for viewport awareness Co-authored-by: Claude Opus 4.5 --- .../src/renderer/components/terminal/WorktreeSelector.tsx | 7 +++---- apps/frontend/src/renderer/components/ui/dropdown-menu.tsx | 4 +++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/frontend/src/renderer/components/terminal/WorktreeSelector.tsx b/apps/frontend/src/renderer/components/terminal/WorktreeSelector.tsx index 5a94d9e6..797a97ab 100644 --- a/apps/frontend/src/renderer/components/terminal/WorktreeSelector.tsx +++ b/apps/frontend/src/renderer/components/terminal/WorktreeSelector.tsx @@ -20,7 +20,6 @@ import { AlertDialogTitle, } from '../ui/alert-dialog'; import { cn } from '../../lib/utils'; -import { ScrollArea } from '../ui/scroll-area'; import { useProjectStore } from '../../stores/project-store'; interface WorktreeSelectorProps { @@ -173,8 +172,8 @@ export function WorktreeSelector({ {/* Fixed separator between "Create New" and scrollable content */} - {/* Scrollable content */} - + {/* Scrollable content with native browser scrolling */} +
{isLoading ? (
@@ -254,7 +253,7 @@ export function WorktreeSelector({ )} )} - +
diff --git a/apps/frontend/src/renderer/components/ui/dropdown-menu.tsx b/apps/frontend/src/renderer/components/ui/dropdown-menu.tsx index df1be83b..5f827274 100644 --- a/apps/frontend/src/renderer/components/ui/dropdown-menu.tsx +++ b/apps/frontend/src/renderer/components/ui/dropdown-menu.tsx @@ -57,13 +57,15 @@ DropdownMenuSubContent.displayName = const DropdownMenuContent = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef ->(({ className, sideOffset = 4, ...props }, ref) => ( +>(({ className, sideOffset = 4, collisionPadding = 8, ...props }, ref) => (