Skip to content

fix(mac): sidebar disclosure triangle overlapping row content - #459

Merged
SergeSerb2 merged 1 commit into
mainfrom
surgecode/sidebar-disclosure-overlap
Aug 3, 2026
Merged

fix(mac): sidebar disclosure triangle overlapping row content#459
SergeSerb2 merged 1 commit into
mainfrom
surgecode/sidebar-disclosure-overlap

Conversation

@SergeSerb2

Copy link
Copy Markdown
Owner

Problem

Every expandable sidebar row rendered two chevrons: the row view's own trailing chevron plus NSOutlineView's built-in leading disclosure triangle. Because the outline uses flat indentation (indentationPerLevel == 0) with row-view-managed insets, the built-in triangle rendered directly on top of the status rail at the leading edge.

Section headers ("Projects") additionally showed a permanently-frozen chevron: sections are pinned open (setExpansion no-ops for .section), so the control was inert.

Fix

  • SidebarNativeOutlineView.frameOfOutlineCell(atRow:) returns .zero — suppresses the built-in triangle; expansion still works through the row chevron, keyboard, and programmatic paths (sections keep isExpandable == true so their children render).
  • Hide the inert chevron on pinned-open section rows.
  • Trailing stack spacing 4→6 so run-tape cells stop visually merging with the count badge.

Verification

  • SERGECODE_UI_PROBE_SCENARIO=sidebar-outline — assertions pass; capture shows single trailing chevron per row, clean status rails.
  • SERGECODE_UI_PROBE_SCENARIO=sidebar-menus — all row menus still open (assertions pass).
  • pnpm run verify — pass.

🤖 Generated with Claude Code

…ow content

The AppKit sidebar draws its own trailing chevron per expandable row, but
NSOutlineView still rendered its built-in leading disclosure triangle for
every expandable item. With flat indentation (indentationPerLevel == 0) that
triangle landed directly on top of the status rail, and every expandable row
showed two chevrons. Suppress the built-in cell via frameOfOutlineCell.

Section headers are pinned open (setExpansion no-ops for them), so their
chevron was an inert control; hide it. Also widen the trailing stack spacing
so run-tape cells stop reading as part of the adjacent badge.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@SergeSerb2 SergeSerb2 added the size:XS Tiny internal, documentation, or narrowly scoped fix label Aug 3, 2026
@SergeSerb2
SergeSerb2 merged commit 79e06c2 into main Aug 3, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS Tiny internal, documentation, or narrowly scoped fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant