From e4df6b95c5cc2db30e6d35e96fc1507f38bf761f Mon Sep 17 00:00:00 2001 From: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com> Date: Tue, 3 Nov 2026 12:15:50 -0800 Subject: [PATCH 1/2] fix(web): dragging a sidebar thread no longer scrolls the list out from under the pointer The Settled drop hint scrolled itself into view on every drag, so a tall sidebar jumped to the bottom as soon as a drag started. Reveal it only while Settled is the drop target. Co-Authored-By: Claude Opus 5.5 --- apps/web/src/components/sidebar/SidebarListMarkers.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/web/src/components/sidebar/SidebarListMarkers.tsx b/apps/web/src/components/sidebar/SidebarListMarkers.tsx index 3416d80ff5e53..da9444a5c1b24 100644 --- a/apps/web/src/components/sidebar/SidebarListMarkers.tsx +++ b/apps/web/src/components/sidebar/SidebarListMarkers.tsx @@ -56,7 +56,10 @@ export function SidebarSectionPlaceholder(props: { marker={props.marker} data-testid={`sidebar-${props.marker}`} className="relative mx-0.5 -mb-px h-0" - revealOverflow={props.marker === "settled-placeholder" && props.showHint} + // Revealing on every drag scrolls the list out from under the pointer. + revealOverflow={ + props.marker === "settled-placeholder" && props.showHint && props.isDropTarget + } > {props.showHint ? (
Date: Thu, 5 Nov 2026 11:26:27 -0800 Subject: [PATCH 2/2] fix(web): holding a dragged thread near the sidebar bottom no longer makes the list jump Projected drag rows count toward the list's scroll range, so the range shrank whenever the drop target changed. The browser clamped scrollTop, rows moved under the still pointer, and the target flipped back in a loop with auto-scroll. Reserve the largest projected overflow for the whole drag so the range stays constant. Co-Authored-By: Claude Opus 5.5 --- apps/web/src/components/Sidebar.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/web/src/components/Sidebar.tsx b/apps/web/src/components/Sidebar.tsx index 868aa85cec61b..2659fa7b335ed 100644 --- a/apps/web/src/components/Sidebar.tsx +++ b/apps/web/src/components/Sidebar.tsx @@ -3299,6 +3299,10 @@ export default function Sidebar({ routeReveal }: { routeReveal: SidebarRouteReve "relative flex flex-col gap-px", sidebarListItems.length > 0 && "flex-1", actionSweep !== null && "**:pointer-events-none", + // Projected rows (two boundary labels, two hints) extend the scroll range; a range that + // shrinks as the target changes clamps scrollTop and flips the target under a still pointer. + dragState !== null && + "after:pointer-events-none after:absolute after:inset-x-0 after:-bottom-30 after:h-px after:content-['']", )} > {(() => {