From bb630ef739401d460a3f14ec1189d6b9504a8808 Mon Sep 17 00:00:00 2001 From: Simos Mikelatos Date: Sat, 20 Jun 2026 01:50:02 +0000 Subject: [PATCH] fix: hide computer use menus --- electron/desktopWindow.js | 4 ++++ electron/launcher/launcher.js | 10 ++++++++-- src/components/main-content/view/MainContent.tsx | 7 ++++--- src/components/settings/hooks/useSettingsController.ts | 3 ++- src/components/settings/view/SettingsSidebar.tsx | 10 ++++++++-- src/constants/featureFlags.ts | 3 +++ 6 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 src/constants/featureFlags.ts diff --git a/electron/desktopWindow.js b/electron/desktopWindow.js index 856899fb..a106b68e 100644 --- a/electron/desktopWindow.js +++ b/electron/desktopWindow.js @@ -3,6 +3,9 @@ import { BrowserWindow, Menu, Tray, nativeImage, nativeTheme, session } from 'el import { ViewHost } from './viewHost.js'; const TITLEBAR_HEIGHT = 44; +// TODO: Re-enable Computer Use menus after fixing the MCP server connection +// between the desktop app and the web UI. +const COMPUTER_USE_MENUS_ENABLED = false; function isAllowedPermissionOrigin(sourceUrl, controlPlaneUrl) { try { @@ -334,6 +337,7 @@ export class DesktopWindowManager { { type: 'separator' }, { label: 'Services', + visible: COMPUTER_USE_MENUS_ENABLED, submenu: [ { label: 'Computer Use', diff --git a/electron/launcher/launcher.js b/electron/launcher/launcher.js index ed5d72c4..cc0b57c2 100644 --- a/electron/launcher/launcher.js +++ b/electron/launcher/launcher.js @@ -530,6 +530,10 @@ window.__MOCK_STATE__ = { return 'idle'; } + // TODO: Re-enable Computer Use menus after fixing the MCP server connection + // between the desktop app and the web UI. + var COMPUTER_USE_MENUS_ENABLED = false; + function renderComputerPermissionRow(key, label, detail, status) { return '
' + '
' + CC.esc(label) + '
' + CC.esc(detail) + '
' + @@ -587,9 +591,11 @@ window.__MOCK_STATE__ = { var state = CC.state || {}; var sections = [ CC.buildThemeSection(state), - CC.buildComputerUseSection(state), ]; - CC.renderSheet('Desktop Settings', 'Manage the desktop app appearance and Computer Use behavior.', sections); + if (COMPUTER_USE_MENUS_ENABLED) { + sections.push(CC.buildComputerUseSection(state)); + } + CC.renderSheet('Desktop Settings', 'Manage the desktop app appearance.', sections); }; CC.render = function (state) { diff --git a/src/components/main-content/view/MainContent.tsx b/src/components/main-content/view/MainContent.tsx index 1dc53537..fd99fc92 100644 --- a/src/components/main-content/view/MainContent.tsx +++ b/src/components/main-content/view/MainContent.tsx @@ -12,6 +12,7 @@ import { useTaskMaster } from '../../../contexts/TaskMasterContext'; import { usePaletteOpsRegister } from '../../../contexts/PaletteOpsContext'; import { useTasksSettings } from '../../../contexts/TasksSettingsContext'; import { useUiPreferences } from '../../../hooks/useUiPreferences'; +import { COMPUTER_USE_MENUS_ENABLED } from '../../../constants/featureFlags'; import { authenticatedFetch } from '../../../utils/api'; import { useEditorSidebar } from '../../code-editor/hooks/useEditorSidebar'; import EditorSidebar from '../../code-editor/view/EditorSidebar'; @@ -63,7 +64,7 @@ function MainContent({ const shouldShowTasksTab = Boolean(tasksEnabled && isTaskMasterInstalled); const shouldShowBrowserTab = browserUseEnabled; - const shouldShowComputerTab = computerUseEnabled === true; + const shouldShowComputerTab = COMPUTER_USE_MENUS_ENABLED && computerUseEnabled === true; const { editingFile, @@ -168,10 +169,10 @@ function MainContent({ }, [loadComputerUseSettings]); useEffect(() => { - if (computerUseEnabled === false && activeTab === 'computer') { + if (!shouldShowComputerTab && activeTab === 'computer') { setActiveTab('chat'); } - }, [computerUseEnabled, activeTab, setActiveTab]); + }, [shouldShowComputerTab, activeTab, setActiveTab]); usePaletteOpsRegister({ openFile: (filePath: string) => { diff --git a/src/components/settings/hooks/useSettingsController.ts b/src/components/settings/hooks/useSettingsController.ts index e5325e28..8321776f 100644 --- a/src/components/settings/hooks/useSettingsController.ts +++ b/src/components/settings/hooks/useSettingsController.ts @@ -1,6 +1,7 @@ import { useCallback, useEffect, useRef, useState } from 'react'; import { useTheme } from '../../../contexts/ThemeContext'; +import { COMPUTER_USE_MENUS_ENABLED } from '../../../constants/featureFlags'; import { authenticatedFetch } from '../../../utils/api'; import { setNotificationSoundEnabled } from '../../../utils/notificationSound'; import { useProviderAuthStatus } from '../../provider-auth/hooks/useProviderAuthStatus'; @@ -58,7 +59,7 @@ const KNOWN_MAIN_TABS: SettingsMainTab[] = ['agents', 'appearance', 'git', 'api' const normalizeMainTab = (tab: string): SettingsMainTab => { // Keep backwards compatibility with older callers that still pass "tools". - if (tab === 'tools') { + if (tab === 'tools' || (tab === 'computer' && !COMPUTER_USE_MENUS_ENABLED)) { return 'agents'; } diff --git a/src/components/settings/view/SettingsSidebar.tsx b/src/components/settings/view/SettingsSidebar.tsx index 3b13ecaf..5051acb7 100644 --- a/src/components/settings/view/SettingsSidebar.tsx +++ b/src/components/settings/view/SettingsSidebar.tsx @@ -1,5 +1,7 @@ import { Bell, Bot, GitBranch, Info, Key, ListChecks, MonitorCog, MonitorPlay, Palette, Puzzle } from 'lucide-react'; import { useTranslation } from 'react-i18next'; + +import { COMPUTER_USE_MENUS_ENABLED } from '../../../constants/featureFlags'; import { cn } from '../../../lib/utils'; import { PillBar, Pill } from '../../../shared/view/ui'; import type { SettingsMainTab } from '../types/types'; @@ -28,6 +30,10 @@ const NAV_ITEMS: NavItem[] = [ { id: 'about', labelKey: 'mainTabs.about', icon: Info }, ]; +const VISIBLE_NAV_ITEMS = NAV_ITEMS.filter((item) => ( + COMPUTER_USE_MENUS_ENABLED || item.id !== 'computer' +)); + export default function SettingsSidebar({ activeTab, onChange }: SettingsSidebarProps) { const { t } = useTranslation('settings'); @@ -36,7 +42,7 @@ export default function SettingsSidebar({ activeTab, onChange }: SettingsSidebar {/* Desktop sidebar */}