Skip to content

feat(desktop): let thread pane expand on ultrawide monitors#1407

Merged
tlongwell-block merged 1 commit into
mainfrom
feat/threadpane-ultrawide
Jun 30, 2026
Merged

feat(desktop): let thread pane expand on ultrawide monitors#1407
tlongwell-block merged 1 commit into
mainfrom
feat/threadpane-ultrawide

Conversation

@tlongwell-block

Copy link
Copy Markdown
Collaborator

Problem

The thread (auxiliary) panel width is hard-capped at 720px via AUXILIARY_PANEL_MAX_WIDTH_PX. On ultrawide monitors there's plenty of horizontal space, but the pane can't be dragged any wider than 720px — wasting most of the screen.

Fix

Make the upper clamp viewport-relative instead of a static 720:

effectiveMax = max(AUXILIARY_PANEL_MAX_WIDTH_PX, viewportWidth - AUXILIARY_PANEL_MIN_WIDTH_PX)
  • The pane can now grow with the viewport, always reserving the main pane's 300px minimum.
  • The static 720px constant becomes a floor, so narrow viewports keep their existing behavior exactly.
  • AuxiliaryPanelShell / RightAuxiliaryPane already clamp the rendered width to calc(100% - MIN), which remains the runtime safety net — a stored width larger than the current viewport never collapses the main pane.

The clamp logic moves into auxiliaryPanelLayout as pure, viewport-parameterized helpers (clampAuxiliaryPanelWidth / getAuxiliaryPanelMaxWidth), making it trivially unit-testable. The hook becomes a thin window.innerWidth wrapper.

Scope

The clamp lives in the shared useThreadPanelWidth hook + shared constant, so this consistently lifts the cap for all right-hand auxiliary panels (thread pane, Pulse, profile panel) — same affordance everywhere.

Verification

  • pnpm --filter desktop typecheck
  • pnpm --filter desktop check (biome + file-sizes + px-text) ✅
  • pnpm --filter desktop test — 1350 unit tests pass ✅, incl. new auxiliaryPanelLayout.test.mjs
  • New e2e spec threadpane-ultrawide.spec.ts: on a 3440×1440 viewport, opens a thread (starts <720px), drags the resize handle, and asserts the pane expands past 1200px ✅

Before / after (3440px viewport)

Before: thread pane stuck at the default narrow width, oceans of empty space.
After: pane dragged to ~2900px; main channel pane clamped to its 300px minimum, never collapsed.

(Inline screenshots posted in the Buzz feature-requests thread.)

Co-authored-by: Tyler Longwell tlongwell@block.xyz
Signed-off-by: Tyler Longwell tlongwell@block.xyz

The thread (auxiliary) panel width was hard-capped at 720px via
AUXILIARY_PANEL_MAX_WIDTH_PX, so on ultrawide monitors the pane could
not be dragged wider than 720px despite ample horizontal space.

Make the upper clamp viewport-relative: the panel may now grow to
viewportWidth - AUXILIARY_PANEL_MIN_WIDTH_PX, always reserving the
main pane's minimum. The static 720px constant becomes a floor so
narrow viewports keep their existing behavior, and AuxiliaryPanelShell's
existing calc(100% - MIN) render clamp remains the runtime safety net.

The clamp logic moves into auxiliaryPanelLayout as pure, viewport-
parameterized helpers (clampAuxiliaryPanelWidth / getAuxiliaryPanelMaxWidth)
with unit coverage, plus an e2e spec that drags the thread pane far past
720px on a 3440px viewport.

Co-authored-by: Tyler Longwell <tlongwell@block.xyz>
Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
@tlongwell-block tlongwell-block force-pushed the feat/threadpane-ultrawide branch from 39b0d01 to e9751c8 Compare June 30, 2026 21:59
@tlongwell-block tlongwell-block merged commit f86f97b into main Jun 30, 2026
25 checks passed
@tlongwell-block tlongwell-block deleted the feat/threadpane-ultrawide branch June 30, 2026 22:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant