Skip to content

Diff sidebar resize rail steals chat scroll/drag interactions at the chat boundary #958

@copypasteitworks

Description

@copypasteitworks

Summary

When the diff panel is open in the inline desktop layout, dragging/scrolling near the right edge of the chat history can hit the diff sidebar resize rail instead of the chat viewport. The result is that chat history is not reliably draggable/scrollable at that boundary because the pointer is captured by the resize handle (tooltip: Drag to resize sidebar).

This appears distinct from the existing diff-panel close/toggle bugs.

Repro

  1. Open a thread on a desktop-width layout so diff renders as the inline right sidebar, not the sheet.
  2. Open the diff panel.
  3. Move the pointer to the boundary between the chat history and the diff panel.
  4. Try to drag/scroll the chat history from that area.

Actual

  • The resize rail for the diff sidebar captures the pointer.
  • The Drag to resize sidebar affordance appears.
  • Chat scrolling/dragging in that edge area does not work reliably because the interaction starts resizing instead.

Expected

  • Chat history should remain scrollable/draggable right up to its visible edge.
  • The diff resize handle should not steal pointer interactions intended for the chat scroll area.
  • If a resize rail is kept, its hit target should stay fully inside the diff panel or otherwise avoid overlapping the chat viewport.

Notes

I checked the current web implementation locally:

  • the inline diff panel is mounted as a right Sidebar in apps/web/src/routes/_chat.$threadId.tsx
  • the resize control is SidebarRail from apps/web/src/components/ui/sidebar.tsx
  • SidebarRail renders as an absolutely positioned full-height w-4 button with title Drag to resize sidebar

That matches the behavior in the screenshot: the resize rail is large enough to sit on top of the chat boundary and intercept pointer input.

Related

Those are related diff-panel issues, but this report is specifically about the resize-handle hit area blocking chat interaction rather than open/close state.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions