Skip to content

fix(web): respect glass opacity for dialog backdrops - #4

Merged
amv146 merged 2 commits into
mainfrom
fork/upstream-29525-glass-opacity
Nov 8, 2026
Merged

amv146 merged 2 commits into
mainfrom
fork/upstream-29525-glass-opacity

Conversation

@amv146

@amv146 amv146 commented Nov 8, 2026 •

Copy link
Copy Markdown
Owner

Problem

Setting Glass opacity to 100% disables shared glass blur, but dialog backdrops still apply a fixed 4px blur. Settings and Usage therefore keep filtering the window despite selecting the existing reduced-effects workaround.

This ports pingdotgg/t3code#29525, originally reported on Windows using the Microsoft Basic Render Driver.

Change

Shared web/desktop dialog backdrops use none at 100% Glass opacity and restore the existing 4px blur below 100%. Dimming and defaults are unchanged. Only the glass style writes are extracted; newer appearance and typography startup remain intact.

Reapply the exact four-file feature delta from integration merge 99263d35868cd88d59911fe71b601c856238bf0d, whose original upstream head was 13e803a6793e7f5fc997f5bf1e89950c86273a69. A fresh commit is necessary because the original integrations were reverted in ac9a65b0be while their heads remain ancestors. No upstream-sync merges are replayed.

The shared stylesheet also covers alert-dialog backdrops. Media backdrops already disable blur and stay unchanged. No new setting, provider/contract/server change, native-mobile effects, workflow change, lockfile change, or PR evidence assets.

Scope and approval

The fork owner explicitly requested this port as one of five separate fork PRs, with one top-level thread per PR, and authorized merging into amv146/t3code only when the latest head is ready. This approval was supplied in the task on November 8, 2026; it is fork approval, not a claim of upstream maintainer approval. Upstream PRs and their existing branches are not modified.

Original work and contributor credit: Alex Vallone (amv146), with Copilot co-authorship retained. The upstream review follow-up in 96c9dfcf18 deliberately tests the production glass-style helper instead of moving unrelated typography/subscription startup into a test fixture. This port preserves that reviewed scope.

This is a focused fix to an existing setting. Related: pingdotgg#20269, whose closure comment recommends 100% Glass opacity as a workaround; this fixes only its backdrop exception.

Verification

Current fork worktree:

Exact command Result
git diff --cached --check Passed.
git diff --cached | git patch-id --stable Passed: 6ab98f5c008d050644986be1fe71a7defed65f45.
git diff 99263d3586^1 99263d3586 | git patch-id --stable Passed: the same patch ID, confirming the exact source delta.
vp run check:changed origin/main Blocked before execution: project-local dependencies, including vite-plus, are missing.
From apps\web: vp test run src\components\ui\dialog.browser.test.tsx src\hooks\useSettings.test.ts src\components\settings\TypographySettings.browser.test.tsx --project browser --project unit Blocked at configuration load: dependencies, including @vitejs/plugin-react, are missing. No tests ran locally.
vp install --frozen-lockfile Failed: corporate registry packagefeedproxy.microsoft.io returned HTTP 404 for @alchemy.run/test metadata. No dependency manifests or lockfiles changed.

GitHub-hosted validation at head 8a8924bc1ba1459310d8081a04d42060e0d4ae86:

Exact command Result
node apps/web/node_modules/playwright/cli.js install --with-deps --only-shell chromium Passed on the GitHub-hosted runner.
vp run check:changed "$BASE" with BASE=852618b095a70cf480d99831708eb40f18f4c240 Passed: format, lint, both knip stages, affected typechecks (2 packages), both dialog browser cases, and React compiler checks (2 files).

Fork PR validation run completed successfully. The coordinator's shared checkout fix was merged from origin/main; this PR does not independently change workflows or bypass checks.

CodeRabbit's substantive full review completed for 8a8924bc1ba1459310d8081a04d42060e0d4ae86, covering all four changed files, with no actionable findings and a successful CodeRabbit check. The coordinator resumed fork-only completion after enabling CodeRabbit; Macroscope is not required.

The advisory Native fingerprint diff remains queued on an unavailable Blacksmith runner. Its workflow explicitly describes the check as advisory; none of its native fingerprint input paths changed. Fork main has no branch protection or required status checks, and the branch rules endpoint returns no rules. No check is disabled, canceled, or overridden by this PR; the relevant hosted validation and substantive latest-head review have passed.

The port retains the browser regression for initial 80%/100% opacity, repeated 100%/95%/80% changes, restored default filtering, and unchanged light/dark dimming. Local integrated browser verification was not repeated: no shared/live server or pqtest browser was used. Existing upstream evidence below is reused, not newly captured by this port.

Previously uploaded upstream evidence, copied from the upstream PR description:

