fix(ui): remove glass chrome appearance - #236
Conversation
There was a problem hiding this comment.
Devin Review found 2 potential issues.
2 flags not posted on this PR by your GitHub settings — view them in Devin Review. (Configure)
| 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" |
There was a problem hiding this comment.
🟡 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.
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 } |
There was a problem hiding this comment.
🟡 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.
Was this helpful? React with 👍 or 👎 to provide feedback.
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)