[Bug]: Desktop context menus do not inherit imported VS Code themes
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 23k
- Forks
- 5.9k
- Avg merge
- 11h 14m
- Merged PRs (30d)
- 357
Description
Before submitting
- I searched existing issues and did not find a duplicate of this specific imported-theme bug. Related closed issue #333 is linked below.
- I included enough detail to reproduce or investigate the problem.
Area
apps/desktop
Summary
Desktop application context menus do not inherit the active imported VS Code theme palette. The main UI adopts the imported colors, but the thread context menu keeps the native menu colors. Importing a theme therefore leaves a visible part of the application unthemed.
Steps to reproduce
- Open the T3 Code desktop app.
- Import and select a dark VS Code theme with a visibly colored palette, such as a blue background, through the theme settings.
- Right-click a thread in the sidebar.
- Compare the menu background, text, separators, and selection colors with the selected theme. Open a submenu such as Snooze or Copy as well.
- Switch to another imported theme with the same dark appearance but different colors, then reopen the menu.
Expected behavior
Application context menus and their submenus use the active imported theme's corresponding palette colors and update when the selected theme changes.
Actual behavior
With an imported blue theme active, the sidebar uses the imported colors, but the thread context menu remains grey.
Source inspection explains the desktop mismatch: selecting a custom palette updates the web UI, while the desktop menu path receives only a light, dark, or system appearance setting.
Impact
Cosmetic issue. Imported themes render inconsistently across the application's own controls.
Version or commit
Source inspected at 061543e9e5b54ec0048725c37d52fef2962df173. The affected installed build was not independently identified. No fresh interactive reproduction was performed during this investigation.
Environment
Desktop application context-menu path. Exact release and OS version were not captured with the report.
Source evidence
localApi.tsroutes desktop context menus throughdesktopBridge.showContextMenu; browser clients useshowContextMenuFallback.ElectronMenu.tsbuilds and opens an Electron menu without the imported palette.DesktopThemeSchemacarries onlylight,dark, orsystem.ElectronTheme.tsapplies that setting toElectron.nativeTheme.themeSource.- The existing browser context menu uses application theme variables. This provides a reference for the expected palette integration.
Scope and related issue
This report covers application context menus and their submenus when an imported VS Code theme is active. Native filesystem dialogs and syntax highlighting are outside its scope.
#333 previously requested custom Linux menus and dialogs. It was closed with a comment stating that application context menus had been replaced. This fresh report isolates imported-theme inheritance, which the current desktop menu path still does not provide.
Workaround
The browser client uses a menu that reads the application theme variables, according to source inspection. That workaround has not been verified interactively for this report.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with apps/desktop/src/electron/ElectronMenu.ts and trace its calls from apps/web/src/localApi.ts. Compare the native menu path with apps/web/src/contextMenuFallback.ts and inspect DesktopThemeSchema in packages/contracts/src/ipc.ts plus ElectronTheme.ts. Done means desktop context menus and submenus use the active imported theme palette and update when the theme changes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- electron, typescript
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 65/100