From 8d6411a5fc5369fda119cecf29aafae6df1a5038 Mon Sep 17 00:00:00 2001 From: Marius Date: Fri, 20 Feb 2026 11:42:05 +0100 Subject: [PATCH] fix(vscode): improve worktree error messages when not in a git repository (#513) Clarify error messaging when users try to use worktrees without a git repository open. The setup overlay now shows 'Workspace setup failed' as the title on error, with actionable messages explaining what the user needs to do. Also widen the setup card and center error text to prevent layout issues with longer messages. --- .../src/agent-manager/AgentManagerProvider.ts | 10 +++++++--- .../src/agent-manager/SessionTerminalManager.ts | 2 +- .../kilo-vscode/src/agent-manager/WorktreeManager.ts | 5 ++++- .../webview-ui/agent-manager/AgentManagerApp.tsx | 2 +- .../webview-ui/agent-manager/agent-manager.css | 4 +++- 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/packages/kilo-vscode/src/agent-manager/AgentManagerProvider.ts b/packages/kilo-vscode/src/agent-manager/AgentManagerProvider.ts index d4bdaf6a751..c91f801fa18 100644 --- a/packages/kilo-vscode/src/agent-manager/AgentManagerProvider.ts +++ b/packages/kilo-vscode/src/agent-manager/AgentManagerProvider.ts @@ -168,7 +168,11 @@ export class AgentManagerProvider implements vscode.Disposable { const manager = this.getWorktreeManager() const state = this.getStateManager() if (!manager || !state) { - this.postToWebview({ type: "agentManager.worktreeSetup", status: "error", message: "No workspace folder open" }) + this.postToWebview({ + type: "agentManager.worktreeSetup", + status: "error", + message: "Open a folder that contains a git repository to use worktrees", + }) return null } @@ -178,11 +182,11 @@ export class AgentManagerProvider implements vscode.Disposable { try { result = await manager.createWorktree({ prompt: "kilo" }) } catch (error) { - const err = error instanceof Error ? error.message : String(error) + const msg = error instanceof Error ? error.message : String(error) this.postToWebview({ type: "agentManager.worktreeSetup", status: "error", - message: `Failed to create worktree: ${err}`, + message: msg, }) return null } diff --git a/packages/kilo-vscode/src/agent-manager/SessionTerminalManager.ts b/packages/kilo-vscode/src/agent-manager/SessionTerminalManager.ts index 015b4acdbb0..029d04b7b04 100644 --- a/packages/kilo-vscode/src/agent-manager/SessionTerminalManager.ts +++ b/packages/kilo-vscode/src/agent-manager/SessionTerminalManager.ts @@ -42,7 +42,7 @@ export class SessionTerminalManager { if (!cwd) { this.log(`showTerminal: no cwd resolved for session ${sessionId}`) - vscode.window.showWarningMessage("No workspace folder open") + vscode.window.showWarningMessage("Open a folder that contains a git repository to use worktrees") return } diff --git a/packages/kilo-vscode/src/agent-manager/WorktreeManager.ts b/packages/kilo-vscode/src/agent-manager/WorktreeManager.ts index 826da03b55f..8f3c203f268 100644 --- a/packages/kilo-vscode/src/agent-manager/WorktreeManager.ts +++ b/packages/kilo-vscode/src/agent-manager/WorktreeManager.ts @@ -46,7 +46,10 @@ export class WorktreeManager { async createWorktree(params: { prompt?: string; existingBranch?: string }): Promise { const repo = await this.git.checkIsRepo() - if (!repo) throw new Error("Workspace is not a git repository") + if (!repo) + throw new Error( + "This folder is not a git repository. Initialize a repository or open a git project to use worktrees.", + ) await this.ensureDir() await this.ensureGitExclude() diff --git a/packages/kilo-vscode/webview-ui/agent-manager/AgentManagerApp.tsx b/packages/kilo-vscode/webview-ui/agent-manager/AgentManagerApp.tsx index 5020fe9c08d..bddc5e44680 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/AgentManagerApp.tsx +++ b/packages/kilo-vscode/webview-ui/agent-manager/AgentManagerApp.tsx @@ -786,7 +786,7 @@ const AgentManagerContent: Component = () => {
-
Setting up workspace
+
{setup().error ? "Workspace setup failed" : "Setting up workspace"}
{setup().branch}
diff --git a/packages/kilo-vscode/webview-ui/agent-manager/agent-manager.css b/packages/kilo-vscode/webview-ui/agent-manager/agent-manager.css index 5398be7e049..ae519dd5889 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/agent-manager.css +++ b/packages/kilo-vscode/webview-ui/agent-manager/agent-manager.css @@ -499,7 +499,7 @@ flex-direction: column; align-items: center; gap: 12px; - max-width: 300px; + max-width: 400px; text-align: center; } @@ -523,12 +523,14 @@ .am-setup-status { display: flex; align-items: center; + justify-content: center; gap: 8px; padding: 8px 16px; border-radius: var(--radius-sm); background: var(--surface-inset-base); color: var(--text-base); font-size: var(--font-size-base); + text-align: center; } .am-setup-spinner {