From dc1fc3aa8fac5913914a84dda105afc7b77401c3 Mon Sep 17 00:00:00 2001 From: Kiet Ho Date: Thu, 4 Dec 2025 20:44:37 -0800 Subject: [PATCH 1/5] feat(desktop): add help menu to top bar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a HelpMenu component with quick access to: - Contact Us (email) - Report Issue (GitHub issues) - Join Discord - Keyboard Shortcuts (opens settings) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../components/TopBar/HelpMenu/HelpMenu.tsx | 80 +++++++++++++++++++ .../main/components/TopBar/HelpMenu/index.ts | 1 + .../screens/main/components/TopBar/index.tsx | 2 + 3 files changed, 83 insertions(+) create mode 100644 apps/desktop/src/renderer/screens/main/components/TopBar/HelpMenu/HelpMenu.tsx create mode 100644 apps/desktop/src/renderer/screens/main/components/TopBar/HelpMenu/index.ts diff --git a/apps/desktop/src/renderer/screens/main/components/TopBar/HelpMenu/HelpMenu.tsx b/apps/desktop/src/renderer/screens/main/components/TopBar/HelpMenu/HelpMenu.tsx new file mode 100644 index 00000000000..15f67abd0de --- /dev/null +++ b/apps/desktop/src/renderer/screens/main/components/TopBar/HelpMenu/HelpMenu.tsx @@ -0,0 +1,80 @@ +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from "@superset/ui/dropdown-menu"; +import { Kbd, KbdGroup } from "@superset/ui/kbd"; +import { FaDiscord } from "react-icons/fa"; +import { + HiOutlineBugAnt, + HiOutlineCommandLine, + HiOutlineEnvelope, + HiOutlineQuestionMarkCircle, +} from "react-icons/hi2"; +import { useOpenSettings } from "renderer/stores"; +import { formatKeysForDisplay, HOTKEYS } from "shared/hotkeys"; + +const CONTACT_EMAIL = "mailto:support@superset.dev"; +const REPORT_ISSUE_URL = "https://github.com/superset/superset/issues/new"; +const DISCORD_URL = "https://discord.gg/superset"; + +export function HelpMenu() { + const openSettings = useOpenSettings(); + const hotkeyKeys = formatKeysForDisplay(HOTKEYS.SHOW_HOTKEYS.keys); + + const handleContactUs = () => { + window.open(CONTACT_EMAIL, "_blank"); + }; + + const handleReportIssue = () => { + window.open(REPORT_ISSUE_URL, "_blank"); + }; + + const handleJoinDiscord = () => { + window.open(DISCORD_URL, "_blank"); + }; + + const handleViewHotkeys = () => { + openSettings("keyboard"); + }; + + return ( + + + + + + + + Contact Us + + + + Report Issue + + + + Join Discord + + + + + Keyboard Shortcuts + + {hotkeyKeys.map((key) => ( + {key} + ))} + + + + + ); +} diff --git a/apps/desktop/src/renderer/screens/main/components/TopBar/HelpMenu/index.ts b/apps/desktop/src/renderer/screens/main/components/TopBar/HelpMenu/index.ts new file mode 100644 index 00000000000..f9ab9bfcf04 --- /dev/null +++ b/apps/desktop/src/renderer/screens/main/components/TopBar/HelpMenu/index.ts @@ -0,0 +1 @@ +export { HelpMenu } from "./HelpMenu"; diff --git a/apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx b/apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx index 786c0a42651..26e2e8a13ff 100644 --- a/apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx +++ b/apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx @@ -1,5 +1,6 @@ import { trpc } from "renderer/lib/trpc"; import { WorkspaceHeader } from "../WorkspaceView/WorkspaceHeader"; +import { HelpMenu } from "./HelpMenu"; import { SettingsButton } from "./SettingsButton"; import { SidebarControl } from "./SidebarControl"; import { WindowControls } from "./WindowControls"; @@ -24,6 +25,7 @@ export function TopBar() {
+ {!isMac && }
From dcccf76185a87e233408b6c8380ac37fab904bbc Mon Sep 17 00:00:00 2001 From: Kiet Ho Date: Sat, 6 Dec 2025 00:08:02 -0800 Subject: [PATCH 2/5] refactor(desktop): add Help menu to Mac menu bar with shared constants MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Extract help menu URLs to shared/constants.ts (HELP_MENU) - Update HelpMenu.tsx to use shared constants - Add Help menu to Mac application menu bar with: - Contact Us (opens email) - Report Issue (opens GitHub issues) - Join Discord - Keyboard Shortcuts (opens settings) - Add IPC listener in MainScreen for menu:open-settings 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- apps/desktop/src/main/lib/menu.ts | 33 ++++++++++++++++++- .../components/TopBar/HelpMenu/HelpMenu.tsx | 11 +++---- .../src/renderer/screens/main/index.tsx | 20 +++++++++-- apps/desktop/src/shared/constants.ts | 7 ++++ 4 files changed, 61 insertions(+), 10 deletions(-) diff --git a/apps/desktop/src/main/lib/menu.ts b/apps/desktop/src/main/lib/menu.ts index 8f4f90b86d8..678940f1749 100644 --- a/apps/desktop/src/main/lib/menu.ts +++ b/apps/desktop/src/main/lib/menu.ts @@ -1,4 +1,5 @@ -import { app, type BrowserWindow, Menu } from "electron"; +import { app, type BrowserWindow, Menu, shell } from "electron"; +import { HELP_MENU } from "shared/constants"; import { checkForUpdatesInteractive } from "./auto-updater"; export function createApplicationMenu(mainWindow: BrowserWindow) { @@ -56,6 +57,36 @@ export function createApplicationMenu(mainWindow: BrowserWindow) { }, ], }, + { + label: "Help", + submenu: [ + { + label: "Contact Us", + click: () => { + shell.openExternal(HELP_MENU.CONTACT_EMAIL); + }, + }, + { + label: "Report Issue", + click: () => { + shell.openExternal(HELP_MENU.REPORT_ISSUE_URL); + }, + }, + { + label: "Join Discord", + click: () => { + shell.openExternal(HELP_MENU.DISCORD_URL); + }, + }, + { type: "separator" }, + { + label: "Keyboard Shortcuts", + click: () => { + mainWindow.webContents.send("menu:open-settings", "keyboard"); + }, + }, + ], + }, ]; // Add About menu on macOS diff --git a/apps/desktop/src/renderer/screens/main/components/TopBar/HelpMenu/HelpMenu.tsx b/apps/desktop/src/renderer/screens/main/components/TopBar/HelpMenu/HelpMenu.tsx index 15f67abd0de..a3ad097998d 100644 --- a/apps/desktop/src/renderer/screens/main/components/TopBar/HelpMenu/HelpMenu.tsx +++ b/apps/desktop/src/renderer/screens/main/components/TopBar/HelpMenu/HelpMenu.tsx @@ -14,26 +14,23 @@ import { HiOutlineQuestionMarkCircle, } from "react-icons/hi2"; import { useOpenSettings } from "renderer/stores"; +import { HELP_MENU } from "shared/constants"; import { formatKeysForDisplay, HOTKEYS } from "shared/hotkeys"; -const CONTACT_EMAIL = "mailto:support@superset.dev"; -const REPORT_ISSUE_URL = "https://github.com/superset/superset/issues/new"; -const DISCORD_URL = "https://discord.gg/superset"; - export function HelpMenu() { const openSettings = useOpenSettings(); const hotkeyKeys = formatKeysForDisplay(HOTKEYS.SHOW_HOTKEYS.keys); const handleContactUs = () => { - window.open(CONTACT_EMAIL, "_blank"); + window.open(HELP_MENU.CONTACT_EMAIL, "_blank"); }; const handleReportIssue = () => { - window.open(REPORT_ISSUE_URL, "_blank"); + window.open(HELP_MENU.REPORT_ISSUE_URL, "_blank"); }; const handleJoinDiscord = () => { - window.open(DISCORD_URL, "_blank"); + window.open(HELP_MENU.DISCORD_URL, "_blank"); }; const handleViewHotkeys = () => { diff --git a/apps/desktop/src/renderer/screens/main/index.tsx b/apps/desktop/src/renderer/screens/main/index.tsx index 6b861ff025c..d538547e7f5 100644 --- a/apps/desktop/src/renderer/screens/main/index.tsx +++ b/apps/desktop/src/renderer/screens/main/index.tsx @@ -1,11 +1,15 @@ import { Button } from "@superset/ui/button"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import { DndProvider } from "react-dnd"; import { useHotkeys } from "react-hotkeys-hook"; import { HiArrowPath } from "react-icons/hi2"; import { SetupConfigModal } from "renderer/components/SetupConfigModal"; import { trpc } from "renderer/lib/trpc"; -import { useCurrentView, useOpenSettings } from "renderer/stores/app-state"; +import { + type SettingsSection, + useCurrentView, + useOpenSettings, +} from "renderer/stores/app-state"; import { useSidebarStore } from "renderer/stores/sidebar-state"; import { getPaneDimensions } from "renderer/stores/tabs/pane-refs"; import { useWindowsStore } from "renderer/stores/tabs/store"; @@ -46,6 +50,18 @@ export function MainScreen() { // Listen for agent completion hooks from main process useAgentHookListener(); + // Listen for menu commands from main process + useEffect(() => { + const handleOpenSettings = (section?: SettingsSection) => { + openSettings(section); + }; + + window.ipcRenderer.on("menu:open-settings", handleOpenSettings); + return () => { + window.ipcRenderer.off("menu:open-settings", handleOpenSettings); + }; + }, [openSettings]); + const activeWorkspaceId = activeWorkspace?.id; const activeWindowId = activeWorkspaceId ? activeWindowIds[activeWorkspaceId] diff --git a/apps/desktop/src/shared/constants.ts b/apps/desktop/src/shared/constants.ts index eb813f2540a..c05bd45f380 100644 --- a/apps/desktop/src/shared/constants.ts +++ b/apps/desktop/src/shared/constants.ts @@ -29,6 +29,13 @@ export const CONFIG_FILE_NAME = "config.json"; // Website URL - defaults to production, can be overridden via env var for local dev export const WEBSITE_URL = process.env.WEBSITE_URL || "https://superset.sh"; +// Help menu URLs +export const HELP_MENU = { + CONTACT_EMAIL: "mailto:support@superset.dev", + REPORT_ISSUE_URL: "https://github.com/superset/superset/issues/new", + DISCORD_URL: "https://discord.gg/superset", +} as const; + // Config file template export const CONFIG_TEMPLATE = `{ "setup": [], From 1d76124939cce89efe911f7186901636c346f527 Mon Sep 17 00:00:00 2001 From: Kiet Ho Date: Sat, 6 Dec 2025 00:15:42 -0800 Subject: [PATCH 3/5] fix(desktop): widen help menu dropdown for keyboard shortcuts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../screens/main/components/TopBar/HelpMenu/HelpMenu.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/desktop/src/renderer/screens/main/components/TopBar/HelpMenu/HelpMenu.tsx b/apps/desktop/src/renderer/screens/main/components/TopBar/HelpMenu/HelpMenu.tsx index a3ad097998d..75986d54f30 100644 --- a/apps/desktop/src/renderer/screens/main/components/TopBar/HelpMenu/HelpMenu.tsx +++ b/apps/desktop/src/renderer/screens/main/components/TopBar/HelpMenu/HelpMenu.tsx @@ -22,7 +22,7 @@ export function HelpMenu() { const hotkeyKeys = formatKeysForDisplay(HOTKEYS.SHOW_HOTKEYS.keys); const handleContactUs = () => { - window.open(HELP_MENU.CONTACT_EMAIL, "_blank"); + window.open(HELP_MENU.CONTACT_URL, "_blank"); }; const handleReportIssue = () => { @@ -48,7 +48,7 @@ export function HelpMenu() { - + Contact Us From f18970f96c91d79e7e469fa24db05cc48ae9f54c Mon Sep 17 00:00:00 2001 From: Kiet Ho Date: Sat, 6 Dec 2025 00:22:54 -0800 Subject: [PATCH 4/5] refactor(desktop): use trpc subscription for menu events MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace raw IPC communication with trpc subscription pattern: - Add menu-events.ts with EventEmitter for menu commands - Add menu.ts trpc router with subscription for open-settings event - Update menu.ts to emit events via menuEmitter instead of webContents.send - Update MainScreen to use trpc.menu.subscribe instead of IPC listener - Remove unused mainWindow parameter from createApplicationMenu 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- apps/desktop/src/lib/trpc/routers/index.ts | 2 ++ apps/desktop/src/lib/trpc/routers/menu.ts | 30 +++++++++++++++++++ apps/desktop/src/main/lib/menu-events.ts | 13 ++++++++ apps/desktop/src/main/lib/menu.ts | 17 ++++------- apps/desktop/src/main/windows/main.ts | 2 +- .../screens/main/components/TopBar/index.tsx | 2 +- .../src/renderer/screens/main/index.tsx | 27 +++++++---------- apps/desktop/src/shared/constants.ts | 6 ++-- 8 files changed, 66 insertions(+), 33 deletions(-) create mode 100644 apps/desktop/src/lib/trpc/routers/menu.ts create mode 100644 apps/desktop/src/main/lib/menu-events.ts diff --git a/apps/desktop/src/lib/trpc/routers/index.ts b/apps/desktop/src/lib/trpc/routers/index.ts index 44817a87322..774354ca148 100644 --- a/apps/desktop/src/lib/trpc/routers/index.ts +++ b/apps/desktop/src/lib/trpc/routers/index.ts @@ -2,6 +2,7 @@ import type { BrowserWindow } from "electron"; import { router } from ".."; import { createConfigRouter } from "./config"; import { createExternalRouter } from "./external"; +import { createMenuRouter } from "./menu"; import { createNotificationsRouter } from "./notifications"; import { createProjectsRouter } from "./projects"; import { createSettingsRouter } from "./settings"; @@ -20,6 +21,7 @@ export const createAppRouter = (window: BrowserWindow) => { workspaces: createWorkspacesRouter(), terminal: createTerminalRouter(), notifications: createNotificationsRouter(), + menu: createMenuRouter(), external: createExternalRouter(), settings: createSettingsRouter(), config: createConfigRouter(), diff --git a/apps/desktop/src/lib/trpc/routers/menu.ts b/apps/desktop/src/lib/trpc/routers/menu.ts new file mode 100644 index 00000000000..ad66d520fc5 --- /dev/null +++ b/apps/desktop/src/lib/trpc/routers/menu.ts @@ -0,0 +1,30 @@ +import { observable } from "@trpc/server/observable"; +import { + menuEmitter, + type OpenSettingsEvent, + type SettingsSection, +} from "main/lib/menu-events"; +import { publicProcedure, router } from ".."; + +type MenuEvent = { type: "open-settings"; data: OpenSettingsEvent }; + +export const createMenuRouter = () => { + return router({ + /** + * Subscribe to menu events from the application menu bar. + */ + subscribe: publicProcedure.subscription(() => { + return observable((emit) => { + const onOpenSettings = (section?: SettingsSection) => { + emit.next({ type: "open-settings", data: { section } }); + }; + + menuEmitter.on("open-settings", onOpenSettings); + + return () => { + menuEmitter.off("open-settings", onOpenSettings); + }; + }); + }), + }); +}; diff --git a/apps/desktop/src/main/lib/menu-events.ts b/apps/desktop/src/main/lib/menu-events.ts new file mode 100644 index 00000000000..629634d97f7 --- /dev/null +++ b/apps/desktop/src/main/lib/menu-events.ts @@ -0,0 +1,13 @@ +import { EventEmitter } from "node:events"; + +export type SettingsSection = + | "project" + | "workspace" + | "appearance" + | "keyboard"; + +export interface OpenSettingsEvent { + section?: SettingsSection; +} + +export const menuEmitter = new EventEmitter(); diff --git a/apps/desktop/src/main/lib/menu.ts b/apps/desktop/src/main/lib/menu.ts index 678940f1749..56e947ec823 100644 --- a/apps/desktop/src/main/lib/menu.ts +++ b/apps/desktop/src/main/lib/menu.ts @@ -1,8 +1,9 @@ -import { app, type BrowserWindow, Menu, shell } from "electron"; +import { app, Menu, shell } from "electron"; import { HELP_MENU } from "shared/constants"; import { checkForUpdatesInteractive } from "./auto-updater"; +import { menuEmitter } from "./menu-events"; -export function createApplicationMenu(mainWindow: BrowserWindow) { +export function createApplicationMenu() { const template: Electron.MenuItemConstructorOptions[] = [ { label: "File", @@ -48,13 +49,7 @@ export function createApplicationMenu(mainWindow: BrowserWindow) { { role: "minimize" }, { role: "zoom" }, { type: "separator" }, - { - label: "Close Window", - accelerator: "CmdOrCtrl+Shift+W", - click: () => { - mainWindow.close(); - }, - }, + { role: "close", accelerator: "CmdOrCtrl+Shift+W" }, ], }, { @@ -63,7 +58,7 @@ export function createApplicationMenu(mainWindow: BrowserWindow) { { label: "Contact Us", click: () => { - shell.openExternal(HELP_MENU.CONTACT_EMAIL); + shell.openExternal(HELP_MENU.CONTACT_URL); }, }, { @@ -82,7 +77,7 @@ export function createApplicationMenu(mainWindow: BrowserWindow) { { label: "Keyboard Shortcuts", click: () => { - mainWindow.webContents.send("menu:open-settings", "keyboard"); + menuEmitter.emit("open-settings", "keyboard"); }, }, ], diff --git a/apps/desktop/src/main/windows/main.ts b/apps/desktop/src/main/windows/main.ts index 57588ab1011..df97614e35f 100644 --- a/apps/desktop/src/main/windows/main.ts +++ b/apps/desktop/src/main/windows/main.ts @@ -42,7 +42,7 @@ export async function MainWindow() { setMainWindow(window); // Create application menu - createApplicationMenu(window); + createApplicationMenu(); // Set up tRPC handler createIPCHandler({ diff --git a/apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx b/apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx index 26e2e8a13ff..fbaa727d50a 100644 --- a/apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx +++ b/apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx @@ -25,8 +25,8 @@ export function TopBar() {
- + {!isMac && }
diff --git a/apps/desktop/src/renderer/screens/main/index.tsx b/apps/desktop/src/renderer/screens/main/index.tsx index d538547e7f5..43afb5e4889 100644 --- a/apps/desktop/src/renderer/screens/main/index.tsx +++ b/apps/desktop/src/renderer/screens/main/index.tsx @@ -1,15 +1,11 @@ import { Button } from "@superset/ui/button"; -import { useEffect, useState } from "react"; +import { useState } from "react"; import { DndProvider } from "react-dnd"; import { useHotkeys } from "react-hotkeys-hook"; import { HiArrowPath } from "react-icons/hi2"; import { SetupConfigModal } from "renderer/components/SetupConfigModal"; import { trpc } from "renderer/lib/trpc"; -import { - type SettingsSection, - useCurrentView, - useOpenSettings, -} from "renderer/stores/app-state"; +import { useCurrentView, useOpenSettings } from "renderer/stores/app-state"; import { useSidebarStore } from "renderer/stores/sidebar-state"; import { getPaneDimensions } from "renderer/stores/tabs/pane-refs"; import { useWindowsStore } from "renderer/stores/tabs/store"; @@ -50,17 +46,14 @@ export function MainScreen() { // Listen for agent completion hooks from main process useAgentHookListener(); - // Listen for menu commands from main process - useEffect(() => { - const handleOpenSettings = (section?: SettingsSection) => { - openSettings(section); - }; - - window.ipcRenderer.on("menu:open-settings", handleOpenSettings); - return () => { - window.ipcRenderer.off("menu:open-settings", handleOpenSettings); - }; - }, [openSettings]); + // Listen for menu commands from main process via trpc subscription + trpc.menu.subscribe.useSubscription(undefined, { + onData: (event) => { + if (event.type === "open-settings") { + openSettings(event.data.section); + } + }, + }); const activeWorkspaceId = activeWorkspace?.id; const activeWindowId = activeWorkspaceId diff --git a/apps/desktop/src/shared/constants.ts b/apps/desktop/src/shared/constants.ts index c05bd45f380..4f27e23f2ba 100644 --- a/apps/desktop/src/shared/constants.ts +++ b/apps/desktop/src/shared/constants.ts @@ -31,9 +31,9 @@ export const WEBSITE_URL = process.env.WEBSITE_URL || "https://superset.sh"; // Help menu URLs export const HELP_MENU = { - CONTACT_EMAIL: "mailto:support@superset.dev", - REPORT_ISSUE_URL: "https://github.com/superset/superset/issues/new", - DISCORD_URL: "https://discord.gg/superset", + CONTACT_URL: "https://x.com/superset_sh", + REPORT_ISSUE_URL: "https://github.com/superset-sh/superset/issues/new", + DISCORD_URL: "https://discord.gg/cZeD9WYcV7", } as const; // Config file template From da3a0cb8db365d0c2ec74051032e9b68aece53b2 Mon Sep 17 00:00:00 2001 From: Kiet Ho Date: Sat, 6 Dec 2025 00:24:17 -0800 Subject: [PATCH 5/5] chore: remove redundant comments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- apps/desktop/src/lib/trpc/routers/menu.ts | 3 --- apps/desktop/src/main/lib/menu.ts | 1 - apps/desktop/src/main/windows/main.ts | 4 ---- apps/desktop/src/renderer/screens/main/index.tsx | 7 ------- 4 files changed, 15 deletions(-) diff --git a/apps/desktop/src/lib/trpc/routers/menu.ts b/apps/desktop/src/lib/trpc/routers/menu.ts index ad66d520fc5..c2c956e8d78 100644 --- a/apps/desktop/src/lib/trpc/routers/menu.ts +++ b/apps/desktop/src/lib/trpc/routers/menu.ts @@ -10,9 +10,6 @@ type MenuEvent = { type: "open-settings"; data: OpenSettingsEvent }; export const createMenuRouter = () => { return router({ - /** - * Subscribe to menu events from the application menu bar. - */ subscribe: publicProcedure.subscription(() => { return observable((emit) => { const onOpenSettings = (section?: SettingsSection) => { diff --git a/apps/desktop/src/main/lib/menu.ts b/apps/desktop/src/main/lib/menu.ts index 56e947ec823..3985dfe4060 100644 --- a/apps/desktop/src/main/lib/menu.ts +++ b/apps/desktop/src/main/lib/menu.ts @@ -84,7 +84,6 @@ export function createApplicationMenu() { }, ]; - // Add About menu on macOS if (process.platform === "darwin") { template.unshift({ label: app.name, diff --git a/apps/desktop/src/main/windows/main.ts b/apps/desktop/src/main/windows/main.ts index df97614e35f..5e68d9b83e6 100644 --- a/apps/desktop/src/main/windows/main.ts +++ b/apps/desktop/src/main/windows/main.ts @@ -38,13 +38,9 @@ export async function MainWindow() { }, }); - // Set main window for auto-updater dialogs setMainWindow(window); - - // Create application menu createApplicationMenu(); - // Set up tRPC handler createIPCHandler({ router: createAppRouter(window), windows: [window], diff --git a/apps/desktop/src/renderer/screens/main/index.tsx b/apps/desktop/src/renderer/screens/main/index.tsx index 43afb5e4889..6034d4a8e69 100644 --- a/apps/desktop/src/renderer/screens/main/index.tsx +++ b/apps/desktop/src/renderer/screens/main/index.tsx @@ -43,10 +43,8 @@ export function MainScreen() { const activeWindowIds = useWindowsStore((s) => s.activeWindowIds); const focusedPaneIds = useWindowsStore((s) => s.focusedPaneIds); - // Listen for agent completion hooks from main process useAgentHookListener(); - // Listen for menu commands from main process via trpc subscription trpc.menu.subscribe.useSubscription(undefined, { onData: (event) => { if (event.type === "open-settings") { @@ -62,7 +60,6 @@ export function MainScreen() { const focusedPaneId = activeWindowId ? focusedPaneIds[activeWindowId] : null; const isWorkspaceView = currentView === "workspace"; - // Register global shortcuts useHotkeys(HOTKEYS.SHOW_HOTKEYS.keys, () => openSettings("keyboard"), [ openSettings, ]); @@ -95,7 +92,6 @@ export function MainScreen() { const showStartView = !isLoading && !activeWorkspace && currentView !== "settings"; - // Determine which content view to show const renderContent = () => { if (currentView === "settings") { return ; @@ -103,7 +99,6 @@ export function MainScreen() { return ; }; - // Show loading spinner while query is in flight if (isLoading) { return ( @@ -117,8 +112,6 @@ export function MainScreen() { ); } - // Show error state with retry option - // Note: failureCount resets automatically on successful query if (isError) { const hasRepeatedFailures = failureCount >= 5;