perf: reduce re-renders, fix mobile keyboard handling, add chunk load recovery, and improve PATH management (#1028)
* fix: exclude file content from reverted prompt text Revert and fork now restore only the user's original prompt, not server-injected file content Uses existing isSyntheticPart helper for type-safe filtering * fix: keep scrollbar visible when hovering over thumb * fix: prevent ESC abort from triggering when terminal is focused * fix: pass directory to permission/question reply calls so approvals actually resolve * fix: default model selection not responding after Base UI migration * fix: prevent modal content from shifting and clipping footer buttons * fix: improve session switching performance and add sub-agent export with prompt collapse Defer viewport anchor saving to eliminate ~800ms UI freeze when switching sessions Add export dialog to include sub-agent tasks recursively in markdown export Add collapse chevron button for expanded user prompts in sticky header * fix: resolve sidebar scroll and TDZ crash in session sidebar * perf: reduce CPU overhead and re-renders across chat, layout, and settings * fix: position collapse button at top of message and prevent ESC abort in terminal * fix: position collapse button at top and add padding only when expanded * refactor: extract shared PATH utilities and mobile keyboard hook * refactor: import shared path-utils in electron, use module-level style constants - Electron now imports pathLooksUserConfigured/mergePathValues from shared path-utils.js instead of inline duplication - ToolPart collapsedCustomStyle moved from useMemo([]) to module const * fix: resolve remaining merge conflicts and type errors - Remove duplicate variable declarations in SessionNodeItem - Remove orphaned export callback body from conflict resolution - Fix HelpDialog description -> descriptionKey (i18n rename) * fix: resolve type-check and lint errors in session-actions.test.ts - Added missing bun:test type declarations (beforeEach, mock, mock.module) - Removed unused State import - Replaced 'as any' casts with proper OpencodeClient and ChildStoreManager types - Added eslint-disable for unused _ parameter in mock function * fix PR 1028 export and PATH edge cases * fix startup retry exhaustion state * remove opencode package lock change * fix sub-session rename cancellation --------- Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
committed by
GitHub
co-authored by
Bohdan Triapitsyn
parent
632e6cc97b
commit
4523e9c486
@@ -13,6 +13,7 @@ import {
|
||||
type McpDraft,
|
||||
type McpScope,
|
||||
} from '@/stores/useMcpConfigStore';
|
||||
import { useShallow } from 'zustand/react/shallow';
|
||||
import {
|
||||
parseImportedMcpSnippet,
|
||||
applyImportedMcpToDraft,
|
||||
@@ -607,7 +608,17 @@ export const McpPage: React.FC = () => {
|
||||
createMcp,
|
||||
updateMcp,
|
||||
deleteMcp,
|
||||
} = useMcpConfigStore();
|
||||
} = useMcpConfigStore(useShallow((s) => ({
|
||||
selectedMcpName: s.selectedMcpName,
|
||||
mcpServers: s.mcpServers,
|
||||
mcpDraft: s.mcpDraft,
|
||||
setMcpDraft: s.setMcpDraft,
|
||||
setSelectedMcp: s.setSelectedMcp,
|
||||
getMcpByName: s.getMcpByName,
|
||||
createMcp: s.createMcp,
|
||||
updateMcp: s.updateMcp,
|
||||
deleteMcp: s.deleteMcp,
|
||||
})));
|
||||
|
||||
const currentDirectory = useDirectoryStore((state) => state.currentDirectory);
|
||||
const isVSCodeAuthRuntime = React.useMemo(() => isVSCodeRuntime(), []);
|
||||
|
||||
@@ -10,6 +10,7 @@ import {
|
||||
} from '@/components/ui/dialog';
|
||||
import { RiAddLine, RiDeleteBinLine, RiMore2Line, RiPlugLine, RiRefreshLine, RiServerLine, RiGlobalLine } from '@remixicon/react';
|
||||
import { useMcpConfigStore, type McpDraft, type McpServerConfig } from '@/stores/useMcpConfigStore';
|
||||
import { useShallow } from 'zustand/react/shallow';
|
||||
import { useMcpStore } from '@/stores/useMcpStore';
|
||||
import { useDirectoryStore } from '@/stores/useDirectoryStore';
|
||||
import { isMobileDeviceViaCSS } from '@/lib/device';
|
||||
@@ -64,7 +65,14 @@ export const McpSidebar: React.FC<McpSidebarProps> = ({ onItemSelect }) => {
|
||||
const bgClass = 'bg-background';
|
||||
|
||||
const { mcpServers, selectedMcpName, setSelectedMcp, setMcpDraft, loadMcpConfigs, deleteMcp } =
|
||||
useMcpConfigStore();
|
||||
useMcpConfigStore(useShallow((s) => ({
|
||||
mcpServers: s.mcpServers,
|
||||
selectedMcpName: s.selectedMcpName,
|
||||
setSelectedMcp: s.setSelectedMcp,
|
||||
setMcpDraft: s.setMcpDraft,
|
||||
loadMcpConfigs: s.loadMcpConfigs,
|
||||
deleteMcp: s.deleteMcp,
|
||||
})));
|
||||
|
||||
const currentDirectory = useDirectoryStore((state) => state.currentDirectory);
|
||||
const mcpStatus = useMcpStore((state) => state.getStatusForDirectory(currentDirectory ?? null));
|
||||
|
||||
Reference in New Issue
Block a user