Skip to content

W-990: render the picker glass with public API only - #237

Merged
wr merged 1 commit into
mainfrom
wells/w-990-excessive-transparency-and-emoji-incorrectly-showing-on-0100
Oct 6, 2026
Merged

wr merged 1 commit into
mainfrom
wells/w-990-excessive-transparency-and-emoji-incorrectly-showing-on-0100

Conversation

@wr

@wr wr commented Oct 6, 2026

Copy link
Copy Markdown
Owner

Fixes the see-through, clipped picker that light-mode users see on macOS 27.2 with 1.10.0 (#230).

Cause

1.10.0 copied NSPopover's frostier glass by setting the private NSGlassEffectView._variant to 20 (#214). macOS 27.2 renumbered those private variants, so 20 now renders a clear lens:

  • the panel turns see-through, with rainbow fringing at the edges
  • the outer emoji columns, the search field and the tab bar refract out of view
  • the corners frost into wedges

On 27.0, variant 19 reproduces the reporter's screenshot exactly. The responds(to:) guard only covered the key disappearing, not its numbers changing meaning. Dark mode never set the variant, so it was unaffected.

Fix

Drop the private call. Light mode now uses the public .clear glass style under the existing 0.25 white veil. Dark mode stays on unveiled .regular glass, as before. This covers every panel built on PopoverGlass: the list picker, the Quick Access pill, the emoji browser and the GIF panel.

On 27.0, .clear with the veil measures the same as the shipped look (~247 over white, ~117 over black) and blurs the page behind it just as heavily. Standard glass with the veil reads greyer over white and turns into a light slab over dark pages.

Test plan

  • scripts/run-tests.sh
  • Verified on macOS 27.2.0: the shipped build reproduces the bug, and this branch renders correctly
  • A stand-in panel on 27.0 and 27.2 compared 1.9.1, 1.10.0 and the fix over light and dark pages. On 27.2 the private style breaks and .clear holds.

Refs W-990

1.10.0 copied NSPopover's frostier glass by setting NSGlassEffectView's
private _variant to 20. macOS 27.2 renumbered those variants, so 20 now
renders a clear lens: the panel goes see-through, its edge columns, search
field and tab bar refract out of view, and the corners frost into wedges.
On 27.0, variant 19 reproduces the reporter's screenshot exactly. The
responds(to:) guard only covered the key disappearing, not this.

Light mode now uses the public .clear style under the existing 0.25 white
veil. On 27.0 that measures the same as the shipped look (~247 over white,
~117 over black) and blurs text behind it just as heavily. Dark mode stays
on unveiled .regular glass, as before.

Refs: W-990
@linear-code

linear-code Bot commented Oct 6, 2026

Copy link
Copy Markdown

W-990

@wr
wr enabled auto-merge (squash) October 6, 2026 05:05
@wr
wr merged commit 5333266 into main Oct 6, 2026
3 checks passed
@wr
wr deleted the wells/w-990-excessive-transparency-and-emoji-incorrectly-showing-on-0100 branch October 6, 2026 05:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant