Skip to content

fix(ui): remove glass chrome appearance - #236

Merged
j35dev merged 1 commit into
mainfrom
fix/remove-glass-chrome
Sep 28, 2026
Merged

j35dev merged 1 commit into
mainfrom
fix/remove-glass-chrome

Conversation

@j35dev

@j35dev j35dev commented Sep 16, 2026 •

Copy link
Copy Markdown
Owner

Task: user-requested removal of glass chrome appearance functionality.\n\n## What changed\n- removed the persisted glass preference and Appearance toggle\n- removed theme glass capabilities, glass tokens, renderer blur activation, and glass-specific classes\n- removed Electron acrylic, vibrancy, and transparent-window options so every theme uses a solid native background\n- retained wallpaper compositing as its own isolated feature using opaque UI surfaces\n\n## Verification\n- VITEST_MAX_WORKERS=2 pnpm verify\n- typecheck: passed\n- lint: passed\n- tests: passed (including desktop: 157 files, 1402 passed, 3 skipped)


Devin Review

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 2 potential issues.

2 flags not posted on this PR by your GitHub settings — view them in Devin Review. (Configure)

Devin Review

aria-label="Command palette"
onClick={(event) => event.stopPropagation()}
className="mt-[12vh] h-fit w-[min(560px,90vw)] overflow-hidden rounded-lg border border-border ari-glass-overlay"
className="mt-[12vh] h-fit w-[min(560px,90vw)] overflow-hidden rounded-lg border border-border bg-surface-2"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Overlay selections blend into panels

When CommandPalette opens, activeIndex paints the selected row with the panel's identical bg-surface-2 color. FilePopup and ContentSearchOverlay share this regression. Keyboard users cannot see which action Enter will run.

Learn more

The overlay panels now use the same opaque surface token as their keyboard-active rows. The panel background therefore erases the only active-row fill in CommandPalette, FilePopup, and ContentSearchOverlay. Pointer movement still changes activeIndex, and Enter still executes that index, but the UI no longer shows it. Similar bg-surface-2 hover collisions also affect menus whose panel was changed to that token.

Example: Open the command palette and press ArrowDown. activeIndex advances, but both the old and new rows retain the same visible background. Pressing Enter runs the newly selected command without any visible indication of that selection.

Recommended fix: Use a distinct panel and interaction ramp, such as bg-surface-1 for panels with bg-surface-2 active rows, or keep bg-surface-2 panels and move active/hover rows to a clearly distinct token. Apply the same hierarchy consistently to all overlays changed in this PR.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

? { vibrancy: 'under-window' as const, visualEffectState: 'active' as const }
: { transparent: true as const }
return { backgroundColor: '#00000000', symbolColor, ...translucent }
return { backgroundColor: oklchToHex(theme.colors.bg) ?? FALLBACK_BG, symbolColor }

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Live themes retain stale backdrop

After a live theme change, theme.apply leaves backgroundColor at its launch value. applyThemeToWindow updates only native theme and Windows symbols. A renderer repaint can expose the stale color behind the new palette.

Learn more

The BrowserWindow is now always opaque and receives the launch theme's backgroundColor during construction. Theme persistence invokes theme.apply after every theme save, but that handler only updates nativeTheme.themeSource and Windows titlebar symbols. Electron keeps the original BrowserWindow background until the process recreates the window or code calls its background-color setter. Any interval where Chromium does not cover the native surface can therefore reveal the previous theme.

Example: Launch with Obsidian, then switch to Porcelain. The renderer becomes light while the BrowserWindow background remains Obsidian dark. If the renderer reloads or briefly loses its painted surface, the window flashes dark instead of Porcelain's background.

Recommended fix: In applyThemeToWindow, apply chrome.backgroundColor to the live BrowserWindow with Electron's background-color API, while retaining the existing destroyed-window guard and titlebar update.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

@j35dev
j35dev merged commit dd639ca into main Sep 28, 2026
7 checks passed
@j35dev
j35dev deleted the fix/remove-glass-chrome branch September 28, 2026 07:12
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.

2 participants