diff --git a/src/core/checkpoints/__tests__/checkpoint.test.ts b/src/core/checkpoints/__tests__/checkpoint.test.ts index e073c0cb922..10ddc48146c 100644 --- a/src/core/checkpoints/__tests__/checkpoint.test.ts +++ b/src/core/checkpoints/__tests__/checkpoint.test.ts @@ -283,7 +283,7 @@ describe("Checkpoint functionality", () => { ] }) - it("should show diff for full mode", async () => { + it("should show diff for to-current mode", async () => { const mockChanges = [ { paths: { absolute: "/test/file.ts", relative: "file.ts" }, @@ -295,7 +295,7 @@ describe("Checkpoint functionality", () => { await checkpointDiff(mockTask, { ts: 4, commitHash: "commit2", - mode: "full", + mode: "to-current", }) expect(mockCheckpointService.getDiff).toHaveBeenCalledWith({ @@ -304,7 +304,7 @@ describe("Checkpoint functionality", () => { }) expect(vscode.commands.executeCommand).toHaveBeenCalledWith( "vscode.changes", - "Changes since task started", + "errors.checkpoint_diff_to_current", expect.any(Array), ) }) @@ -329,7 +329,7 @@ describe("Checkpoint functionality", () => { }) expect(vscode.commands.executeCommand).toHaveBeenCalledWith( "vscode.changes", - "Changes compare with next checkpoint", + "errors.checkpoint_diff_with_next", expect.any(Array), ) }) @@ -361,10 +361,10 @@ describe("Checkpoint functionality", () => { await checkpointDiff(mockTask, { ts: 4, commitHash: "commit2", - mode: "full", + mode: "to-current", }) - expect(vscode.window.showInformationMessage).toHaveBeenCalledWith("No changes found.") + expect(vscode.window.showInformationMessage).toHaveBeenCalledWith("errors.checkpoint_no_changes") expect(vscode.commands.executeCommand).not.toHaveBeenCalled() }) @@ -374,7 +374,7 @@ describe("Checkpoint functionality", () => { await checkpointDiff(mockTask, { ts: 4, commitHash: "commit2", - mode: "full", + mode: "to-current", }) expect(mockTask.enableCheckpoints).toBe(false) diff --git a/src/core/checkpoints/index.ts b/src/core/checkpoints/index.ts index bc842c9f187..ed084f62efd 100644 --- a/src/core/checkpoints/index.ts +++ b/src/core/checkpoints/index.ts @@ -270,10 +270,16 @@ export async function checkpointRestore( } export type CheckpointDiffOptions = { - ts: number + ts?: number previousCommitHash?: string commitHash: string - mode: "full" | "checkpoint" + /** + * from-init: Compare from the first checkpoint to the selected checkpoint. + * checkpoint: Compare the selected checkpoint to the next checkpoint. + * to-current: Compare the selected checkpoint to the current workspace. + * full: Compare from the first checkpoint to the current workspace. + */ + mode: "from-init" | "checkpoint" | "to-current" | "full" } export async function checkpointDiff(task: Task, { ts, previousCommitHash, commitHash, mode }: CheckpointDiffOptions) { @@ -285,30 +291,57 @@ export async function checkpointDiff(task: Task, { ts, previousCommitHash, commi TelemetryService.instance.captureCheckpointDiffed(task.taskId) - let prevHash = commitHash - let nextHash: string | undefined = undefined + let fromHash: string | undefined + let toHash: string | undefined + let title: string - if (mode !== "full") { - const checkpoints = task.clineMessages.filter(({ say }) => say === "checkpoint_saved").map(({ text }) => text!) - const idx = checkpoints.indexOf(commitHash) - if (idx !== -1 && idx < checkpoints.length - 1) { - nextHash = checkpoints[idx + 1] - } else { - nextHash = undefined - } + const checkpoints = task.clineMessages.filter(({ say }) => say === "checkpoint_saved").map(({ text }) => text!) + + if (["from-init", "full"].includes(mode) && checkpoints.length < 1) { + vscode.window.showInformationMessage(t("common:errors.checkpoint_no_first")) + return + } + + const idx = checkpoints.indexOf(commitHash) + switch (mode) { + case "checkpoint": + fromHash = commitHash + toHash = idx !== -1 && idx < checkpoints.length - 1 ? checkpoints[idx + 1] : undefined + title = t("common:errors.checkpoint_diff_with_next") + break + case "from-init": + fromHash = checkpoints[0] + toHash = commitHash + title = t("common:errors.checkpoint_diff_since_first") + break + case "to-current": + fromHash = commitHash + toHash = undefined + title = t("common:errors.checkpoint_diff_to_current") + break + case "full": + fromHash = checkpoints[0] + toHash = undefined + title = t("common:errors.checkpoint_diff_since_first") + break + } + + if (!fromHash) { + vscode.window.showInformationMessage(t("common:errors.checkpoint_no_previous")) + return } try { - const changes = await service.getDiff({ from: prevHash, to: nextHash }) + const changes = await service.getDiff({ from: fromHash, to: toHash }) if (!changes?.length) { - vscode.window.showInformationMessage("No changes found.") + vscode.window.showInformationMessage(t("common:errors.checkpoint_no_changes")) return } await vscode.commands.executeCommand( "vscode.changes", - mode === "full" ? "Changes since task started" : "Changes compare with next checkpoint", + title, changes.map((change) => [ vscode.Uri.file(change.paths.absolute), vscode.Uri.parse(`${DIFF_VIEW_URI_SCHEME}:${change.paths.relative}`).with({ diff --git a/src/i18n/locales/ca/common.json b/src/i18n/locales/ca/common.json index a1f528ef97d..c71cf130ac7 100644 --- a/src/i18n/locales/ca/common.json +++ b/src/i18n/locales/ca/common.json @@ -33,6 +33,12 @@ "checkpoint_timeout": "S'ha esgotat el temps en intentar restaurar el punt de control.", "checkpoint_failed": "Ha fallat la restauració del punt de control.", "git_not_installed": "Git és necessari per a la funció de punts de control. Si us plau, instal·la Git per activar els punts de control.", + "checkpoint_no_first": "No hi ha un primer punt de control per comparar.", + "checkpoint_no_previous": "No hi ha un punt de control anterior per comparar.", + "checkpoint_no_changes": "No s'han trobat canvis.", + "checkpoint_diff_with_next": "Canvis comparats amb el següent punt de control", + "checkpoint_diff_since_first": "Canvis des del primer punt de control", + "checkpoint_diff_to_current": "Canvis a l'espai de treball actual", "nested_git_repos_warning": "Els punts de control estan deshabilitats perquè s'ha detectat un repositori git niat a: {{path}}. Per utilitzar punts de control, si us plau elimina o reubica aquest repositori git niat.", "no_workspace": "Si us plau, obre primer una carpeta de projecte", "update_support_prompt": "Ha fallat l'actualització del missatge de suport", diff --git a/src/i18n/locales/de/common.json b/src/i18n/locales/de/common.json index dbd9452e601..6ec9be0f5f6 100644 --- a/src/i18n/locales/de/common.json +++ b/src/i18n/locales/de/common.json @@ -29,6 +29,12 @@ "checkpoint_timeout": "Zeitüberschreitung beim Versuch, den Checkpoint wiederherzustellen.", "checkpoint_failed": "Fehler beim Wiederherstellen des Checkpoints.", "git_not_installed": "Git ist für die Checkpoint-Funktion erforderlich. Bitte installiere Git, um Checkpoints zu aktivieren.", + "checkpoint_no_first": "Kein erster Checkpoint zum Vergleich vorhanden.", + "checkpoint_no_previous": "Kein vorheriger Checkpoint zum Vergleich vorhanden.", + "checkpoint_no_changes": "Keine Änderungen gefunden.", + "checkpoint_diff_with_next": "Änderungen im Vergleich zum nächsten Checkpoint", + "checkpoint_diff_since_first": "Änderungen seit dem ersten Checkpoint", + "checkpoint_diff_to_current": "Änderungen am aktuellen Arbeitsbereich", "nested_git_repos_warning": "Checkpoints sind deaktiviert, da ein verschachteltes Git-Repository erkannt wurde unter: {{path}}. Um Checkpoints zu verwenden, entferne oder verschiebe bitte dieses verschachtelte Git-Repository.", "no_workspace": "Bitte öffne zuerst einen Projektordner", "update_support_prompt": "Fehler beim Aktualisieren der Support-Nachricht", diff --git a/src/i18n/locales/en/common.json b/src/i18n/locales/en/common.json index 3a613cc1c21..784540e06f7 100644 --- a/src/i18n/locales/en/common.json +++ b/src/i18n/locales/en/common.json @@ -29,6 +29,12 @@ "checkpoint_timeout": "Timed out when attempting to restore checkpoint.", "checkpoint_failed": "Failed to restore checkpoint.", "git_not_installed": "Git is required for the checkpoints feature. Please install Git to enable checkpoints.", + "checkpoint_no_first": "No first checkpoint to compare.", + "checkpoint_no_previous": "No previous checkpoint to compare.", + "checkpoint_no_changes": "No changes found.", + "checkpoint_diff_with_next": "Changes compared with next checkpoint", + "checkpoint_diff_since_first": "Changes since first checkpoint", + "checkpoint_diff_to_current": "Changes to current workspace", "nested_git_repos_warning": "Checkpoints are disabled because a nested git repository was detected at: {{path}}. To use checkpoints, please remove or relocate this nested git repository.", "no_workspace": "Please open a project folder first", "update_support_prompt": "Failed to update support prompt", diff --git a/src/i18n/locales/es/common.json b/src/i18n/locales/es/common.json index 49dcfe98c5c..ade6aa9c460 100644 --- a/src/i18n/locales/es/common.json +++ b/src/i18n/locales/es/common.json @@ -29,6 +29,12 @@ "checkpoint_timeout": "Se agotó el tiempo al intentar restaurar el punto de control.", "checkpoint_failed": "Error al restaurar el punto de control.", "git_not_installed": "Git es necesario para la función de puntos de control. Por favor, instala Git para activar los puntos de control.", + "checkpoint_no_first": "No hay primer punto de control para comparar.", + "checkpoint_no_previous": "No hay punto de control anterior para comparar.", + "checkpoint_no_changes": "No se encontraron cambios.", + "checkpoint_diff_with_next": "Cambios comparados con el siguiente punto de control", + "checkpoint_diff_since_first": "Cambios desde el primer punto de control", + "checkpoint_diff_to_current": "Cambios en el espacio de trabajo actual", "nested_git_repos_warning": "Los puntos de control están deshabilitados porque se detectó un repositorio git anidado en: {{path}}. Para usar puntos de control, por favor elimina o reubica este repositorio git anidado.", "no_workspace": "Por favor, abre primero una carpeta de proyecto", "update_support_prompt": "Error al actualizar el mensaje de soporte", diff --git a/src/i18n/locales/fr/common.json b/src/i18n/locales/fr/common.json index 260bbbf13bb..dc06e0ca7a5 100644 --- a/src/i18n/locales/fr/common.json +++ b/src/i18n/locales/fr/common.json @@ -29,6 +29,12 @@ "checkpoint_timeout": "Expiration du délai lors de la tentative de rétablissement du checkpoint.", "checkpoint_failed": "Échec du rétablissement du checkpoint.", "git_not_installed": "Git est requis pour la fonctionnalité des points de contrôle. Veuillez installer Git pour activer les points de contrôle.", + "checkpoint_no_first": "Aucun premier point de contrôle à comparer.", + "checkpoint_no_previous": "Aucun point de contrôle précédent à comparer.", + "checkpoint_no_changes": "Aucun changement trouvé.", + "checkpoint_diff_with_next": "Modifications comparées au prochain point de contrôle", + "checkpoint_diff_since_first": "Modifications depuis le premier point de contrôle", + "checkpoint_diff_to_current": "Modifications de l'espace de travail actuel", "nested_git_repos_warning": "Les points de contrôle sont désactivés car un dépôt git imbriqué a été détecté à : {{path}}. Pour utiliser les points de contrôle, veuillez supprimer ou déplacer ce dépôt git imbriqué.", "no_workspace": "Veuillez d'abord ouvrir un espace de travail", "update_support_prompt": "Erreur lors de la mise à jour du prompt de support", diff --git a/src/i18n/locales/hi/common.json b/src/i18n/locales/hi/common.json index ab7d594e8f7..14da25805b1 100644 --- a/src/i18n/locales/hi/common.json +++ b/src/i18n/locales/hi/common.json @@ -28,7 +28,13 @@ "could_not_open_file_generic": "फ़ाइल नहीं खोली जा सकी!", "checkpoint_timeout": "चेकपॉइंट को पुनर्स्थापित करने का प्रयास करते समय टाइमआउट हो गया।", "checkpoint_failed": "चेकपॉइंट पुनर्स्थापित करने में विफल।", - "git_not_installed": "चेकपॉइंट सुविधा के लिए Git आवश्यक है। कृपया चेकपॉइंट সক্ষম करने के लिए Git इंस्टॉल करें।", + "git_not_installed": "चेकपॉइंट सुविधा के लिए Git आवश्यक है। कृपया चेकपॉइंट सक्षम करने के लिए Git इंस्टॉल करें।", + "checkpoint_no_first": "तुलना करने के लिए कोई पहला चेकपॉइंट नहीं है।", + "checkpoint_no_previous": "तुलना करने के लिए कोई पिछला चेकपॉइंट नहीं है।", + "checkpoint_no_changes": "कोई बदलाव नहीं मिला।", + "checkpoint_diff_with_next": "अगले चेकपॉइंट के साथ तुलना किए गए बदलाव", + "checkpoint_diff_since_first": "पहले चेकपॉइंट के बाद से बदलाव", + "checkpoint_diff_to_current": "वर्तमान कार्यक्षेत्र में बदलाव", "nested_git_repos_warning": "चेकपॉइंट अक्षम हैं क्योंकि {{path}} पर नेस्टेड git रिपॉजिटरी का पता चला है। चेकपॉइंट का उपयोग करने के लिए, कृपया इस नेस्टेड git रिपॉजिटरी को हटाएं या स्थानांतरित करें।", "no_workspace": "कृपया पहले प्रोजेक्ट फ़ोल्डर खोलें", "update_support_prompt": "सपोर्ट प्रॉम्प्ट अपडेट करने में विफल", @@ -181,8 +187,7 @@ "getGroqApiKey": "ग्रोक एपीआई कुंजी प्राप्त करें", "claudeCode": { "pathLabel": "क्लाउड कोड पाथ", - "description": "आपके क्लाउड कोड CLI का वैकल्पिक पाथ। सेट न होने पर डिफ़ॉल्ट रूप से 'claude'।", - "placeholder": "डिफ़ॉल्ट: claude" + "description": "आपके क्लाउड कोड CLI का वैकल्पिक पाथ। सेट न होने पर डिफ़ॉल्ट रूप से 'claude'।" } } }, diff --git a/src/i18n/locales/id/common.json b/src/i18n/locales/id/common.json index ddd549b6f00..5622d722159 100644 --- a/src/i18n/locales/id/common.json +++ b/src/i18n/locales/id/common.json @@ -29,6 +29,12 @@ "checkpoint_timeout": "Timeout saat mencoba memulihkan checkpoint.", "checkpoint_failed": "Gagal memulihkan checkpoint.", "git_not_installed": "Git diperlukan untuk fitur checkpoint. Silakan instal Git untuk mengaktifkan checkpoint.", + "checkpoint_no_first": "Tidak ada checkpoint pertama untuk dibandingkan.", + "checkpoint_no_previous": "Tidak ada checkpoint sebelumnya untuk dibandingkan.", + "checkpoint_no_changes": "Tidak ada perubahan yang ditemukan.", + "checkpoint_diff_with_next": "Perubahan dibandingkan dengan checkpoint berikutnya", + "checkpoint_diff_since_first": "Perubahan sejak checkpoint pertama", + "checkpoint_diff_to_current": "Perubahan ke ruang kerja saat ini", "nested_git_repos_warning": "Checkpoint dinonaktifkan karena repositori git bersarang terdeteksi di: {{path}}. Untuk menggunakan checkpoint, silakan hapus atau pindahkan repositori git bersarang ini.", "no_workspace": "Silakan buka folder proyek terlebih dahulu", "update_support_prompt": "Gagal memperbarui support prompt", diff --git a/src/i18n/locales/it/common.json b/src/i18n/locales/it/common.json index 80e8e0633b1..abb22d77d37 100644 --- a/src/i18n/locales/it/common.json +++ b/src/i18n/locales/it/common.json @@ -29,6 +29,12 @@ "checkpoint_timeout": "Timeout durante il tentativo di ripristinare il checkpoint.", "checkpoint_failed": "Impossibile ripristinare il checkpoint.", "git_not_installed": "Git è richiesto per la funzione di checkpoint. Per favore, installa Git per abilitare i checkpoint.", + "checkpoint_no_first": "Nessun primo checkpoint da confrontare.", + "checkpoint_no_previous": "Nessun checkpoint precedente da confrontare.", + "checkpoint_no_changes": "Nessuna modifica trovata.", + "checkpoint_diff_with_next": "Modifiche confrontate con il checkpoint successivo", + "checkpoint_diff_since_first": "Modifiche dal primo checkpoint", + "checkpoint_diff_to_current": "Modifiche all'area di lavoro corrente", "nested_git_repos_warning": "I checkpoint sono disabilitati perché è stato rilevato un repository git annidato in: {{path}}. Per utilizzare i checkpoint, rimuovi o sposta questo repository git annidato.", "no_workspace": "Per favore, apri prima una cartella di progetto", "update_support_prompt": "Errore durante l'aggiornamento del messaggio di supporto", diff --git a/src/i18n/locales/ja/common.json b/src/i18n/locales/ja/common.json index accba790a2a..cdd8de9a9a9 100644 --- a/src/i18n/locales/ja/common.json +++ b/src/i18n/locales/ja/common.json @@ -29,6 +29,12 @@ "checkpoint_timeout": "チェックポイントの復元を試みる際にタイムアウトしました。", "checkpoint_failed": "チェックポイントの復元に失敗しました。", "git_not_installed": "チェックポイント機能にはGitが必要です。チェックポイントを有効にするにはGitをインストールしてください。", + "checkpoint_no_first": "比較する最初のチェックポイントがありません。", + "checkpoint_no_previous": "比較する前のチェックポイントがありません。", + "checkpoint_no_changes": "変更は見つかりませんでした。", + "checkpoint_diff_with_next": "次のチェックポイントと比較した変更点", + "checkpoint_diff_since_first": "最初のチェックポイントからの変更点", + "checkpoint_diff_to_current": "現在のワークスペースへの変更点", "nested_git_repos_warning": "{{path}} でネストされたgitリポジトリが検出されたため、チェックポイントが無効になっています。チェックポイントを使用するには、このネストされたgitリポジトリを削除または移動してください。", "no_workspace": "まずプロジェクトフォルダを開いてください", "update_support_prompt": "サポートメッセージの更新に失敗しました", diff --git a/src/i18n/locales/ko/common.json b/src/i18n/locales/ko/common.json index acb7bd47d7c..0cbfc9d99ad 100644 --- a/src/i18n/locales/ko/common.json +++ b/src/i18n/locales/ko/common.json @@ -29,6 +29,12 @@ "checkpoint_timeout": "체크포인트 복원을 시도하는 중 시간 초과되었습니다.", "checkpoint_failed": "체크포인트 복원에 실패했습니다.", "git_not_installed": "체크포인트 기능을 사용하려면 Git이 필요합니다. 체크포인트를 활성화하려면 Git을 설치하세요.", + "checkpoint_no_first": "비교할 첫 번째 체크포인트가 없습니다.", + "checkpoint_no_previous": "비교할 이전 체크포인트가 없습니다.", + "checkpoint_no_changes": "변경된 내용이 없습니다.", + "checkpoint_diff_with_next": "다음 체크포인트와 비교한 변경 사항", + "checkpoint_diff_since_first": "첫 번째 체크포인트 이후의 변경 사항", + "checkpoint_diff_to_current": "현재 작업 공간으로의 변경 사항", "nested_git_repos_warning": "{{path}}에서 중첩된 git 저장소가 감지되어 체크포인트가 비활성화되었습니다. 체크포인트를 사용하려면 이 중첩된 git 저장소를 제거하거나 이동해주세요.", "no_workspace": "먼저 프로젝트 폴더를 열어주세요", "update_support_prompt": "지원 프롬프트 업데이트에 실패했습니다", diff --git a/src/i18n/locales/nl/common.json b/src/i18n/locales/nl/common.json index d43690c4352..c989219e7b4 100644 --- a/src/i18n/locales/nl/common.json +++ b/src/i18n/locales/nl/common.json @@ -29,6 +29,12 @@ "checkpoint_timeout": "Time-out bij het herstellen van checkpoint.", "checkpoint_failed": "Herstellen van checkpoint mislukt.", "git_not_installed": "Git is vereist voor de checkpoint-functie. Installeer Git om checkpoints in te schakelen.", + "checkpoint_no_first": "Geen eerste checkpoint om mee te vergelijken.", + "checkpoint_no_previous": "Geen vorig checkpoint om mee te vergelijken.", + "checkpoint_no_changes": "Geen wijzigingen gevonden.", + "checkpoint_diff_with_next": "Wijzigingen vergeleken met volgend checkpoint", + "checkpoint_diff_since_first": "Wijzigingen sinds eerste checkpoint", + "checkpoint_diff_to_current": "Wijzigingen in huidige werkruimte", "nested_git_repos_warning": "Checkpoints zijn uitgeschakeld omdat een geneste git-repository is gedetecteerd op: {{path}}. Om checkpoints te gebruiken, verwijder of verplaats deze geneste git-repository.", "no_workspace": "Open eerst een projectmap", "update_support_prompt": "Bijwerken van ondersteuningsprompt mislukt", diff --git a/src/i18n/locales/pl/common.json b/src/i18n/locales/pl/common.json index 56c076f785a..3a1c08cf60b 100644 --- a/src/i18n/locales/pl/common.json +++ b/src/i18n/locales/pl/common.json @@ -29,6 +29,12 @@ "checkpoint_timeout": "Upłynął limit czasu podczas próby przywrócenia punktu kontrolnego.", "checkpoint_failed": "Nie udało się przywrócić punktu kontrolnego.", "git_not_installed": "Funkcja punktów kontrolnych wymaga oprogramowania Git. Zainstaluj Git, aby włączyć punkty kontrolne.", + "checkpoint_no_first": "Brak pierwszego punktu kontrolnego do porównania.", + "checkpoint_no_previous": "Brak poprzedniego punktu kontrolnego do porównania.", + "checkpoint_no_changes": "Nie znaleziono zmian.", + "checkpoint_diff_with_next": "Zmiany w porównaniu z następnym punktem kontrolnym", + "checkpoint_diff_since_first": "Zmiany od pierwszego punktu kontrolnego", + "checkpoint_diff_to_current": "Zmiany w bieżącym obszarze roboczym", "nested_git_repos_warning": "Punkty kontrolne są wyłączone, ponieważ wykryto zagnieżdżone repozytorium git w: {{path}}. Aby używać punktów kontrolnych, usuń lub przenieś to zagnieżdżone repozytorium git.", "no_workspace": "Najpierw otwórz folder projektu", "update_support_prompt": "Nie udało się zaktualizować komunikatu wsparcia", diff --git a/src/i18n/locales/pt-BR/common.json b/src/i18n/locales/pt-BR/common.json index c2cd63255f0..d8782623b84 100644 --- a/src/i18n/locales/pt-BR/common.json +++ b/src/i18n/locales/pt-BR/common.json @@ -33,6 +33,12 @@ "checkpoint_timeout": "Tempo esgotado ao tentar restaurar o ponto de verificação.", "checkpoint_failed": "Falha ao restaurar o ponto de verificação.", "git_not_installed": "O Git é necessário para o recurso de checkpoints. Por favor, instale o Git para habilitar os checkpoints.", + "checkpoint_no_first": "Nenhum primeiro ponto de verificação para comparar.", + "checkpoint_no_previous": "Nenhum ponto de verificação anterior para comparar.", + "checkpoint_no_changes": "Nenhuma alteração encontrada.", + "checkpoint_diff_with_next": "Alterações comparadas com o próximo ponto de verificação", + "checkpoint_diff_since_first": "Alterações desde o primeiro ponto de verificação", + "checkpoint_diff_to_current": "Alterações no espaço de trabalho atual", "nested_git_repos_warning": "Os checkpoints estão desabilitados porque um repositório git aninhado foi detectado em: {{path}}. Para usar checkpoints, por favor remova ou realoque este repositório git aninhado.", "no_workspace": "Por favor, abra primeiro uma pasta de projeto", "update_support_prompt": "Falha ao atualizar o prompt de suporte", diff --git a/src/i18n/locales/ru/common.json b/src/i18n/locales/ru/common.json index 9595f1f2768..d8004676385 100644 --- a/src/i18n/locales/ru/common.json +++ b/src/i18n/locales/ru/common.json @@ -29,6 +29,12 @@ "checkpoint_timeout": "Превышено время ожидания при попытке восстановления контрольной точки.", "checkpoint_failed": "Не удалось восстановить контрольную точку.", "git_not_installed": "Для функции контрольных точек требуется Git. Пожалуйста, установите Git, чтобы включить контрольные точки.", + "checkpoint_no_first": "Нет первой контрольной точки для сравнения.", + "checkpoint_no_previous": "Нет предыдущей контрольной точки для сравнения.", + "checkpoint_no_changes": "Изменений не найдено.", + "checkpoint_diff_with_next": "Изменения по сравнению со следующей контрольной точкой", + "checkpoint_diff_since_first": "Изменения с первой контрольной точки", + "checkpoint_diff_to_current": "Изменения в текущем рабочем пространстве", "nested_git_repos_warning": "Контрольные точки отключены, поскольку обнаружен вложенный git-репозиторий в: {{path}}. Чтобы использовать контрольные точки, пожалуйста, удалите или переместите этот вложенный git-репозиторий.", "no_workspace": "Пожалуйста, сначала откройте папку проекта", "update_support_prompt": "Не удалось обновить промпт поддержки", diff --git a/src/i18n/locales/tr/common.json b/src/i18n/locales/tr/common.json index aa11041110d..f163a5df834 100644 --- a/src/i18n/locales/tr/common.json +++ b/src/i18n/locales/tr/common.json @@ -29,6 +29,12 @@ "checkpoint_timeout": "Kontrol noktasını geri yüklemeye çalışırken zaman aşımına uğradı.", "checkpoint_failed": "Kontrol noktası geri yüklenemedi.", "git_not_installed": "Kontrol noktaları özelliği için Git gereklidir. Kontrol noktalarını etkinleştirmek için lütfen Git'i yükleyin.", + "checkpoint_no_first": "Karşılaştırılacak ilk kontrol noktası yok.", + "checkpoint_no_previous": "Karşılaştırılacak önceki kontrol noktası yok.", + "checkpoint_no_changes": "Değişiklik bulunamadı.", + "checkpoint_diff_with_next": "Sonraki kontrol noktasıyla karşılaştırılan değişiklikler", + "checkpoint_diff_since_first": "İlk kontrol noktasından bu yana yapılan değişiklikler", + "checkpoint_diff_to_current": "Mevcut çalışma alanındaki değişiklikler", "nested_git_repos_warning": "{{path}} konumunda iç içe git deposu tespit edildiği için kontrol noktaları devre dışı bırakıldı. Kontrol noktalarını kullanmak için lütfen bu iç içe git deposunu kaldırın veya taşıyın.", "no_workspace": "Lütfen önce bir proje klasörü açın", "update_support_prompt": "Destek istemi güncellenemedi", diff --git a/src/i18n/locales/vi/common.json b/src/i18n/locales/vi/common.json index b4b92b373e2..47ed3c03977 100644 --- a/src/i18n/locales/vi/common.json +++ b/src/i18n/locales/vi/common.json @@ -29,6 +29,12 @@ "checkpoint_timeout": "Đã hết thời gian khi cố gắng khôi phục điểm kiểm tra.", "checkpoint_failed": "Không thể khôi phục điểm kiểm tra.", "git_not_installed": "Yêu cầu Git cho tính năng điểm kiểm tra. Vui lòng cài đặt Git để bật điểm kiểm tra.", + "checkpoint_no_first": "Không có điểm kiểm tra đầu tiên để so sánh.", + "checkpoint_no_previous": "Không có điểm kiểm tra trước đó để so sánh.", + "checkpoint_no_changes": "Không tìm thấy thay đổi.", + "checkpoint_diff_with_next": "Các thay đổi được so sánh với điểm kiểm tra tiếp theo", + "checkpoint_diff_since_first": "Các thay đổi kể từ điểm kiểm tra đầu tiên", + "checkpoint_diff_to_current": "Các thay đổi đối với không gian làm việc hiện tại", "nested_git_repos_warning": "Điểm kiểm tra bị vô hiệu hóa vì phát hiện kho git lồng nhau tại: {{path}}. Để sử dụng điểm kiểm tra, vui lòng xóa hoặc di chuyển kho git lồng nhau này.", "no_workspace": "Vui lòng mở thư mục dự án trước", "update_support_prompt": "Không thể cập nhật lời nhắc hỗ trợ", diff --git a/src/i18n/locales/zh-CN/common.json b/src/i18n/locales/zh-CN/common.json index 8c427444847..800a1eb5cee 100644 --- a/src/i18n/locales/zh-CN/common.json +++ b/src/i18n/locales/zh-CN/common.json @@ -33,7 +33,13 @@ "could_not_open_file_generic": "无法打开文件!", "checkpoint_timeout": "尝试恢复检查点时超时。", "checkpoint_failed": "恢复检查点失败。", - "git_not_installed": "存档点功能需要 Git。请安装 Git 以启用存档点。", + "git_not_installed": "检查点功能需要 Git。请安装 Git 以启用检查点。", + "checkpoint_no_first": "没有第一个存档点可供比较。", + "checkpoint_no_previous": "没有上一个存档点可供比较。", + "checkpoint_no_changes": "未发现任何更改。", + "checkpoint_diff_with_next": "与下一个存档点比较的更改", + "checkpoint_diff_since_first": "自第一个存档点以来的更改", + "checkpoint_diff_to_current": "对当前工作区的更改", "nested_git_repos_warning": "存档点已禁用,因为在 {{path}} 检测到嵌套的 git 仓库。要使用存档点,请移除或重新定位此嵌套的 git 仓库。", "no_workspace": "请先打开项目文件夹", "update_support_prompt": "更新支持消息失败", diff --git a/src/i18n/locales/zh-TW/common.json b/src/i18n/locales/zh-TW/common.json index 5a31d601b4c..a72163495a2 100644 --- a/src/i18n/locales/zh-TW/common.json +++ b/src/i18n/locales/zh-TW/common.json @@ -29,6 +29,12 @@ "checkpoint_timeout": "嘗試恢復檢查點時超時。", "checkpoint_failed": "恢復檢查點失敗。", "git_not_installed": "存檔點功能需要 Git。請安裝 Git 以啟用存檔點。", + "checkpoint_no_first": "沒有第一個存檔點可供比較。", + "checkpoint_no_previous": "沒有上一個存檔點可供比較。", + "checkpoint_no_changes": "未發現任何變更。", + "checkpoint_diff_with_next": "與下一個存檔點比較的變更", + "checkpoint_diff_since_first": "自第一個存檔點以來的變更", + "checkpoint_diff_to_current": "對目前工作區的變更", "nested_git_repos_warning": "存檔點已停用,因為在 {{path}} 偵測到巢狀的 git 儲存庫。要使用存檔點,請移除或重新配置此巢狀的 git 儲存庫。", "no_workspace": "請先開啟專案資料夾", "update_support_prompt": "更新支援訊息失敗", diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts index d43a2fce043..d55e95aa50b 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -306,10 +306,10 @@ export interface WebviewMessage { } export const checkoutDiffPayloadSchema = z.object({ - ts: z.number(), + ts: z.number().optional(), previousCommitHash: z.string().optional(), commitHash: z.string(), - mode: z.enum(["full", "checkpoint"]), + mode: z.enum(["full", "checkpoint", "from-init", "to-current"]), }) export type CheckpointDiffPayload = z.infer diff --git a/webview-ui/src/components/chat/ChatRow.tsx b/webview-ui/src/components/chat/ChatRow.tsx index b0b87e7a2dd..ed5257528fe 100644 --- a/webview-ui/src/components/chat/ChatRow.tsx +++ b/webview-ui/src/components/chat/ChatRow.tsx @@ -75,6 +75,7 @@ interface ChatRowProps { onFollowUpUnmount?: () => void isFollowUpAnswered?: boolean editable?: boolean + hasCheckpoint?: boolean } // eslint-disable-next-line @typescript-eslint/no-empty-object-type diff --git a/webview-ui/src/components/chat/ChatView.tsx b/webview-ui/src/components/chat/ChatView.tsx index d358c68f1cf..4e45c495b4d 100644 --- a/webview-ui/src/components/chat/ChatView.tsx +++ b/webview-ui/src/components/chat/ChatView.tsx @@ -1525,6 +1525,7 @@ const ChatViewComponent: React.ForwardRefRenderFunction ) } + const hasCheckpoint = modifiedMessages.some((message) => message.say === "checkpoint_saved") // regular message return ( @@ -1559,6 +1560,7 @@ const ChatViewComponent: React.ForwardRefRenderFunction ) }, diff --git a/webview-ui/src/components/chat/checkpoints/CheckpointMenu.tsx b/webview-ui/src/components/chat/checkpoints/CheckpointMenu.tsx index c6948e5ce32..22802cd4553 100644 --- a/webview-ui/src/components/chat/checkpoints/CheckpointMenu.tsx +++ b/webview-ui/src/components/chat/checkpoints/CheckpointMenu.tsx @@ -14,25 +14,43 @@ type CheckpointMenuBaseProps = { checkpoint: Checkpoint } type CheckpointMenuControlledProps = { - open: boolean onOpenChange: (open: boolean) => void } type CheckpointMenuUncontrolledProps = { - open?: undefined onOpenChange?: undefined } type CheckpointMenuProps = CheckpointMenuBaseProps & (CheckpointMenuControlledProps | CheckpointMenuUncontrolledProps) -export const CheckpointMenu = ({ ts, commitHash, checkpoint, open, onOpenChange }: CheckpointMenuProps) => { +export const CheckpointMenu = ({ ts, commitHash, checkpoint, onOpenChange }: CheckpointMenuProps) => { const { t } = useTranslation() - const [internalOpen, setInternalOpen] = useState(false) - const [isConfirming, setIsConfirming] = useState(false) + const [internalRestoreOpen, setInternalRestoreOpen] = useState(false) + const [restoreConfirming, setRestoreConfirming] = useState(false) + const [internalMoreOpen, setInternalMoreOpen] = useState(false) const portalContainer = useRooPortal("roo-portal") const previousCommitHash = checkpoint?.from - const isOpen = open ?? internalOpen - const setOpen = onOpenChange ?? setInternalOpen + const restoreOpen = internalRestoreOpen + const moreOpen = internalMoreOpen + const setRestoreOpen = useCallback( + (open: boolean) => { + setInternalRestoreOpen(open) + if (onOpenChange) { + onOpenChange(open) + } + }, + [onOpenChange], + ) + + const setMoreOpen = useCallback( + (open: boolean) => { + setInternalMoreOpen(open) + if (onOpenChange) { + onOpenChange(open) + } + }, + [onOpenChange], + ) const onCheckpointDiff = useCallback(() => { vscode.postMessage({ @@ -41,24 +59,38 @@ export const CheckpointMenu = ({ ts, commitHash, checkpoint, open, onOpenChange }) }, [ts, previousCommitHash, commitHash]) + const onDiffFromInit = useCallback(() => { + vscode.postMessage({ + type: "checkpointDiff", + payload: { ts, commitHash, mode: "from-init" }, + }) + }, [ts, commitHash]) + + const onDiffWithCurrent = useCallback(() => { + vscode.postMessage({ + type: "checkpointDiff", + payload: { ts, commitHash, mode: "to-current" }, + }) + }, [ts, commitHash]) + const onPreview = useCallback(() => { vscode.postMessage({ type: "checkpointRestore", payload: { ts, commitHash, mode: "preview" } }) - setOpen(false) - }, [ts, commitHash, setOpen]) + setRestoreOpen(false) + }, [ts, commitHash, setRestoreOpen]) const onRestore = useCallback(() => { vscode.postMessage({ type: "checkpointRestore", payload: { ts, commitHash, mode: "restore" } }) - setOpen(false) - }, [ts, commitHash, setOpen]) + setRestoreOpen(false) + }, [ts, commitHash, setRestoreOpen]) const handleOpenChange = useCallback( (open: boolean) => { - setOpen(open) + setRestoreOpen(open) if (!open) { - setIsConfirming(false) + setRestoreConfirming(false) } }, - [setOpen], + [setRestoreOpen], ) return ( @@ -68,7 +100,13 @@ export const CheckpointMenu = ({ ts, commitHash, checkpoint, open, onOpenChange - + { + handleOpenChange(open) + setRestoreConfirming(false) + }} + data-testid="restore-popover"> @@ -106,7 +144,7 @@ export const CheckpointMenu = ({ ts, commitHash, checkpoint, open, onOpenChange
{t("chat:checkpoint.menu.confirm")}
- )} - {isConfirming ? ( + {restoreConfirming ? (
{t("chat:checkpoint.menu.cannotUndo")}
@@ -127,6 +165,37 @@ export const CheckpointMenu = ({ ts, commitHash, checkpoint, open, onOpenChange
+ setMoreOpen(open)} data-testid="more-popover"> + + + + + + +
+ + +
+
+
) } diff --git a/webview-ui/src/components/chat/checkpoints/CheckpointSaved.tsx b/webview-ui/src/components/chat/checkpoints/CheckpointSaved.tsx index 710c2b3287c..1bc51026662 100644 --- a/webview-ui/src/components/chat/checkpoints/CheckpointSaved.tsx +++ b/webview-ui/src/components/chat/checkpoints/CheckpointSaved.tsx @@ -85,9 +85,9 @@ export const CheckpointSaved = ({ checkpoint, currentHash, ...props }: Checkpoin data-testid="checkpoint-menu-container" className={cn("h-4 -mt-2", menuVisible ? "block" : "hidden group-hover:block")}> diff --git a/webview-ui/src/components/chat/checkpoints/__tests__/CheckpointSaved.spec.tsx b/webview-ui/src/components/chat/checkpoints/__tests__/CheckpointSaved.spec.tsx index 3e1cd2a4652..043e7eb7299 100644 --- a/webview-ui/src/components/chat/checkpoints/__tests__/CheckpointSaved.spec.tsx +++ b/webview-ui/src/components/chat/checkpoints/__tests__/CheckpointSaved.spec.tsx @@ -1,14 +1,20 @@ // npx vitest run src/components/chat/checkpoints/__tests__/CheckpointSaved.spec.tsx +// Capture onOpenChange from Popover to control open/close in tests +let lastOnOpenChange: ((open: boolean) => void) | undefined + vi.mock("@/components/ui", () => { // Minimal UI primitives to ensure deterministic behavior in tests return { Button: ({ children, ...rest }: any) => , StandardTooltip: ({ children }: any) => <>{children}, - Popover: ({ children, onOpenChange, open }: any) => { - lastOnOpenChange = onOpenChange + Popover: (props: any) => { + const { children, onOpenChange, open, ...rest } = props + if (rest["data-testid"] === "restore-popover") { + lastOnOpenChange = onOpenChange + } return ( -
+
{children}
) @@ -23,9 +29,6 @@ import React from "react" import userEvent from "@testing-library/user-event" import { CheckpointSaved } from "../CheckpointSaved" -// Capture onOpenChange from Popover to control open/close in tests -let lastOnOpenChange: ((open: boolean) => void) | undefined - const waitForOpenHandler = async () => { await waitFor(() => { // ensure Popover mock captured the onOpenChange handler before using it @@ -101,7 +104,7 @@ describe("CheckpointSaved popover visibility", () => { it("closes popover after preview and after confirm restore", async () => { const { getByTestId } = render() - const popoverRoot = () => getByTestId("popover-root") + const popoverRoot = () => getByTestId("restore-popover") const menuContainer = () => getByTestId("checkpoint-menu-container") // Open diff --git a/webview-ui/src/i18n/locales/ca/chat.json b/webview-ui/src/i18n/locales/ca/chat.json index 4d392ee3bf6..c7ed868953f 100644 --- a/webview-ui/src/i18n/locales/ca/chat.json +++ b/webview-ui/src/i18n/locales/ca/chat.json @@ -148,6 +148,9 @@ "initializingWarning": "Encara s'està inicialitzant el punt de control... Si això triga massa, pots desactivar els punts de control a la configuració i reiniciar la teva tasca.", "menu": { "viewDiff": "Veure diferències", + "more": "Més opcions", + "viewDiffFromInit": "Veure tots els canvis", + "viewDiffWithCurrent": "Veure els canvis des d'aquest punt de control", "restore": "Restaurar punt de control", "restoreFiles": "Restaurar arxius", "restoreFilesDescription": "Restaura els arxius del teu projecte a una instantània presa en aquest punt.", diff --git a/webview-ui/src/i18n/locales/de/chat.json b/webview-ui/src/i18n/locales/de/chat.json index 65934ab5a29..0caf7fa61be 100644 --- a/webview-ui/src/i18n/locales/de/chat.json +++ b/webview-ui/src/i18n/locales/de/chat.json @@ -148,6 +148,9 @@ "initializingWarning": "Checkpoint wird noch initialisiert... Falls dies zu lange dauert, kannst du Checkpoints in den Einstellungen deaktivieren und deine Aufgabe neu starten.", "menu": { "viewDiff": "Unterschiede anzeigen", + "more": "Weitere Optionen", + "viewDiffFromInit": "Alle Änderungen anzeigen", + "viewDiffWithCurrent": "Änderungen seit diesem Checkpoint anzeigen", "restore": "Checkpoint wiederherstellen", "restoreFiles": "Dateien wiederherstellen", "restoreFilesDescription": "Stellt die Dateien deines Projekts auf einen Snapshot zurück, der an diesem Punkt erstellt wurde.", diff --git a/webview-ui/src/i18n/locales/en/chat.json b/webview-ui/src/i18n/locales/en/chat.json index 9ab37b11497..273919fe708 100644 --- a/webview-ui/src/i18n/locales/en/chat.json +++ b/webview-ui/src/i18n/locales/en/chat.json @@ -154,6 +154,8 @@ "initializingWarning": "Still initializing checkpoint... If this takes too long, you can disable checkpoints in settings and restart your task.", "menu": { "viewDiff": "View Diff", + "viewDiffFromInit": "View All Changes", + "viewDiffWithCurrent": "View Changes Since This Checkpoint", "restore": "Restore Checkpoint", "restoreFiles": "Restore Files", "restoreFilesDescription": "Restores your project's files back to a snapshot taken at this point.", @@ -161,7 +163,8 @@ "confirm": "Confirm", "cancel": "Cancel", "cannotUndo": "This action cannot be undone.", - "restoreFilesAndTaskDescription": "Restores your project's files back to a snapshot taken at this point and deletes all messages after this point." + "restoreFilesAndTaskDescription": "Restores your project's files back to a snapshot taken at this point and deletes all messages after this point.", + "more": "More options" }, "current": "Current" }, diff --git a/webview-ui/src/i18n/locales/es/chat.json b/webview-ui/src/i18n/locales/es/chat.json index 30693285db2..1743c5390a9 100644 --- a/webview-ui/src/i18n/locales/es/chat.json +++ b/webview-ui/src/i18n/locales/es/chat.json @@ -148,6 +148,9 @@ "initializingWarning": "Todavía inicializando el punto de control... Si esto tarda demasiado, puedes desactivar los puntos de control en la configuración y reiniciar tu tarea.", "menu": { "viewDiff": "Ver diferencias", + "more": "Más opciones", + "viewDiffFromInit": "Ver todos los cambios", + "viewDiffWithCurrent": "Ver cambios desde este punto de control", "restore": "Restaurar punto de control", "restoreFiles": "Restaurar archivos", "restoreFilesDescription": "Restaura los archivos de tu proyecto a una instantánea tomada en este punto.", diff --git a/webview-ui/src/i18n/locales/fr/chat.json b/webview-ui/src/i18n/locales/fr/chat.json index d5dae24a791..dbd7f18362d 100644 --- a/webview-ui/src/i18n/locales/fr/chat.json +++ b/webview-ui/src/i18n/locales/fr/chat.json @@ -148,6 +148,9 @@ "initializingWarning": "Initialisation du point de contrôle en cours... Si cela prend trop de temps, tu peux désactiver les points de contrôle dans les paramètres et redémarrer ta tâche.", "menu": { "viewDiff": "Voir les différences", + "more": "Plus d'options", + "viewDiffFromInit": "Voir toutes les modifications", + "viewDiffWithCurrent": "Voir les modifications depuis ce point de contrôle", "restore": "Restaurer le point de contrôle", "restoreFiles": "Restaurer les fichiers", "restoreFilesDescription": "Restaure les fichiers de votre projet à un instantané pris à ce moment.", diff --git a/webview-ui/src/i18n/locales/hi/chat.json b/webview-ui/src/i18n/locales/hi/chat.json index 0ec9cd7c7e9..fc989fc449b 100644 --- a/webview-ui/src/i18n/locales/hi/chat.json +++ b/webview-ui/src/i18n/locales/hi/chat.json @@ -148,6 +148,9 @@ "initializingWarning": "चेकपॉइंट अभी भी आरंभ हो रहा है... अगर यह बहुत समय ले रहा है, तो आप सेटिंग्स में चेकपॉइंट को अक्षम कर सकते हैं और अपने कार्य को पुनः आरंभ कर सकते हैं।", "menu": { "viewDiff": "अंतर देखें", + "more": "अधिक विकल्प", + "viewDiffFromInit": "सभी परिवर्तन देखें", + "viewDiffWithCurrent": "इस चेकपॉइंट के बाद से परिवर्तन देखें", "restore": "चेकपॉइंट पुनर्स्थापित करें", "restoreFiles": "फ़ाइलें पुनर्स्थापित करें", "restoreFilesDescription": "आपके प्रोजेक्ट की फ़ाइलों को इस बिंदु पर लिए गए स्नैपशॉट पर पुनर्स्थापित करता है।", diff --git a/webview-ui/src/i18n/locales/id/chat.json b/webview-ui/src/i18n/locales/id/chat.json index a2c5377691e..a2d714db448 100644 --- a/webview-ui/src/i18n/locales/id/chat.json +++ b/webview-ui/src/i18n/locales/id/chat.json @@ -157,6 +157,9 @@ "initializingWarning": "Masih menginisialisasi checkpoint... Jika ini terlalu lama, kamu bisa menonaktifkan checkpoint di pengaturan dan restart tugas.", "menu": { "viewDiff": "Lihat Diff", + "more": "Opsi lainnya", + "viewDiffFromInit": "Lihat Semua Perubahan", + "viewDiffWithCurrent": "Lihat Perubahan Sejak Checkpoint Ini", "restore": "Pulihkan Checkpoint", "restoreFiles": "Pulihkan File", "restoreFilesDescription": "Mengembalikan file proyek kamu ke snapshot yang diambil pada titik ini.", diff --git a/webview-ui/src/i18n/locales/it/chat.json b/webview-ui/src/i18n/locales/it/chat.json index a176be1f2fb..bcf1d9d19d9 100644 --- a/webview-ui/src/i18n/locales/it/chat.json +++ b/webview-ui/src/i18n/locales/it/chat.json @@ -151,6 +151,9 @@ "initializingWarning": "Inizializzazione del checkpoint in corso... Se questa operazione richiede troppo tempo, puoi disattivare i checkpoint nelle impostazioni e riavviare l'attività.", "menu": { "viewDiff": "Visualizza differenze", + "more": "Altre opzioni", + "viewDiffFromInit": "Visualizza tutte le modifiche", + "viewDiffWithCurrent": "Visualizza le modifiche da questo checkpoint", "restore": "Ripristina checkpoint", "restoreFiles": "Ripristina file", "restoreFilesDescription": "Ripristina i file del tuo progetto a uno snapshot catturato in questo punto.", diff --git a/webview-ui/src/i18n/locales/ja/chat.json b/webview-ui/src/i18n/locales/ja/chat.json index 0e940b17eca..74b825186cc 100644 --- a/webview-ui/src/i18n/locales/ja/chat.json +++ b/webview-ui/src/i18n/locales/ja/chat.json @@ -148,6 +148,9 @@ "initializingWarning": "チェックポイントの初期化中... 時間がかかりすぎる場合は、設定でチェックポイントを無効にしてタスクを再開できます。", "menu": { "viewDiff": "差分を表示", + "more": "その他のオプション", + "viewDiffFromInit": "すべての変更を表示", + "viewDiffWithCurrent": "このチェックポイント以降の変更を表示", "restore": "チェックポイントを復元", "restoreFiles": "ファイルを復元", "restoreFilesDescription": "この時点で撮影されたスナップショットにプロジェクトのファイルを復元します。", diff --git a/webview-ui/src/i18n/locales/ko/chat.json b/webview-ui/src/i18n/locales/ko/chat.json index 6fa7c5692ac..dbe27c08030 100644 --- a/webview-ui/src/i18n/locales/ko/chat.json +++ b/webview-ui/src/i18n/locales/ko/chat.json @@ -148,6 +148,9 @@ "initializingWarning": "체크포인트 초기화 중... 시간이 너무 오래 걸리면 설정에서 체크포인트를 비활성화하고 작업을 다시 시작할 수 있습니다.", "menu": { "viewDiff": "차이점 보기", + "more": "더 많은 옵션", + "viewDiffFromInit": "모든 변경 사항 보기", + "viewDiffWithCurrent": "이 체크포인트 이후 변경 사항 보기", "restore": "체크포인트 복원", "restoreFiles": "파일 복원", "restoreFilesDescription": "프로젝트 파일을 이 시점에 찍힌 스냅샷으로 복원합니다.", diff --git a/webview-ui/src/i18n/locales/nl/chat.json b/webview-ui/src/i18n/locales/nl/chat.json index 2be312228d2..53ae965fb02 100644 --- a/webview-ui/src/i18n/locales/nl/chat.json +++ b/webview-ui/src/i18n/locales/nl/chat.json @@ -143,6 +143,9 @@ "initializingWarning": "Checkpoint wordt nog steeds geïnitialiseerd... Als dit te lang duurt, kun je checkpoints uitschakelen in de instellingen en je taak opnieuw starten.", "menu": { "viewDiff": "Bekijk verschil", + "more": "Meer opties", + "viewDiffFromInit": "Bekijk alle wijzigingen", + "viewDiffWithCurrent": "Bekijk wijzigingen sinds dit checkpoint", "restore": "Herstel checkpoint", "restoreFiles": "Bestanden herstellen", "restoreFilesDescription": "Herstelt de bestanden van je project naar een momentopname die op dit punt is gemaakt.", diff --git a/webview-ui/src/i18n/locales/pl/chat.json b/webview-ui/src/i18n/locales/pl/chat.json index e60ec330db2..7a9e5bd4e45 100644 --- a/webview-ui/src/i18n/locales/pl/chat.json +++ b/webview-ui/src/i18n/locales/pl/chat.json @@ -148,6 +148,9 @@ "initializingWarning": "Trwa inicjalizacja punktu kontrolnego... Jeśli to trwa zbyt długo, możesz wyłączyć punkty kontrolne w ustawieniach i uruchomić zadanie ponownie.", "menu": { "viewDiff": "Zobacz różnice", + "more": "Więcej opcji", + "viewDiffFromInit": "Zobacz wszystkie zmiany", + "viewDiffWithCurrent": "Zobacz zmiany od tego punktu kontrolnego", "restore": "Przywróć punkt kontrolny", "restoreFiles": "Przywróć pliki", "restoreFilesDescription": "Przywraca pliki Twojego projektu do zrzutu wykonanego w tym punkcie.", diff --git a/webview-ui/src/i18n/locales/pt-BR/chat.json b/webview-ui/src/i18n/locales/pt-BR/chat.json index 3408f3a1aa9..46cd64ca670 100644 --- a/webview-ui/src/i18n/locales/pt-BR/chat.json +++ b/webview-ui/src/i18n/locales/pt-BR/chat.json @@ -148,6 +148,9 @@ "initializingWarning": "Ainda inicializando ponto de verificação... Se isso demorar muito, você pode desativar os pontos de verificação nas configurações e reiniciar sua tarefa.", "menu": { "viewDiff": "Ver diferenças", + "more": "Mais opções", + "viewDiffFromInit": "Ver todas as alterações", + "viewDiffWithCurrent": "Ver alterações desde este ponto de verificação", "restore": "Restaurar ponto de verificação", "restoreFiles": "Restaurar arquivos", "restoreFilesDescription": "Restaura os arquivos do seu projeto para um snapshot feito neste ponto.", diff --git a/webview-ui/src/i18n/locales/ru/chat.json b/webview-ui/src/i18n/locales/ru/chat.json index 5018f817aff..f87781edf30 100644 --- a/webview-ui/src/i18n/locales/ru/chat.json +++ b/webview-ui/src/i18n/locales/ru/chat.json @@ -143,6 +143,9 @@ "initializingWarning": "Точка сохранения еще инициализируется... Если это занимает слишком много времени, вы можете отключить точки сохранения в настройках и перезапустить задачу.", "menu": { "viewDiff": "Просмотреть различия", + "more": "Больше опций", + "viewDiffFromInit": "Просмотреть все изменения", + "viewDiffWithCurrent": "Просмотреть изменения с этой точки сохранения", "restore": "Восстановить точку сохранения", "restoreFiles": "Восстановить файлы", "restoreFilesDescription": "Восстанавливает файлы вашего проекта до состояния на момент этой точки.", diff --git a/webview-ui/src/i18n/locales/tr/chat.json b/webview-ui/src/i18n/locales/tr/chat.json index 2290a85f6df..11e889ce228 100644 --- a/webview-ui/src/i18n/locales/tr/chat.json +++ b/webview-ui/src/i18n/locales/tr/chat.json @@ -148,6 +148,9 @@ "initializingWarning": "Kontrol noktası hala başlatılıyor... Bu çok uzun sürerse, ayarlar bölümünden kontrol noktalarını devre dışı bırakabilir ve görevinizi yeniden başlatabilirsiniz.", "menu": { "viewDiff": "Farkları Görüntüle", + "more": "Daha fazla seçenek", + "viewDiffFromInit": "Tüm Değişiklikleri Görüntüle", + "viewDiffWithCurrent": "Bu Kontrol Noktasından Bu Yana Değişiklikleri Görüntüle", "restore": "Kontrol Noktasını Geri Yükle", "restoreFiles": "Dosyaları Geri Yükle", "restoreFilesDescription": "Projenizin dosyalarını bu noktada alınan bir anlık görüntüye geri yükler.", diff --git a/webview-ui/src/i18n/locales/vi/chat.json b/webview-ui/src/i18n/locales/vi/chat.json index d9362ea39dd..e6c5a9901e2 100644 --- a/webview-ui/src/i18n/locales/vi/chat.json +++ b/webview-ui/src/i18n/locales/vi/chat.json @@ -148,6 +148,9 @@ "initializingWarning": "Đang khởi tạo điểm kiểm tra... Nếu quá trình này mất quá nhiều thời gian, bạn có thể vô hiệu hóa điểm kiểm tra trong cài đặt và khởi động lại tác vụ của bạn.", "menu": { "viewDiff": "Xem khác biệt", + "more": "Thêm tùy chọn", + "viewDiffFromInit": "Xem tất cả các thay đổi", + "viewDiffWithCurrent": "Xem các thay đổi kể từ điểm kiểm tra này", "restore": "Khôi phục điểm kiểm tra", "restoreFiles": "Khôi phục tệp", "restoreFilesDescription": "Khôi phục các tệp dự án của bạn về bản chụp được thực hiện tại thời điểm này.", diff --git a/webview-ui/src/i18n/locales/zh-CN/chat.json b/webview-ui/src/i18n/locales/zh-CN/chat.json index 850f79e6303..eb563e8ea22 100644 --- a/webview-ui/src/i18n/locales/zh-CN/chat.json +++ b/webview-ui/src/i18n/locales/zh-CN/chat.json @@ -148,6 +148,9 @@ "initializingWarning": "正在初始化检查点...如果耗时过长,你可以在设置中禁用检查点并重新启动任务。", "menu": { "viewDiff": "查看差异", + "more": "更多选项", + "viewDiffFromInit": "查看所有更改", + "viewDiffWithCurrent": "查看自此检查点以来的更改", "restore": "恢复检查点", "restoreFiles": "恢复文件", "restoreFilesDescription": "将项目文件恢复到此检查点状态", diff --git a/webview-ui/src/i18n/locales/zh-TW/chat.json b/webview-ui/src/i18n/locales/zh-TW/chat.json index 715452977af..6220035bc49 100644 --- a/webview-ui/src/i18n/locales/zh-TW/chat.json +++ b/webview-ui/src/i18n/locales/zh-TW/chat.json @@ -154,6 +154,9 @@ "initializingWarning": "正在初始化檢查點... 如果耗時過長,您可以在設定中停用檢查點並重新啟動工作。", "menu": { "viewDiff": "檢視差異", + "more": "更多選項", + "viewDiffFromInit": "檢視所有變更", + "viewDiffWithCurrent": "檢視自此檢查點以來的變更", "restore": "還原檢查點", "restoreFiles": "還原檔案", "restoreFilesDescription": "將您的專案檔案還原到此時的快照。",