githubnext/chopinPublic

Let's compose rich plans together

Keep the chat resize handle under the pointer

The chat rail sits on the right of the workspace and is resized from its
left edge, but resizeDelta treated a left-edge handle as if moving it
right widened the pane. Dragging or pressing ArrowRight widened the chat
rail and dragging left narrowed it. A pane resized from its left edge now
narrows when the edge moves right, and arrow keys move the separator in
the arrow's direction.

The unit tests and the shell e2e test pinned the inverted mapping; they
now assert the pointer-following direction for both pointer and keyboard
input, and a new e2e test drags the chat rail's edge both ways.

Fixes #214

Assistant-model: Claude Opus 5.5
Assistant-workflow: inline
Assistant-duration: 4m converged, estimated 15m
Assistant-verification: bun test unit passed: apps/web/src/resizable-pane.test.ts (5 pass)
Assistant-verification: Playwright Chromium E2E passed: bun run e2e e2e/shell.e2e.ts (11 passed)
Assistant-verification: Playwright Chromium E2E regression check passed: both chat-rail resize tests fail against the old resizeDelta
Assistant-verification: typecheck and lint passed: bun run types, bun run ci
Co-authored-by: Alex Lavaee <lavaman131@github.com>
ALAlex Lavaee authored committed by Maggie Appleton
b8721d3Patch
Parentf75d6d6
3 files changed+40-9
StackedSplit
apps/web/src/resizable-pane.test.ts+9 โˆ’5
apps/web/src/resizable-pane.tsx+5 โˆ’2
e2e/shell.e2e.ts+26 โˆ’2