diff --git a/CHANGELOG.md b/CHANGELOG.md
index f03d79e5..d930ec01 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,7 +11,7 @@ All notable changes to this project will be documented in this file.
- **Chat context attachments:** diff comments, terminal selections, browser annotations, linked issues/PRs and the rest now appear in the conversation as compact context cards instead of walls of raw text.
- **Session tabs (opt-in):** the web/desktop header can show open sessions as browser-style tabs (Settings → General → Navigation). A tab switches the whole workspace; closing one never touches the session itself.
- Sessions: switching is much faster in large workspaces — the sidebar no longer rebuilds on switch and recently viewed sessions restore their rendered messages; end-to-end switch time roughly halved with thousands of loaded sessions (thanks to @c-w-xiaohei).
-- Permission cards answer to the keyboard: Alt+Enter allows once, Alt+Shift+Enter allows always, Alt+Backspace denies — the keys are printed on the buttons. The auto-accept toggle got Cmd/Ctrl+K, A.
+- Permission: cards answer to the keyboard Alt+Enter allows once, Alt+Shift+Enter allows always, Alt+Backspace denies — the keys are printed on the buttons. The auto-accept toggle got Cmd/Ctrl+K, A.
- Sessions: Cmd/Ctrl+Alt+Left/Right steps back and forward through the sessions you opened in this window, browser-history style; with session tabs enabled it moves between neighbouring tabs instead.
- Git: Cmd/Ctrl+Enter in the commit message box commits. Diff review moves between changed files with Alt+Down/Up, expanding a collapsed file on arrival.
- Chat: Cmd/Ctrl+Shift+T now cycles through every thinking level offered by the selected model instead of skipping levels after reaching the end (thanks to @nimobeeren).
diff --git a/packages/ui/src/components/layout/Header.tsx b/packages/ui/src/components/layout/Header.tsx
index 154ba5a5..2d48185d 100644
--- a/packages/ui/src/components/layout/Header.tsx
+++ b/packages/ui/src/components/layout/Header.tsx
@@ -434,7 +434,6 @@ export const Header: React.FC = () => {
const { t } = useI18n();
const isSidebarOpen = useUIStore((state) => state.isSidebarOpen);
const openContextOverview = useUIStore((state) => state.openContextOverview);
- const openContextPlan = useUIStore((state) => state.openContextPlan);
const closeContextPanel = useUIStore((state) => state.closeContextPanel);
const shortcutOverrides = useUIStore((state) => state.shortcutOverrides);
const sessionTabsEnabled = useUIStore((state) => state.sessionTabsEnabled);
@@ -1263,21 +1262,6 @@ export const Header: React.FC = () => {
const isContextPanelActive = activeContextMode === 'context';
- const handleOpenContextPlan = React.useCallback(() => {
- const directory = normalize(openDirectory || '');
- if (!directory) {
- return;
- }
-
- const panelState = useUIStore.getState().contextPanelByDirectory[directory];
- if (getActiveContextMode(panelState) === 'plan') {
- closeContextPanel(directory);
- return;
- }
-
- openContextPlan(directory);
- }, [closeContextPanel, openContextPlan, openDirectory]);
-
const desktopHeaderIconButtonClass = DESKTOP_HEADER_ICON_BUTTON_CLASS;
// Left padding the header needs to clear the OS window controls (macOS
@@ -1448,16 +1432,6 @@ export const Header: React.FC = () => {
return formatShortcutForDisplay(getEffectiveShortcutCombo(actionId, shortcutOverrides));
}, [shortcutOverrides]);
- // Desktop keeps instances only: quota and MCP now live in the work-status
- // panel, which reports them per session rather than per window. The mobile
- // menu below is untouched — it has no panel to defer to.
- const servicesTabs = React.useMemo(() => {
- const base: Array<{ value: 'instance' | 'usage' | 'mcp'; label: string; icon: React.ReactNode }> = [];
- if (isDesktopApp) {
- base.push({ value: 'instance', label: t('layout.services.instance'), icon: });
- }
- return base;
- }, [isDesktopApp, t]);
useKeybinds({
diff --git a/packages/ui/src/contexts/ThemeSystemContext.tsx b/packages/ui/src/contexts/ThemeSystemContext.tsx
index cc3a3604..681e2caf 100644
--- a/packages/ui/src/contexts/ThemeSystemContext.tsx
+++ b/packages/ui/src/contexts/ThemeSystemContext.tsx
@@ -7,7 +7,6 @@ import React, {
} from 'react';
import { flushSync } from 'react-dom';
import type { Theme, ThemeMode } from '@/types/theme';
-import type { DesktopSettings } from '@/lib/desktop';
import { isDesktopLocalOriginActive, isDesktopShell as detectDesktopShell, isVSCodeRuntime } from '@/lib/desktop';
import { setDesktopWindowTheme } from '@/lib/desktopNative';
import { CSSVariableGenerator } from '@/lib/theme/cssGenerator';
diff --git a/packages/ui/src/stores/useOpenInAppsStore.ts b/packages/ui/src/stores/useOpenInAppsStore.ts
index 149791d9..39e17074 100644
--- a/packages/ui/src/stores/useOpenInAppsStore.ts
+++ b/packages/ui/src/stores/useOpenInAppsStore.ts
@@ -1,6 +1,6 @@
import { create } from 'zustand';
-import { fetchDesktopInstalledApps, isDesktopLocalOriginActive, isDesktopShell, type DesktopSettings, type InstalledDesktopAppInfo } from '@/lib/desktop';
+import { fetchDesktopInstalledApps, isDesktopLocalOriginActive, isDesktopShell, type InstalledDesktopAppInfo } from '@/lib/desktop';
import { OPEN_IN_APPS, DEFAULT_OPEN_IN_APP_ID, OPEN_IN_ALWAYS_AVAILABLE_APP_IDS, getOpenInAppById, getPlatformOpenInApp, type OpenInApp } from '@/lib/openInApps';
import { type SettingsSyncedDetail, updateDesktopSettings } from '@/lib/persistence';
diff --git a/packages/ui/src/stores/useUIStore.ts b/packages/ui/src/stores/useUIStore.ts
index 5eceb243..8ec57362 100644
--- a/packages/ui/src/stores/useUIStore.ts
+++ b/packages/ui/src/stores/useUIStore.ts
@@ -819,7 +819,6 @@ interface UIStore {
openContextFile: (directory: string, filePath: string) => void;
openContextFileAtLine: (directory: string, filePath: string, line: number, column?: number) => void;
openContextOverview: (directory: string) => void;
- openContextPlan: (directory: string) => void;
openContextPreview: (directory: string, url: string) => void;
openContextBrowser: (directory: string, url?: string, options?: { reveal?: boolean }) => void;
openNewContextBrowserTab: (directory: string) => void;
@@ -1321,15 +1320,6 @@ export const useUIStore = create()(
get().openContextPanelTab(normalizedDirectory, { mode: 'context' });
},
- openContextPlan: (directory) => {
- const normalizedDirectory = normalizeDirectoryPath((directory || '').trim());
- if (!normalizedDirectory) {
- return;
- }
-
- get().openContextPanelTab(normalizedDirectory, { mode: 'plan' });
- },
-
openContextPreview: (directory, url) => {
const normalizedDirectory = normalizeDirectoryPath((directory || '').trim());
const normalizedUrl = (url || '').trim();