cmux-next: an unfocused pane's tabs fade further, so the focused pane is plain to see

Merged
TE
16d ago
+65-14

Leo: a plain link click in a lone chat opened GitHub in a right split without focusing it, and Cmd-W then closed his chat. directional-motion fixes where focus goes (plain click focuses the new tab, close acts on the focused tab, closing a tab opened from a chat returns to the chat). This PR makes the focused pane plain to see, so a person can tell which tab Cmd-W will close.

Cause

With the default appearance.focusIndicator (tabs, no ring since 53684ffe, when pane lines went away) the only focus cue is that the other panes' tabs draw subtler, at focus.inactiveTabStrength 0.35: the unfocused selected pill kept 0.65 of its fill and its label stayed close to full contrast. In Leo's setup (glass-clear, split dividers at opacity 0) nothing else marks focus, and the unfocused-pane dim was just made subtler on his request (#22948).

Change

  • focus.inactiveTabStrength 0.35 -> 0.6 (Debug tunable; LayoutStyle default to match): an unfocused pane's selected pill draws at 0.4 of its fill, and its labels mix further toward the page. The contrast floors are unchanged (3.5:1 selected, 2.5:1, 2:1), so every unfocused tab stays readable.
  • An unfocused tab's hover fill fades half as much (alpha × 0.7), so hover still shows on the pane a person is about to pick (from review).
  • No settings default changes (the ring stays off by default; the dim stays at 0.10). Docs: plans/cmux-next/focus.md, tabs.md, design-tokens.
  • Not here (would be a new visual, held for Leo): briefly showing the ring when focus moves without a click.

Changelog

Changed: In cmux NEXT, an unfocused pane's tabs draw fainter, so the focused pane is easier to tell apart.

Observed / Not run

  • Red then green: FocusedPaneTabCueTests (commit 1 adds only the test; on base the unfocused pill keeps 0.65 of its fill). Fleet steps fpc-red-620e754d80 and fpc-green2-975dc6d255 were still running at merge; results go in a comment.
  • Observed: fleet compile-check --app passed on the head 975dc6d2 (after one base merge); independent review subagent passed. The hover change came after that review (one line in ChromeEmphasis.swift, its own suggestion).
  • Not run: no capture of the new look.

Agent session: huge-blue

🤖 Generated with Claude Code