From 0b1ae6c02fc40ff7698990d85ea6e88534a22f09 Mon Sep 17 00:00:00 2001 From: 7418 <7418@openclaw.ai> Date: Sat, 7 Feb 2026 22:20:03 +0800 Subject: [PATCH] fix: Windows Claude CLI path discovery and Extensions scroll - Fix Windows Claude CLI not found when installed as .exe or without extension in .local\bin (closes #6). Now searches all extensions (.cmd, .exe, .bat, and bare) for every candidate directory. - Fix Extensions/Skills list not scrollable when many items exist. Change content container to overflow-hidden so internal ScrollArea works correctly. Add overflow-auto to McpManager for its own scroll. Co-Authored-By: Claude Opus 4.6 --- src/app/extensions/page.tsx | 2 +- src/components/plugins/McpManager.tsx | 2 +- src/lib/platform.ts | 20 ++++++++++++++------ 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/app/extensions/page.tsx b/src/app/extensions/page.tsx index 93defc5..cdf69ae 100644 --- a/src/app/extensions/page.tsx +++ b/src/app/extensions/page.tsx @@ -40,7 +40,7 @@ function ExtensionsPageInner() { -
+
{tab === "skills" && } {tab === "mcp" && }
diff --git a/src/components/plugins/McpManager.tsx b/src/components/plugins/McpManager.tsx index 8ccf3a6..e2f5f08 100644 --- a/src/components/plugins/McpManager.tsx +++ b/src/components/plugins/McpManager.tsx @@ -136,7 +136,7 @@ export function McpManager() { const serverCount = Object.keys(servers).length; return ( -
+
diff --git a/src/lib/platform.ts b/src/lib/platform.ts index de0a5d1..414e7bf 100644 --- a/src/lib/platform.ts +++ b/src/lib/platform.ts @@ -53,13 +53,21 @@ export function getClaudeCandidatePaths(): string[] { if (isWindows) { const appData = process.env.APPDATA || path.join(home, 'AppData', 'Roaming'); const localAppData = process.env.LOCALAPPDATA || path.join(home, 'AppData', 'Local'); - return [ - path.join(appData, 'npm', 'claude.cmd'), - path.join(localAppData, 'npm', 'claude.cmd'), - path.join(home, '.npm-global', 'bin', 'claude.cmd'), - path.join(home, '.claude', 'bin', 'claude.exe'), - path.join(home, '.local', 'bin', 'claude.cmd'), + const exts = ['.cmd', '.exe', '.bat', '']; + const baseDirs = [ + path.join(appData, 'npm'), + path.join(localAppData, 'npm'), + path.join(home, '.npm-global', 'bin'), + path.join(home, '.claude', 'bin'), + path.join(home, '.local', 'bin'), ]; + const candidates: string[] = []; + for (const dir of baseDirs) { + for (const ext of exts) { + candidates.push(path.join(dir, 'claude' + ext)); + } + } + return candidates; } return [ '/usr/local/bin/claude',