Mod panes on desktop: support fixed, independently scrolling and resizable regions

Status Open
Reported on v2.1.287
Maintainer reply None cached
Activity 2 comments · opened Oct 4, 2026

Context: A mod (ui.render on Pane, Claude Code 2.1.287, macOS desktop app) draws a diff viewer with a file tree beside the diffs, like the built-in diff panel. The goals are to keep the tree in view while the diffs scroll, and to let the person resize the tree by dragging the divider between them.

What happens on the desktop:

  1. The pane body scrolls natively, and ui.scroll arrives after the window has moved. If a hook keeps the window (returns without next), the window snaps back instead of never moving.
  2. ui.scroll carries no pointer for wheel or trackpad scrolls. So a hook can't tell a scroll over a pinned list from one over the body, which is the pattern the UiScrollPointer docs describe.
  3. A Box with position: "relative" and a top offset is drawn without the offset.
  4. Redrawing a Box at top = scroll.offset keeps it in view, but it trails each scroll by a frame or two and visibly jitters.
  5. A Client region on desktop gets presses but no pointer moves or drags, so a mod can't follow a drag on a divider. We use ‹ › buttons that step the tree's width instead.

Requests:

  • Keeping a region in view (any one would work): position: "sticky" for Box; a scrollable region inside a pane (overflow: "scroll"); pane regions that don't scroll with the body, such as a fixed header or sidebar; or honouring a kept window before the desktop moves, plus pointer on wheel events.
  • Resizing (either would work): a resizable split between such regions, or pointer move and drag events for a desktop Client.

Why: mods could build side-by-side layouts (tree and content, list and detail) that match the built-in panels: without jitter, and with a divider the person can drag.

Related: #99457 (code in mod panes can't be selected or scrolled sideways).

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