mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-14 23:21:19 +00:00
feat: add Resume Indexing button for failed indexing operations
- Add resumeIndexing method to CodeIndexManager and CodeIndexOrchestrator - Add resumeIndexing message handler in webviewMessageHandler.ts - Update CodeIndexPopover.tsx to show "Resume Indexing" button when status is "Error" - Add "resumeIndexingButton" translation to all 18 locale files - Improve UX by allowing users to continue from where indexing left off instead of restarting Fixes #5803
This commit is contained in:
parent
6cf376f832
commit
b43daf0650
23 changed files with 81 additions and 2 deletions
|
|
@ -2107,6 +2107,21 @@ export const webviewMessageHandler = async (
|
|||
}
|
||||
break
|
||||
}
|
||||
case "resumeIndexing": {
|
||||
try {
|
||||
const manager = provider.codeIndexManager!
|
||||
if (manager.isFeatureEnabled && manager.isFeatureConfigured) {
|
||||
if (!manager.isInitialized) {
|
||||
await manager.initialize(provider.contextProxy)
|
||||
}
|
||||
|
||||
manager.resumeIndexing()
|
||||
}
|
||||
} catch (error) {
|
||||
provider.log(`Error resuming indexing: ${error instanceof Error ? error.message : String(error)}`)
|
||||
}
|
||||
break
|
||||
}
|
||||
case "clearIndexData": {
|
||||
try {
|
||||
const manager = provider.codeIndexManager!
|
||||
|
|
|
|||
|
|
@ -167,6 +167,17 @@ export class CodeIndexManager {
|
|||
await this._orchestrator!.startIndexing()
|
||||
}
|
||||
|
||||
/**
|
||||
* Resumes the indexing process from where it left off after an error.
|
||||
*/
|
||||
public async resumeIndexing(): Promise<void> {
|
||||
if (!this.isFeatureEnabled) {
|
||||
return
|
||||
}
|
||||
this.assertInitialized()
|
||||
await this._orchestrator!.resumeIndexing()
|
||||
}
|
||||
|
||||
/**
|
||||
* Stops the file watcher and potentially cleans up resources.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -226,6 +226,32 @@ export class CodeIndexOrchestrator {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Resumes the indexing process from where it left off after an error.
|
||||
* This is similar to startIndexing but designed to continue from a failed state.
|
||||
*/
|
||||
public async resumeIndexing(): Promise<void> {
|
||||
if (!this.configManager.isFeatureConfigured) {
|
||||
this.stateManager.setSystemState("Standby", "Missing configuration. Save your settings to start indexing.")
|
||||
console.warn("[CodeIndexOrchestrator] Resume rejected: Missing configuration.")
|
||||
return
|
||||
}
|
||||
|
||||
if (
|
||||
this._isProcessing ||
|
||||
(this.stateManager.state !== "Error" && this.stateManager.state !== "Standby")
|
||||
) {
|
||||
console.warn(
|
||||
`[CodeIndexOrchestrator] Resume rejected: Already processing or not in error/standby state ${this.stateManager.state}.`,
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
// For now, resumeIndexing will behave the same as startIndexing
|
||||
// In the future, this could be enhanced to track failed files and only re-process those
|
||||
await this.startIndexing()
|
||||
}
|
||||
|
||||
/**
|
||||
* Stops the file watcher and cleans up resources.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -168,6 +168,7 @@ export interface WebviewMessage {
|
|||
| "condenseTaskContextRequest"
|
||||
| "requestIndexingStatus"
|
||||
| "startIndexing"
|
||||
| "resumeIndexing"
|
||||
| "clearIndexData"
|
||||
| "indexingStatusUpdate"
|
||||
| "indexCleared"
|
||||
|
|
|
|||
|
|
@ -1083,8 +1083,16 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
|
|||
<div className="flex items-center justify-between gap-2 pt-6">
|
||||
<div className="flex gap-2">
|
||||
{currentSettings.codebaseIndexEnabled &&
|
||||
(indexingStatus.systemStatus === "Error" ||
|
||||
indexingStatus.systemStatus === "Standby") && (
|
||||
indexingStatus.systemStatus === "Error" && (
|
||||
<VSCodeButton
|
||||
onClick={() => vscode.postMessage({ type: "resumeIndexing" })}
|
||||
disabled={saveStatus === "saving" || hasUnsavedChanges}>
|
||||
{t("settings:codeIndex.resumeIndexingButton")}
|
||||
</VSCodeButton>
|
||||
)}
|
||||
|
||||
{currentSettings.codebaseIndexEnabled &&
|
||||
indexingStatus.systemStatus === "Standby" && (
|
||||
<VSCodeButton
|
||||
onClick={() => vscode.postMessage({ type: "startIndexing" })}
|
||||
disabled={saveStatus === "saving" || hasUnsavedChanges}>
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@
|
|||
"qdrantUrlLabel": "URL de Qdrant",
|
||||
"qdrantKeyLabel": "Clau de Qdrant:",
|
||||
"startIndexingButton": "Iniciar",
|
||||
"resumeIndexingButton": "Resume",
|
||||
"clearIndexDataButton": "Esborrar índex",
|
||||
"unsavedSettingsMessage": "Si us plau, deseu la configuració abans d'iniciar el procés d'indexació.",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@
|
|||
"qdrantApiKeyPlaceholder": "Gib deinen Qdrant API-Schlüssel ein (optional)",
|
||||
"setupConfigLabel": "Einrichtung",
|
||||
"startIndexingButton": "Start",
|
||||
"resumeIndexingButton": "Fortsetzen",
|
||||
"clearIndexDataButton": "Index löschen",
|
||||
"unsavedSettingsMessage": "Bitte speichere deine Einstellungen, bevor du den Indexierungsprozess startest.",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
|
|
@ -81,6 +81,7 @@
|
|||
"searchMaxResultsDescription": "Maximum number of search results to return when querying the codebase index. Higher values provide more context but may include less relevant results.",
|
||||
"resetToDefault": "Reset to default",
|
||||
"startIndexingButton": "Start Indexing",
|
||||
"resumeIndexingButton": "Resume Indexing",
|
||||
"clearIndexDataButton": "Clear Index Data",
|
||||
"unsavedSettingsMessage": "Please save your settings before starting the indexing process.",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@
|
|||
"qdrantApiKeyPlaceholder": "Introduce tu clave API de Qdrant (opcional)",
|
||||
"setupConfigLabel": "Configuración",
|
||||
"startIndexingButton": "Iniciar",
|
||||
"resumeIndexingButton": "Reanudar",
|
||||
"clearIndexDataButton": "Borrar índice",
|
||||
"unsavedSettingsMessage": "Por favor guarda tus ajustes antes de iniciar el proceso de indexación.",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@
|
|||
"qdrantApiKeyPlaceholder": "Entrez votre clé API Qdrant (optionnel)",
|
||||
"setupConfigLabel": "Configuration",
|
||||
"startIndexingButton": "Démarrer",
|
||||
"resumeIndexingButton": "Reprendre",
|
||||
"clearIndexDataButton": "Effacer l'index",
|
||||
"unsavedSettingsMessage": "Merci d'enregistrer tes paramètres avant de démarrer le processus d'indexation.",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@
|
|||
"qdrantUrlLabel": "Qdrant URL",
|
||||
"qdrantKeyLabel": "Qdrant कुंजी:",
|
||||
"startIndexingButton": "शुरू करें",
|
||||
"resumeIndexingButton": "Resume",
|
||||
"clearIndexDataButton": "इंडेक्स साफ़ करें",
|
||||
"unsavedSettingsMessage": "इंडेक्सिंग प्रक्रिया शुरू करने से पहले कृपया अपनी सेटिंग्स सहेजें।",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@
|
|||
"qdrantUrlLabel": "Qdrant URL",
|
||||
"qdrantKeyLabel": "Qdrant Key:",
|
||||
"startIndexingButton": "Mulai",
|
||||
"resumeIndexingButton": "Resume",
|
||||
"clearIndexDataButton": "Hapus Indeks",
|
||||
"unsavedSettingsMessage": "Silakan simpan pengaturan kamu sebelum memulai proses pengindeksan.",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@
|
|||
"qdrantUrlLabel": "URL Qdrant",
|
||||
"qdrantKeyLabel": "Chiave Qdrant:",
|
||||
"startIndexingButton": "Avvia",
|
||||
"resumeIndexingButton": "Resume",
|
||||
"clearIndexDataButton": "Cancella indice",
|
||||
"unsavedSettingsMessage": "Per favore salva le tue impostazioni prima di avviare il processo di indicizzazione.",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@
|
|||
"qdrantUrlLabel": "Qdrant URL",
|
||||
"qdrantKeyLabel": "Qdrantキー:",
|
||||
"startIndexingButton": "開始",
|
||||
"resumeIndexingButton": "再開",
|
||||
"clearIndexDataButton": "インデックスクリア",
|
||||
"unsavedSettingsMessage": "インデックス作成プロセスを開始する前に設定を保存してください。",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@
|
|||
"qdrantUrlLabel": "Qdrant URL",
|
||||
"qdrantKeyLabel": "Qdrant 키:",
|
||||
"startIndexingButton": "시작",
|
||||
"resumeIndexingButton": "Resume",
|
||||
"clearIndexDataButton": "인덱스 지우기",
|
||||
"unsavedSettingsMessage": "인덱싱 프로세스를 시작하기 전에 설정을 저장해 주세요.",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@
|
|||
"qdrantUrlLabel": "Qdrant URL",
|
||||
"qdrantKeyLabel": "Qdrant-sleutel:",
|
||||
"startIndexingButton": "Start",
|
||||
"resumeIndexingButton": "Resume",
|
||||
"clearIndexDataButton": "Index wissen",
|
||||
"unsavedSettingsMessage": "Sla je instellingen op voordat je het indexeringsproces start.",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@
|
|||
"qdrantUrlLabel": "URL Qdrant",
|
||||
"qdrantKeyLabel": "Klucz Qdrant:",
|
||||
"startIndexingButton": "Rozpocznij",
|
||||
"resumeIndexingButton": "Resume",
|
||||
"clearIndexDataButton": "Wyczyść indeks",
|
||||
"unsavedSettingsMessage": "Zapisz swoje ustawienia przed rozpoczęciem procesu indeksowania.",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@
|
|||
"qdrantUrlLabel": "URL Qdrant",
|
||||
"qdrantKeyLabel": "Chave Qdrant:",
|
||||
"startIndexingButton": "Iniciar",
|
||||
"resumeIndexingButton": "Resume",
|
||||
"clearIndexDataButton": "Limpar Índice",
|
||||
"unsavedSettingsMessage": "Por favor, salve suas configurações antes de iniciar o processo de indexação.",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@
|
|||
"qdrantUrlLabel": "URL Qdrant",
|
||||
"qdrantKeyLabel": "Ключ Qdrant:",
|
||||
"startIndexingButton": "Начать",
|
||||
"resumeIndexingButton": "Resume",
|
||||
"clearIndexDataButton": "Очистить индекс",
|
||||
"unsavedSettingsMessage": "Пожалуйста, сохрани настройки перед запуском процесса индексации.",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@
|
|||
"qdrantUrlLabel": "Qdrant URL",
|
||||
"qdrantKeyLabel": "Qdrant Anahtarı:",
|
||||
"startIndexingButton": "Başlat",
|
||||
"resumeIndexingButton": "Resume",
|
||||
"clearIndexDataButton": "İndeks Temizle",
|
||||
"unsavedSettingsMessage": "İndeksleme işlemini başlatmadan önce lütfen ayarlarını kaydet.",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@
|
|||
"qdrantUrlLabel": "URL Qdrant",
|
||||
"qdrantKeyLabel": "Khóa Qdrant:",
|
||||
"startIndexingButton": "Bắt đầu",
|
||||
"resumeIndexingButton": "Resume",
|
||||
"clearIndexDataButton": "Xóa chỉ mục",
|
||||
"unsavedSettingsMessage": "Vui lòng lưu cài đặt của bạn trước khi bắt đầu quá trình lập chỉ mục.",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@
|
|||
"qdrantApiKeyPlaceholder": "输入你的 Qdrant API 密钥(可选)",
|
||||
"setupConfigLabel": "设置",
|
||||
"startIndexingButton": "开始",
|
||||
"resumeIndexingButton": "恢复",
|
||||
"clearIndexDataButton": "清除索引",
|
||||
"unsavedSettingsMessage": "请先保存设置再开始索引过程。",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@
|
|||
"qdrantUrlLabel": "Qdrant URL",
|
||||
"qdrantKeyLabel": "Qdrant 金鑰:",
|
||||
"startIndexingButton": "開始",
|
||||
"resumeIndexingButton": "Resume",
|
||||
"clearIndexDataButton": "清除索引",
|
||||
"unsavedSettingsMessage": "請先儲存設定再開始索引程序。",
|
||||
"clearDataDialog": {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue