Skip to content

fix(glass): blend the hover action rail into the row on every platform - #3672

Merged
afonsojramos merged 1 commit into
mainfrom
fix/glass-hover-rail-blend
Nov 11, 2026
Merged

afonsojramos merged 1 commit into
mainfrom
fix/glass-hover-rail-blend

Conversation

@afonsojramos

Copy link
Copy Markdown
Member

Summary

With the Glass theme on macOS, hovering a notification row shows its action buttons on a near-white box with a hairline border, separate from the row. Windows has the same problem. #3604 fixed it only on Linux.

The rail used the macOS tooltip material: a near-opaque fill with a backdrop blur. #3604 replaced that fill on Linux with the app background under the row's hover wash, which works because the Linux window is opaque. On macOS the window background is the native vibrancy material, which CSS cannot paint, so any fill there reads as a slab.

Under Glass, the rail now has no fill on any platform. The hovered row's own surface shows through, so the rail reads as part of the row. To keep row content from showing through the buttons, the rail's siblings are clipped at the rail's leading edge while the rail is shown:

  • The row or header (.group) becomes an inline-size container, so 100cqw locates the rail inside each sibling's box.
  • The clip inset follows the rendered button count (0 to 3 small IconButtons, 1.75rem each), because disabled actions render nothing. Read rows show one button, and read Gitea, GitLab and Bitbucket rows show none.
  • The clip extends past the other three edges so focus rings are not cut off.

This replaces both the frosted rule and the Linux-only rule. Classic is unchanged, and Reduce Transparency and Increase Contrast still fall back to solid surfaces.

Testing

  • vp check and the renderer test suite pass.
  • Checked on macOS in Glass: the rail blends into hovered notification rows and headers.
  • Rendered in Chromium with a simulated vibrancy background and with the opaque window, in light and dark, for notification rows, repository and account headers, and keyboard focus. Long titles stop at the rail, and tooltips inside a hovered row still render outside it.
  • New visual-suite assertions check that the Glass rail has no fill and that row content is hit-testable up to the rail's leading edge but not inside it, for 3-, 1- and 0-button rails. They fail against the previous CSS.
  • The Glass screenshot baselines are not regenerated: they are arm64 renders, which this change could not reproduce locally. If the Visual Regression job flags them, they need updating from its output.

@afonsojramos
afonsojramos requested a review from setchy as a code owner November 10, 2026 16:37
@github-actions github-actions Bot added the bug Something isn't working label Nov 10, 2026
@sonarqubecloud

Copy link
Copy Markdown

@setchy

setchy commented Nov 10, 2026

Copy link
Copy Markdown
Member

Any way our visual regression suite could catch this in future?

@setchy

setchy commented Nov 11, 2026

Copy link
Copy Markdown
Member

the notification action hover color looks similar to the glass mode tooltips for sidebar buttons (ie: Settings, Filters)

@afonsojramos

Copy link
Copy Markdown
Member Author

the notification action hover color looks similar to the glass mode tooltips for sidebar buttons (ie: Settings, Filters)

yeah, but one's behaviour is clearly floating on top of other things, where the other is action buttons within the row. HOWEVER, one could change them instead to three individual buttons. But maybe that can be a later experiment.

@afonsojramos
afonsojramos merged commit 5efe1cf into main Nov 11, 2026
26 of 27 checks passed
@afonsojramos
afonsojramos deleted the fix/glass-hover-rail-blend branch November 11, 2026 16:19
@github-actions github-actions Bot added this to the Release 8.2.0 milestone Nov 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Development

Successfully merging this pull request may close these issues.

2 participants