mirror of
https://github.com/Kilo-Org/kilocode.git
synced 2026-09-19 01:51:21 +08:00
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.
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -46,7 +46,10 @@ export class WorktreeManager {
|
||||
|
||||
async createWorktree(params: { prompt?: string; existingBranch?: string }): Promise<CreateWorktreeResult> {
|
||||
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()
|
||||
|
||||
@@ -786,7 +786,7 @@ const AgentManagerContent: Component = () => {
|
||||
<div class="am-setup-overlay">
|
||||
<div class="am-setup-card">
|
||||
<Icon name="branch" size="large" />
|
||||
<div class="am-setup-title">Setting up workspace</div>
|
||||
<div class="am-setup-title">{setup().error ? "Workspace setup failed" : "Setting up workspace"}</div>
|
||||
<Show when={setup().branch}>
|
||||
<div class="am-setup-branch">{setup().branch}</div>
|
||||
</Show>
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user