Skip to content

fix: split panes reserve the OS-control gutter on their own edge only; inspector rows share one inset - #512

Merged
ra3orblade merged 1 commit into
mainfrom
fix/split-gutter-inspector-padding
Oct 20, 2026
Merged

ra3orblade merged 1 commit into
mainfrom
fix/split-gutter-inspector-padding

Conversation

@th3-br41n

Copy link
Copy Markdown
Contributor

Split view: the right pane no longer carries the traffic-light gutter (6.14 residue)

Every pane's preload applied the macOS 86px header inset, so the right pane of a split had an 86px dead zone under nothing. WindowContainer.layout() now tells each pane which window edges it runs along (window:pane-edges-changed, {left, right}); the preload reserves the traffic-light gutter only for a pane on the left edge and the Win/Linux titleBarOverlay gutter only for one on the right edge. The signal is re-sent on dom-ready/did-finish-load (a side pane is laid out before its renderer exists), de-duplicated across divider drags, and cleared on tab teardown.

  • Test: window-container-split.test.ts covers lone pane → split → no re-send on relayout → swap → close.
  • Hidden real-shell probe (harness 951-split-gutter-probe): left pane padding-left: 86px, right pane 12px, lone pane 86px.

Properties panel: one left edge

Three insets lived in one panel: the shared Properties|Comments strip at 8px, headings/buttons/meta rows at 16px, and every property label at 24px (the row's hover padding stacked on the body inset). Now:

  • .bs-props__row cancels its hover padding with margin-inline: calc(-1 * var(--space-2)), so the hover face bleeds into the gutter and the label sits on the host's inset.
  • .bs-panel-tabs insets --space-4 like the bodies below it; Database zeroes it (.db-inspector__props-host .bs-panel-tabs) because the strip mounts inside its already-padded body.
  • Files' .inspector__body adopts --space-4 like Database / Preview / Notes.

Probe measurement in the Database inspector: panel 1121, strip 1137, first tab 1137, row label 1137, section title 1137.

Security note

New IPC is main → renderer only (no new capability surface, no new renderer → main method). The preload shape-checks the payload (two booleans) before applying it.

Verification

  • vitest: window-container suites 46/46; packages/sdk + packages/editor/src/comments 3141/3141.
  • tsc --noEmit (packages) clean; biome check on touched files clean; bun run lint:apps all ratchets green (css tokens, accent-fill, offcanvas, …).

🤖 Generated with Claude Code

…ir own window edge; inspector rows share one inset

Split view (6.14 residue): every pane's preload applied the macOS
traffic-light gutter, so the right pane's header carried an 86px dead zone
under nothing. The window container now tells each pane which window edges
it runs along (`window:pane-edges-changed`); the preload reserves the
traffic-light gutter only for a pane on the left edge and the Win/Linux
controls gutter only for one on the right edge. Re-sent on load, de-duped
across divider drags, and covered by a container test.

Properties panel: the row's hover padding indented labels 8px past the
section headings, buttons and meta rows around them, and the shared
Properties|Comments strip sat 8px in while the body sat 16px. The row now
bleeds its hover face into the gutter instead (negative inline margin), the
strip insets `--space-4` like the body (zeroed in Database, where it mounts
inside the padded body), and the Files inspector body adopts the same
`--space-4` inset as the other inspectors.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@ra3orblade
ra3orblade merged commit 6c1f2b5 into main Oct 20, 2026
3 checks passed
@ra3orblade
ra3orblade deleted the fix/split-gutter-inspector-padding branch October 20, 2026 18:01
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.

2 participants