Skip to content
This repository was archived by the owner on Oct 17, 2026. It is now read-only.

feat(panel): macOS 26 layout with a capsule field and sectioned results - #8

Merged
oddurs merged 1 commit into
mainfrom
feat/tahoe-layout
Oct 17, 2026
Merged

oddurs merged 1 commit into
mainfrom
feat/tahoe-layout

Conversation

@oddurs

@oddurs oddurs commented Oct 17, 2026

Copy link
Copy Markdown
Owner

Problem

The panel was one rounded box with a flat list and a kind label on every row. It worked, but it read as a generic launcher rather than part of macOS 26, whose search field is a glass capsule with results on their own surface, grouped by kind.

Approach

  • Two pieces of glass. PanelContent lays out the field's capsule and, 8 pt below, the results card, each an NSGlassEffectView (popover material with a mask before macOS 26) clipped to its shape so the window shadow follows both outlines.
  • Sections. Results.compose now returns [ResultSection]: a Website, Conversion, or Calculator section first, then Top Hit, then Applications / System Settings / Files / Common Command, each placed by its best member (apps and files are merged by score first), then Search the Web. The selection steps through sections.rows in display order.
  • Quieter rows. No "Application" label under an Applications header; topics show their pane's name; file paths truncate in the middle so they keep their start and end. "No Results" when nothing matches and web search is off. Calculations drop the "= " prefix: the header and icon already say it.
  • A 0.12 s fade on open, none with Reduce Motion.
  • Topic noise. Once grouped, the System Settings section was visibly full of noise for three-letter queries: "saf" listed Screen area for display (initials) and Lockdown Mode (keyword "safety"). Topics now match only where each typed word starts a word of the topic, in order, and keywords count from the fourth letter. Apps keep initials ("vsc").
  • --snapshot renders offscreen into an image with solid surfaces, so reviewing a design never shows a window or takes focus.

Look at sceptically

  • Glass can't be captured offscreen, so the renders I reviewed (light and dark, ten queries) used solid surfaces. The glass path is the same NSGlassEffectView setup as before, now twice; the shadow-clipping trick is unchanged.
  • The pre-26 path (visual effect view with a mask image) still hasn't run on macOS 14 or 15.
  • Grouping can place a lower-scored row above a higher-scored one in a later group. That's Spotlight's trade-off too: scanning by kind beats a strict score order.
  • "dark" lists Files above System Settings › Appearance, because files with "dark" in their names outscore a keyword match.

Checklist

  • scripts/task check passes locally
  • Ranking changes include tests showing the order they fix
  • UI reviewed with offscreen renders in light and dark

The panel was one box with a flat list, which read as a generic launcher rather than part of macOS 26. The field is now a glass capsule and results sit on their own glass card below it, grouped the way Spotlight groups them, with quieter rows. Settings topics match by word start and keywords from the fourth letter, because once results were grouped the System Settings section was visibly full of noise for three-letter queries.
@oddurs
oddurs merged commit bf707d3 into main Oct 17, 2026
2 checks passed
@oddurs
oddurs deleted the feat/tahoe-layout branch October 17, 2026 02:20
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant