From 250e7119899345786f4532e071d3684c0e93f760 Mon Sep 17 00:00:00 2001 From: Jan Jaap Date: Thu, 30 Apr 2026 10:33:00 +0200 Subject: [PATCH 1/2] fix(mobile): enable touch scrolling in file picker modal Fixes mobile file picker scroll bubbling to parent page. On touch devices, attempting to scroll the file list in the command palette now properly scrolls the picker content instead of the entire page. Changes: 1. CommandPanel: Added overflow-hidden to contain scrollable content and touch-action:pan-y to allow vertical touch panning within bounds 2. ScrollArea Viewport: Added overflow-y-auto to enable native scrolling for touch devices while maintaining visual scrollbar styling This isolates the file picker's scroll behavior from the parent page, preventing touch scroll events from propagating upward. Co-Authored-By: Claude Haiku 4.5 --- apps/web/src/components/ui/command.tsx | 2 +- apps/web/src/components/ui/scroll-area.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/web/src/components/ui/command.tsx b/apps/web/src/components/ui/command.tsx index 0bd1c7a5737..71ecb497e35 100644 --- a/apps/web/src/components/ui/command.tsx +++ b/apps/web/src/components/ui/command.tsx @@ -137,7 +137,7 @@ function CommandPanel({ className, ...props }: React.ComponentProps<"div">) { return (
Date: Thu, 30 Apr 2026 18:03:19 -0700 Subject: [PATCH 2/2] Fix mobile command palette backdrop scrolling - Let the dialog backdrop capture pointer events - Keep the popup interactive while preventing viewport scroll bleed --- apps/web/src/components/CommandPalette.tsx | 3 +++ apps/web/src/components/ui/command.tsx | 15 +++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/apps/web/src/components/CommandPalette.tsx b/apps/web/src/components/CommandPalette.tsx index 050337e438a..d64c80ff96d 100644 --- a/apps/web/src/components/CommandPalette.tsx +++ b/apps/web/src/components/CommandPalette.tsx @@ -994,6 +994,9 @@ function OpenCommandPaletteDialog() { composerHandleRef?.current?.focusAtEnd(); return false; }} + onBackdropPointerDown={() => { + setOpen(false); + }} > ; +}) { return ( - +