[codex] Fix glass hover compositing artifacts#4446
Conversation
Co-authored-by: codex <codex@users.noreply.github.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
ApprovabilityVerdict: Needs human review CSS-only changes to fix glass hover compositing artifacts. However, an unresolved review comment identifies a potential regression where backdrop blur may be unreliable after disabling the outer backdrop-filter, warranting human verification. You can customize Macroscope's approvability policy. Learn more. |
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Dismissing prior approval to re-evaluate e0dcd89
| className="border-0 bg-transparent p-0 shadow-none before:hidden [--viewport-inline-padding:0]" | ||
| viewportClassName="rounded-lg !overflow-hidden p-0 [clip-path:inset(0_round_var(--radius-lg))]" | ||
| className="border-0 bg-transparent p-0 shadow-none before:hidden [-webkit-backdrop-filter:none]! [--viewport-inline-padding:0] [backdrop-filter:none]!" | ||
| viewportClassName="rounded-lg !overflow-hidden p-0" |
There was a problem hiding this comment.
Model picker blur under overflow
Medium Severity
Disabling backdrop filter on the outer PopoverPopup leaves glass only on ModelPickerContent, which sits inside the popover viewport’s overflow-clip / overflow-hidden plus rounded-lg wrapper. Elsewhere, dropdown-glass stays on the outer chrome above that viewport so page content can be sampled. Computed blur(12px) can still appear while the frosted page blur is lost or unreliable, which weakens the bloom fix this change targets.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit e0dcd89. Configure here.
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
There are 2 total unresolved issues (including 1 from previous review).
Bugbot Autofix is ON, but it could not run because the branch was deleted or merged before autofix could start.
Reviewed by Cursor Bugbot for commit c2035ba. Configure here.
| data-model-picker-provider={entry.instanceId} | ||
| className={cn( | ||
| "relative isolate flex w-full cursor-pointer aspect-square items-center justify-center rounded-md transition-colors hover:bg-muted", | ||
| "relative isolate flex w-full cursor-pointer aspect-square items-center justify-center rounded-md transition-colors hover:bg-[color-mix(in_srgb,var(--popover)_90%,var(--foreground))] focus-visible:bg-[color-mix(in_srgb,var(--popover)_90%,var(--foreground))] focus-visible:outline-none", |
There was a problem hiding this comment.
Badge halo mismatches hover fill
Low Severity
Provider rail buttons now use a color-mix for hover/focus backgrounds. However, indicatorBackground, used by ProviderInstanceIcon for badge borders, still defaults to var(--muted). This creates a visual mismatch, causing badged instances to show a contrasting border or halo on hover and focus.
Reviewed by Cursor Bugbot for commit c2035ba. Configure here.
## What's Changed * Increase light-mode contrast for user message bubbles by @juliusmarminge in pingdotgg/t3code#4441 * Restore model picker layout and retain iterative test state by @juliusmarminge in pingdotgg/t3code#4450 * Color settled PR labels on hover by @juliusmarminge in pingdotgg/t3code#4451 * [codex] Fix glass hover compositing artifacts by @juliusmarminge in pingdotgg/t3code#4446 **Full Changelog**: pingdotgg/t3code@v0.0.29-nightly.20260724.892...v0.0.29-nightly.20260724.893 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.29-nightly.20260724.893


Summary
Hover actions in the thread sidebar could trigger stray blur artifacts, while branch and model picker surfaces allowed high-contrast content behind them to bloom through the glass. This made routine hover interactions look unstable and caused some dropdowns to pick up distracting color and text smears.
The root cause was a combination of many small backdrop-filter layers on ordinary sidebar rows, saturation applied to dropdown backdrops, and two nested backdrop filters in the model picker. These layers were recomposited as hover controls appeared, amplifying the underlying page content.
This change removes backdrop blur from flat thread rows while preserving glass on elevated surfaces. Dropdowns now use a neutral popover tint with a setting-aware opacity curve, retain the configured blur, and omit backdrop saturation. The model picker wrapper explicitly opts out of filtering so only its visible inner surface owns the glass effect.
At the default 80% glass setting, dropdowns render at approximately 83.6% effective opacity. At 40%, they render at approximately 50.8%, keeping the user setting visibly meaningful without restoring the original color bloom.
Validation
blur(12px), use the expected opacity curve, and avoid nested backdrop filters.git diff --check.Note
Fix glass hover compositing artifacts in sidebar and model picker surfaces
backdrop-filterfrom the model picker popover andbackdrop-blurfromcardvariant sidebar rows to eliminate compositing artifacts on hover..dropdown-glassin index.css to use a nestedcolor-mixwithvar(--popover)and a blur-only backdrop filter (nosaturate()), giving dropdown surfaces a denser, popover-tinted glass look.SidebarV2ThreadTooltipto render with dropdown-glass styling and hides the tooltip arrow.ModelPickerContent,ModelPickerSidebar, andModelListRowto align with the new glass surface approach.Macroscope summarized c2035ba.
Note
Low Risk
Visual/compositing-only changes to CSS and hover surfaces; no auth, data, or API behavior.
Overview
Fixes unstable blur and color bloom when hovering sidebar thread rows and when opening branch/model pickers over high-contrast page content.
Dropdown glass (
.dropdown-glass) is split from dialog styling: elevated menus use a popover-tintedcolor-mixstack (18% popover + user--glass-opacity), blur only (no backdrop saturation), and the dark model picker surface follows the same tint. Thread tooltips mirror that background inline.Sidebar thread rows drop
backdrop-bluron card-variant rows so flat rows no longer stack backdrop-filter layers on hover.Model picker disables backdrop-filter on the popover wrapper (single glass owner on the inner surface), moves rounded clipping to the content shell, and aligns hover/focus on picker rows and rail buttons with popover-based
color-mixinstead ofbg-muted.Reviewed by Cursor Bugbot for commit c2035ba. Bugbot is set up for automated code reviews on this repo. Configure here.