From 485b551cf353d9a23e375693e10491dac98937c7 Mon Sep 17 00:00:00 2001 From: Daniel <57051444+daniel-lxs@users.noreply.github.com> Date: Fri, 24 Oct 2025 09:03:03 -0500 Subject: [PATCH] Improve checkpoint menu translations for PR #7841 (#8796) Co-authored-by: Bruno Bergher Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: NaccOll --- .../checkpoints/__tests__/checkpoint.test.ts | 14 +-- src/core/checkpoints/index.ts | 63 ++++++++--- src/i18n/locales/ca/common.json | 6 + src/i18n/locales/de/common.json | 6 + src/i18n/locales/en/common.json | 6 + src/i18n/locales/es/common.json | 6 + src/i18n/locales/fr/common.json | 6 + src/i18n/locales/hi/common.json | 11 +- src/i18n/locales/id/common.json | 6 + src/i18n/locales/it/common.json | 6 + src/i18n/locales/ja/common.json | 6 + src/i18n/locales/ko/common.json | 6 + src/i18n/locales/nl/common.json | 6 + src/i18n/locales/pl/common.json | 6 + src/i18n/locales/pt-BR/common.json | 6 + src/i18n/locales/ru/common.json | 6 + src/i18n/locales/tr/common.json | 6 + src/i18n/locales/vi/common.json | 6 + src/i18n/locales/zh-CN/common.json | 8 +- src/i18n/locales/zh-TW/common.json | 6 + src/shared/WebviewMessage.ts | 4 +- webview-ui/src/components/chat/ChatRow.tsx | 1 + webview-ui/src/components/chat/ChatView.tsx | 2 + .../chat/checkpoints/CheckpointMenu.tsx | 107 ++++++++++++++---- .../chat/checkpoints/CheckpointSaved.tsx | 4 +- .../__tests__/CheckpointSaved.spec.tsx | 17 +-- webview-ui/src/i18n/locales/ca/chat.json | 3 + webview-ui/src/i18n/locales/de/chat.json | 3 + webview-ui/src/i18n/locales/en/chat.json | 5 +- webview-ui/src/i18n/locales/es/chat.json | 3 + webview-ui/src/i18n/locales/fr/chat.json | 3 + webview-ui/src/i18n/locales/hi/chat.json | 3 + webview-ui/src/i18n/locales/id/chat.json | 3 + webview-ui/src/i18n/locales/it/chat.json | 3 + webview-ui/src/i18n/locales/ja/chat.json | 3 + webview-ui/src/i18n/locales/ko/chat.json | 3 + webview-ui/src/i18n/locales/nl/chat.json | 3 + webview-ui/src/i18n/locales/pl/chat.json | 3 + webview-ui/src/i18n/locales/pt-BR/chat.json | 3 + webview-ui/src/i18n/locales/ru/chat.json | 3 + webview-ui/src/i18n/locales/tr/chat.json | 3 + webview-ui/src/i18n/locales/vi/chat.json | 3 + webview-ui/src/i18n/locales/zh-CN/chat.json | 3 + webview-ui/src/i18n/locales/zh-TW/chat.json | 3 + 44 files changed, 326 insertions(+), 57 deletions(-) diff --git a/src/core/checkpoints/__tests__/checkpoint.test.ts b/src/core/checkpoints/__tests__/checkpoint.test.ts index 489abb7175..4681d4c77f 100644 --- a/src/core/checkpoints/__tests__/checkpoint.test.ts +++ b/src/core/checkpoints/__tests__/checkpoint.test.ts @@ -304,7 +304,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" }, @@ -316,7 +316,7 @@ describe("Checkpoint functionality", () => { await checkpointDiff(mockTask, { ts: 4, commitHash: "commit2", - mode: "full", + mode: "to-current", }) expect(mockCheckpointService.getDiff).toHaveBeenCalledWith({ @@ -325,7 +325,7 @@ describe("Checkpoint functionality", () => { }) expect(vscode.commands.executeCommand).toHaveBeenCalledWith( "vscode.changes", - "Changes since task started", + "errors.checkpoint_diff_to_current", expect.any(Array), ) }) @@ -350,7 +350,7 @@ describe("Checkpoint functionality", () => { }) expect(vscode.commands.executeCommand).toHaveBeenCalledWith( "vscode.changes", - "Changes compare with next checkpoint", + "errors.checkpoint_diff_with_next", expect.any(Array), ) }) @@ -382,10 +382,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() }) @@ -395,7 +395,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 2c9c5a3612..3efdb466e6 100644 --- a/src/core/checkpoints/index.ts +++ b/src/core/checkpoints/index.ts @@ -302,10 +302,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) { @@ -317,30 +323,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 a1f528ef97..c71cf130ac 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 dbd9452e60..6ec9be0f5f 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 3a613cc1c2..784540e06f 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 49dcfe98c5..ade6aa9c46 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 260bbbf13b..dc06e0ca7a 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 ab7d594e8f..14da25805b 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 ddd549b6f0..5622d72215 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 80e8e0633b..abb22d77d3 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 accba790a2..cdd8de9a9a 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 acb7bd47d7..0cbfc9d99a 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 d43690c435..c989219e7b 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 56c076f785..3a1c08cf60 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 c2cd63255f..d8782623b8 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 9595f1f276..d800467638 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 aa11041110..f163a5df83 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 b4b92b373e..47ed3c0397 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 8c42744484..800a1eb5ce 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 5a31d601b4..a72163495a 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 a88d883f87..e460f20384 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -308,10 +308,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 b0b87e7a2d..ed5257528f 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 d471d0aba3..b454c97bef 100644 --- a/webview-ui/src/components/chat/ChatView.tsx +++ b/webview-ui/src/components/chat/ChatView.tsx @@ -1517,6 +1517,7 @@ const ChatViewComponent: React.ForwardRefRenderFunction ) } + const hasCheckpoint = modifiedMessages.some((message) => message.say === "checkpoint_saved") // regular message return ( @@ -1551,6 +1552,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 c6948e5ce3..22802cd455 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 710c2b3287..1bc5102666 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 3e1cd2a465..043e7eb729 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 af219b07a0..d23215956b 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 749e67ff74..696672cc27 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 6c6babb97e..62c712b8dd 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 4bc8d93fc7..559a39e90c 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 75e058526a..42be105dd3 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 94b14203d1..d44876c612 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 71b17da455..d787880787 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 4bf4acdabb..a2bb2e16d3 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 83f0fdd500..f12601ba00 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 3890dd0a22..87cd77c4b9 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 dde2aaf695..af1ed04690 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 3b9f5ad395..2054db1e70 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 9717f635f8..3fc9164004 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 0e9b12a719..5dea9cee01 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 2fd225e6d6..a72bae69b9 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 1e3329b06c..f996d84bd4 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 6b2cf65454..9a795f7c4f 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 49c1ffda2b..5ff9a08249 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": "將您的專案檔案還原到此時的快照。",