Side panel geometry — A: body-split (today) vs B: docked

Same Side panel in both: full tab-capable panel, fixed/hideable via the header toggle, no seeded tabs, launcher cards when empty. The only difference is where the vertical split starts. Tokens and dimensions read from packages/app/src/styles/theme.ts and measured off the running app at 1680×1050.

Geometry
Side panel
Side width
Theme
Overlay
Zoom

1/2 flip geometry · E empty side panel · H hide it · G guides · T theme. Drag the split divider to resize. Every other control keeps its value when you flip, so A and B stay like-for-like.

A — Body split
side-panel-geometry getpaseo/paseo
Commit
Agent 1
Agent 2

Reading the workspace shell before touching anything. The header is one row above the split tree, so today every pane's tab track lands on the same baseline — that's the property the docked variant gives up.

Shell rg -n "WORKSPACE_SECONDARY_HEADER_HEIGHT" packages/app/src
Shell sed -n '3440,3600p' packages/app/src/screens/workspace/workspace-screen.tsx
Read packages/app/src/components/split-container.tsx

Three things follow from where the split starts:

  • The header's trailing controls either span the whole workspace or stop at the main column — including the panel-right toggle that hides this panel.
  • The Side panel's tab track either sits on the tab baseline with every other pane, or one row up on the header baseline.
  • The split divider either starts under the header or runs the full height of the window.

Everything else — tab chips, pane toolbars, empty-state launchers, close semantics — is identical, so the comparison is purely the top row.

Worked for 1m 14s
Message the agent, tag @files, or use /commands and /skills
Claude Opus 5 Medium Full access
header baseline · 36px
tab-track baseline · 72px

A — Body split (current geometry)

  • One header across the whole workspace; one tab baseline at 72px for every pane, Side panel included.
  • The Side panel reads as "just another pane" — which is true of its capabilities and false of its lifecycle.
  • The divider starts under the header, so the top 36px is one uninterrupted band.
  • Header trailing controls (Run / GitHub / Commit / panel-right) sit at the window's right edge, far from the panel they act on.

B — Docked Side panel

  • The split runs the full height; the Side panel owns a top-to-bottom column including the top chrome.
  • Its tab track lands on the header baseline (36px) while main panes stay at 72px — two tab baselines on screen.
  • The fixed lifecycle reads structurally: the panel is outside the splittable body, so "closing hides it" stops being a special case.
  • The header shrinks to the main column, so the panel-right toggle now sits right beside the divider it controls.
  • Cost: the workspace title row no longer spans the window, and the Side panel gets no title row of its own — the tab track is the top chrome.