Before: original 4px backdrop at 100% After: filtering disabled at 100%
Upstream before: original backdrop blur at 100% opacity Upstream after: filtering disabled at 100% opacity

The upstream description states that the before screenshot reproduces the original CSS in the same isolated Windows desktop test instance. These screenshots were not captured during this fork port.

Reporter-supplied upstream recordings: 40% opacity, blur enabled and 100% opacity, blur disabled. These compare settings, not before/after code versions at the same setting. Upstream states they are muted, machine-name-redacted, and retain original playback speed.

Upstream integrated verification also reports the real slider, saved 100% across reload, Settings/Usage, and unchanged light/dark tint at the original head. That is historical upstream evidence, not current fork execution. No quantified performance improvement is claimed here.

Model: GPT-6.1 Sol (gpt-6.1-sol). Harness: T3 Code acpRegistry.

Reapply the feature-only delta from pingdotgg#29525 after the fork integration revert. Preserve current appearance startup and the original helper/browser coverage.

Source: 99263d3 (first-parent delta), upstream head 13e803a.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S labels Nov 8, 2026
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@amv146

amv146 commented Nov 8, 2026

Copy link
Copy Markdown
Owner Author

Merged origin/main, including coordinator CI fix 852618b, without rebasing or independently editing the workflow. Fresh head: 8a8924b. git diff origin/main...HEAD --check passed; git diff origin/main...HEAD | git patch-id --stable remains 6ab98f5c008d050644986be1fe71a7defed65f45, matching the original four-file feature delta. Fresh hosted validation is required before fork-only merge. Local dependency-registry limitations are unchanged.

@amv146

amv146 commented Nov 8, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Nov 8, 2026 •

Copy link
Copy Markdown
Action performed

Full review finished.

@coderabbitai

coderabbitai Bot commented Nov 8, 2026 •

Copy link
Copy Markdown

Explain Change →

No actionable comments were generated in the recent review.

Walkthrough

The app now applies glass opacity through a shared helper. At 100% opacity, the helper disables glass blur and the dialog backdrop filter. The dialog backdrop utility reads the filter variable, and browser tests cover opacity changes in light and dark modes.

Changes: Glass appearance

Layer / File(s) Summary
Apply glass appearance to dialog backdrops
apps/web/src/appearanceGlass.ts, apps/web/src/index.css, apps/web/src/appInit.tsx, apps/web/src/components/ui/dialog.browser.test.tsx
The shared helper sets glass opacity and updates blur and backdrop-filter properties. App initialization calls the helper when opacity changes. The dialog backdrop utility uses the filter variable, and browser tests verify the resulting styles.

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

Change: Bug fix

Suggested reviewers: juliusmarminge, t3dotgg

Merge Risk: Minimal · up to 8a892

No actionable merge-blocking issue is established. Complete the pending hosted validation before merging.

Pre-merge checks: Passed 4

Check name Status Explanation
Title check Passed The title "fix(web): respect glass opacity for dialog backdrops" follows conventional commit form and names the main change. The raw summary and objectives show dialog backdrops now use no blur at 100…
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.
Description check Passed The description follows the repository template and states the problem, change, scope and approval, and verification. It explains that the fix makes dialog backdrops use no blur at 100% Glass opacity …
Full details: Title check

Explanation

The title "fix(web): respect glass opacity for dialog backdrops" follows conventional commit form and names the main change. The raw summary and objectives show dialog backdrops now use no blur at 100% Glass opacity and keep the 4px blur below 100%, which matches the title. The title is short, specific, and free of file lists or vague wording.

Full details: Description check

Explanation

The description follows the repository template and states the problem, change, scope and approval, and verification. It explains that the fix makes dialog backdrops use no blur at 100% Glass opacity and keeps the 4px blur below 100%. It also links the upstream PR and the related issue. Verification is detailed: local checks were blocked by missing dependencies, hosted validation passed at the stated head, and the upstream screenshots and recordings are labeled as historical evidence. The template's Problem section has a leftover placeholder comment, but its content is filled in below the comment. The description is substantive and specific. Two items are weaker. The Verification section states that the latest-head hosted validation was passed, while the PR objectives say that validation was still pending when the PR was opened. The Change section also contains some process detail (the reverted integration history and the fork-only merge authorization) that does not describe the code change. These gaps do not make the description largely incomplete.

Finishing Touches

Generate docstrings

  • Commit to this branch
  • Create a new PR
Generate unit tests (beta)

  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Recent review info

Run configuration

Commits

Reviewing files that changed from the base of the PR and between 852618b and 8a8924b.

Files selected for processing: 4

  • apps/web/src/appInit.tsx
  • apps/web/src/appearanceGlass.ts
  • apps/web/src/components/ui/dialog.browser.test.tsx
  • apps/web/src/index.css

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 5 remain after this review.

@amv146
amv146 merged commit 668c823 into main Nov 8, 2026
11 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant