Skip to content

Commit 440ec30

Browse files
fix: add error message when no workspace folder is open for code indexing (#6227)
* fix: add error message when no workspace folder is open for code indexing - Add 'Indexing requires an open workspace folder' error message in orchestrator.ts - Replace hardcoded error string with translatable message using i18n - Add translations for the error message in all 18 supported languages - Ensures proper error handling when users attempt code indexing without a workspace * fix: add workspace folder checks for code indexing operations - Add null checks for codeIndexManager in webviewMessageHandler - Show translated error message when no workspace folder is open - Prevents crashes when users try to use indexing features without a workspace - Uses existing translation key from orchestrator * Update src/i18n/locales/ca/embeddings.json Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> --------- Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
1 parent 31d16dc commit 440ec30

File tree

20 files changed

+237
-12
lines changed

20 files changed

+237
-12
lines changed

src/core/webview/webviewMessageHandler.ts

Lines changed: 57 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2092,6 +2092,19 @@ export const webviewMessageHandler = async (
20922092
}
20932093
}
20942094
}
2095+
} else {
2096+
// No workspace open - send error status
2097+
provider.log("Cannot save code index settings: No workspace folder open")
2098+
await provider.postMessageToWebview({
2099+
type: "indexingStatusUpdate",
2100+
values: {
2101+
systemStatus: "Error",
2102+
message: t("embeddings:orchestrator.indexingRequiresWorkspace"),
2103+
processedItems: 0,
2104+
totalItems: 0,
2105+
currentItemUnit: "items",
2106+
},
2107+
})
20952108
}
20962109
} catch (error) {
20972110
provider.log(`Error saving code index settings: ${error.message || error}`)
@@ -2105,7 +2118,22 @@ export const webviewMessageHandler = async (
21052118
}
21062119

21072120
case "requestIndexingStatus": {
2108-
const status = provider.codeIndexManager!.getCurrentStatus()
2121+
const manager = provider.codeIndexManager
2122+
if (!manager) {
2123+
// No workspace open - send error status
2124+
provider.postMessageToWebview({
2125+
type: "indexingStatusUpdate",
2126+
values: {
2127+
systemStatus: "Error",
2128+
message: t("embeddings:orchestrator.indexingRequiresWorkspace"),
2129+
processedItems: 0,
2130+
totalItems: 0,
2131+
currentItemUnit: "items",
2132+
},
2133+
})
2134+
return
2135+
}
2136+
const status = manager.getCurrentStatus()
21092137
provider.postMessageToWebview({
21102138
type: "indexingStatusUpdate",
21112139
values: status,
@@ -2136,7 +2164,22 @@ export const webviewMessageHandler = async (
21362164
}
21372165
case "startIndexing": {
21382166
try {
2139-
const manager = provider.codeIndexManager!
2167+
const manager = provider.codeIndexManager
2168+
if (!manager) {
2169+
// No workspace open - send error status
2170+
provider.postMessageToWebview({
2171+
type: "indexingStatusUpdate",
2172+
values: {
2173+
systemStatus: "Error",
2174+
message: t("embeddings:orchestrator.indexingRequiresWorkspace"),
2175+
processedItems: 0,
2176+
totalItems: 0,
2177+
currentItemUnit: "items",
2178+
},
2179+
})
2180+
provider.log("Cannot start indexing: No workspace folder open")
2181+
return
2182+
}
21402183
if (manager.isFeatureEnabled && manager.isFeatureConfigured) {
21412184
if (!manager.isInitialized) {
21422185
await manager.initialize(provider.contextProxy)
@@ -2151,7 +2194,18 @@ export const webviewMessageHandler = async (
21512194
}
21522195
case "clearIndexData": {
21532196
try {
2154-
const manager = provider.codeIndexManager!
2197+
const manager = provider.codeIndexManager
2198+
if (!manager) {
2199+
provider.log("Cannot clear index data: No workspace folder open")
2200+
provider.postMessageToWebview({
2201+
type: "indexCleared",
2202+
values: {
2203+
success: false,
2204+
error: t("embeddings:orchestrator.indexingRequiresWorkspace"),
2205+
},
2206+
})
2207+
return
2208+
}
21552209
await manager.clearIndexData()
21562210
provider.postMessageToWebview({ type: "indexCleared", values: { success: true } })
21572211
} catch (error) {

src/i18n/locales/ca/embeddings.json

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/i18n/locales/de/embeddings.json

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/i18n/locales/en/embeddings.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,14 @@
5252
"vectorDimensionNotDetermined": "Could not determine vector dimension for model '{{modelId}}' with provider '{{provider}}'. Check model profiles or configuration.",
5353
"qdrantUrlMissing": "Qdrant URL missing for vector store creation",
5454
"codeIndexingNotConfigured": "Cannot create services: Code indexing is not properly configured"
55+
},
56+
"orchestrator": {
57+
"indexingFailedNoBlocks": "Indexing failed: No code blocks were successfully indexed. This usually indicates an embedder configuration issue.",
58+
"indexingFailedCritical": "Indexing failed: No code blocks were successfully indexed despite finding files to process. This indicates a critical embedder failure.",
59+
"fileWatcherStarted": "File watcher started.",
60+
"fileWatcherStopped": "File watcher stopped.",
61+
"failedDuringInitialScan": "Failed during initial scan: {{errorMessage}}",
62+
"unknownError": "Unknown error",
63+
"indexingRequiresWorkspace": "Indexing requires an open workspace folder"
5564
}
5665
}

src/i18n/locales/es/embeddings.json

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/i18n/locales/fr/embeddings.json

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/i18n/locales/hi/embeddings.json

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/i18n/locales/id/embeddings.json

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/i18n/locales/it/embeddings.json

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/i18n/locales/ja/embeddings.json

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)