fix(passwords): keep hover feedback on row action buttons

Merged
TE
9d ago
+81-9

This webviews-only diff has zero Swift paths, so the broad Swift guard crash is outside what it can affect; focused Playwright and webview gates passed on head run 40943576051 and base run 40944074441.

Passwords rows tinted their full width even though only the small action buttons are clickable. Removing the row hover background keeps blank space unchanged while Reveal, Copy, Edit, Delete, and Remove retain their existing feedback.

Leo, 2026-10-27: "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 saved-password, passkey, and exception containers have no row click handler. The complete diff removes four CSS lines, extends the real Chromium regression, and adds fixture-only pointer hovers over the row action controls. Risk is limited to row hover paint.

Validation for head 1be83dd014318c0e5913ea38d93e70852a81c76e, against merged base 8b01895e95a37d8a691e3547d14180aa6fdf8fa8:

  • Focused fleet head run 40943576051: SUCCESS, 4 browser tests, 0 failures, 142 assertions. Light/dark blank-row hover, button hover/press/keyboard focus, and 360/900 px layout checks passed.
  • The same command on base run 40944074441: SUCCESS, 2 existing browser tests, 0 failures, 16 assertions. Base predates the added hover assertions; test-first dispatch 40780304059's automatic fleet job 57647d6ff5dba6c040e69928 supplies the observed regression: light/dark blank-row checks failed with black/white 6% wash instead of transparent.
  • Both focused runs also passed webviews typecheck (3,059 files), lint on the changed TypeScript files (0 warnings/errors), and formatting on all three changed files. Browser command: CMUX_BROWSER_TESTS=1 bun test test/passwords-narrow.test.ts.
  • Exact-head fast gates and signing-vars are SUCCESS; neither needs a base-red exception.
  • The remaining guard failure, No new SwiftUI (macOS UI is AppKit), was reproduced on both exact head and base with python3 -I scripts/cmux-next/check-no-swiftui.py --base 8b01895e95a37d8a691e3547d14180aa6fdf8fa8 .. Both exit 1 with the same two imports: HomeChatColorsPanel.swift and HomeChatColorsView.swift under Packages/macOS/CmuxNext/Sources/CmuxNextHome/ChatColors/. Both report 2 findings and 158 importing files; outputs are byte-identical (SHA-256 7c425c6e9a5177517ac427b0c8f2f0a7fc66119befea6360e89b53fe192367c5).
  • The diff is webviews-only, with zero Swift paths; the broad Swift guard crash/cut-short is outside what it can affect. It is not claimed as a passing test or an identical base crash. Focused head/base runs above cover the affected surface; no Mac compile was run.
  • Fresh independent Astra high/fast review returned SHIP for exact base 8b01895e95a37d8a691e3547d14180aa6fdf8fa8 to head 1be83dd014318c0e5913ea38d93e70852a81c76e, with no actionable findings. Review was read-only; the focused fleet runs above provide execution evidence.

Real light/dark hover captures use public sample fixtures. Head gallery 40784222971 passed at d9252c46ccf55af9d47412de788d29b688214396; the Passwords CSS and gallery fixture are byte-identical at the current head. Matched base gallery 40808658323 used base a25aeb1d5d94e44bf8fe994d158a535a0b1f6ad1 with the gallery overlay. The earlier base capture in run 40784222971 contains resting frames only; the matched-base run provides before-hover evidence.

ThemeBefore hoverAfter hover
LightLight beforeLight after
DarkDark beforeDark after

Historical receipt correction: dispatch 40790425676 passed through automatic Linux fallback job 38fb8771a9ef512315b7f532 (4/4 tests, 142 assertions at d925). Its queued GitHub job was cancelled before assertions; that cancelled job is not the passing receipt.

Changelog

Fixed: Passwords page blank row space no longer highlights on hover.

Agent session: agent session