Skip to content

perf: tune flyout backdrop blur - #15

Open
BumpyClock wants to merge 1 commit into
mainfrom
perf/backdrop-blur-material
Open

perf: tune flyout backdrop blur#15
BumpyClock wants to merge 1 commit into
mainfrom
perf/backdrop-blur-material

Conversation

@BumpyClock

@BumpyClock BumpyClock commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Description

Menus and dropdowns looked poor for two separate reasons: the pinned GPUI revision used a lower-quality blur path, and the component flyout material requested an oversized 60px blur behind a heavy 0.75/0.85 tint.

This PR:

  • consumes the phase-stable cross-backend blur from BumpyClock/gpui#8 by pinning gpui, gpui_platform, and vendor/gpui to 5569a8cdb31a12f7ec4b9a825379400edde211c8
  • tunes the shared flyout preset used by menus and dropdowns from 60px to 32px and from 0.75/0.85 to 0.68/0.76 light/dark tint opacity
  • documents the theme override keys
  • advances the pre-1.0 compatibility pair from 0.6.0 to 0.7.0, as required for a GPUI revision change

A representative flyout reduced padded blur work from 476,352 to 357,744 pixels (~25%) and pyramid scratch from ~3.0 MiB to ~2.3 MiB (~23%).

Depends on BumpyClock/gpui#8.

Screenshot

Before After
60px blur, 0.75/0.85 tint; flatter and chalkier 32px blur, 0.68/0.76 tint; clearer depth and backdrop modulation

Fresh source-blind review of local macOS light/dark A/B captures preferred the tuned result. No halo, banding, blur leakage, geometry shift, or text-contrast regression was found.

Breaking Changes

Published workspace crates advance from 0.6.0 to 0.7.0 because this pre-1.0 release changes the pinned GPUI revision. No intentional source API break is introduced. Release tags remain deferred until the change lands on main, per repository workflow.

How to Test

  1. Open a popup menu and a select/dropdown over detailed content in light and dark themes.
  2. Confirm background detail is smoothly defocused while labels remain crisp and the blur stays inside the rounded flyout.
  3. Override material.flyout_blur_radius, material.flyout_light_opacity, or material.flyout_dark_opacity in a theme and confirm the flyout follows the override.

Validation run:

  • cargo fmt --all -- --check
  • cargo metadata --locked --format-version 1
  • cargo build --locked
  • cargo clippy --locked -- --deny warnings
  • cargo test --locked -p gpui-component — 188 passed
  • python3 -m json.tool crates/ui/src/theme/default-theme.json
  • local story app macOS light/dark menu and dropdown smoke/A-B capture

AI Assistance

AI-assisted change. Codex implemented and tested it; Claude Fable and Oracle browser reviews challenged the blur design; independent source and visual reviews found no blockers. Findings were checked against the code and runtime captures before submission.

Checklist

  • I have read the CONTRIBUTING document and followed the guidelines.
  • Reviewed the changes in this PR and confirmed AI generated code is accurate.
  • Passed cargo run for story tests related to the changes.
  • Tested macOS, Windows and Linux platforms performance — macOS visual smoke completed; cross-platform renderer CI belongs to the dependent GPUI PR.

Note

Tune flyout backdrop blur radius from 60px to 32px with reduced opacity values

Reduces the flyout material defaults: blur_radius drops from 60px to 32px, light opacity from 0.75 to 0.68, and dark opacity from 0.85 to 0.76. Changes apply in fluent_tokens.rs, default-theme.json, and surface/mod.rs. Also bumps the workspace version to 0.7.0 and updates the gpui submodule to a revision with phase-stable backdrop blur pyramid support.

Macroscope summarized 8f6ecf0.

@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

The pull request releases the workspace as version 0.7.0, updates GPUI revision pins, tunes flyout blur and opacity defaults across themes and presets, and documents the new material values and compatibility pairing.

Changes

0.7.0 release and flyout material

Layer / File(s) Summary
Flyout material defaults
crates/ui/src/surface/mod.rs, crates/ui/src/theme/*, docs/docs/theme.md
Flyout blur changes from 60px to 32px, light/dark opacity changes to 0.68/0.76, and the corresponding theme overrides and documentation are added or updated.
Release metadata and GPUI alignment
Cargo.toml, crates/*/Cargo.toml, vendor/gpui, docs/COMPATIBILITY.md
Workspace crates are bumped to 0.7.0, GPUI pins advance to revision 5569a8cdb31a12f7ec4b9a825379400edde211c8, and the compatibility matrix records the release pairing.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title is concise and accurately reflects the main change: reducing flyout backdrop blur.
Description check ✅ Passed The description matches the template well and includes the change details, screenshot, breaking changes, testing, and checklist.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch perf/backdrop-blur-material

Comment @coderabbitai help to get the list of available commands.

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