fix(tray): restore the enabled line hover wash

Merged
TE
7d ago
+12-5

Hovering Stop in an enabled running-tray line stopped highlighting that line after #27206, breaking the existing running-strip browser test on base. Restore the tray's one full-width hover wash, including the embedded Stop, and keep Stop transparent. Lines with nothing to open remain unhighlighted.

Takes back #27206: only its tray hover change. The tray line is the control; the Session Info PR-row fix and the gallery-wide trailing-control guard remain. The guard gets one narrow hover exception for direct Stop buttons in enabled tray lines, with the reason in code. No resting plates are exempted.

Leo: "why are you giving it the entire row when it's only this small little section? Just don't do that. Don't ever do that."

The rule is: "A hover or press highlight covers only the control it belongs to, never the whole row around a small control." Here the tray intentionally presents one full-width control and its embedded Stop has no second box. The existing test expectation is correct.

risk:normal. CSS-only product change plus a scoped browser-guard exception; no defaults or native code change.

Validation:

  • Existing running-strip browser suite: 7/7 passed with CMUX_BROWSER_TESTS=1, including Stop hover, disabled rows, and narrow/scrolling trays.
  • Before/after browser measurements in light and dark: hovering Stop changed filled descendants from [] to [acpmux-agent-line]; Stop itself remained transparent.
  • Local Node 24 web lint passed. Combined browser suite: 8 passed, 0 failed, 33 assertions; gallery guard covered 238/238 states, 695 groups and 1,828 hovered controls.
  • Exact-head combined CI: 40846634691 (passed: 8 tests, full 238-state gallery guard, web lint and type checks); independent Astra review: SHIP.

Before/after Linux browser captures (existing running-strip harness; before injects the pre-fix hover rule, after uses shipped CSS):

ThemeBefore: Stop hoveredAfter: Stop hovered
LightBefore lightAfter light
DarkBefore darkAfter dark

Agent session: agent session