From e6ea70f7b9cabc2c78fb45aed11a801380d5077f Mon Sep 17 00:00:00 2001 From: Elliott de Launay Date: Mon, 4 May 2026 01:47:52 +0000 Subject: [PATCH 1/6] feat(zoo-migration): new service to support community-driven extension --- packages/types/src/vscode.ts | 1 + src/__mocks__/fs/promises.ts | 62 ++++ src/activate/registerCommands.ts | 25 ++ src/extension.ts | 7 + src/i18n/locales/ca/common.json | 16 + src/i18n/locales/de/common.json | 16 + src/i18n/locales/en/common.json | 16 + src/i18n/locales/es/common.json | 16 + src/i18n/locales/fr/common.json | 16 + src/i18n/locales/hi/common.json | 16 + src/i18n/locales/id/common.json | 16 + src/i18n/locales/it/common.json | 16 + src/i18n/locales/ja/common.json | 16 + src/i18n/locales/ko/common.json | 16 + src/i18n/locales/nl/common.json | 16 + src/i18n/locales/pl/common.json | 16 + src/i18n/locales/pt-BR/common.json | 16 + src/i18n/locales/ru/common.json | 16 + src/i18n/locales/tr/common.json | 16 + src/i18n/locales/vi/common.json | 16 + src/i18n/locales/zh-CN/common.json | 16 + src/i18n/locales/zh-TW/common.json | 16 + src/package.json | 7 +- src/package.nls.ca.json | 1 + src/package.nls.de.json | 1 + src/package.nls.es.json | 1 + src/package.nls.fr.json | 1 + src/package.nls.hi.json | 1 + src/package.nls.id.json | 1 + src/package.nls.it.json | 1 + src/package.nls.ja.json | 1 + src/package.nls.json | 1 + src/package.nls.ko.json | 1 + src/package.nls.nl.json | 1 + src/package.nls.pl.json | 1 + src/package.nls.pt-BR.json | 1 + src/package.nls.ru.json | 1 + src/package.nls.tr.json | 1 + src/package.nls.vi.json | 1 + src/package.nls.zh-CN.json | 1 + src/package.nls.zh-TW.json | 1 + src/services/zoo-migration/ZooMigration.ts | 297 ++++++++++++++++++ .../__tests__/ZooMigration.spec.ts | 208 ++++++++++++ 43 files changed, 912 insertions(+), 1 deletion(-) create mode 100644 src/services/zoo-migration/ZooMigration.ts create mode 100644 src/services/zoo-migration/__tests__/ZooMigration.spec.ts diff --git a/packages/types/src/vscode.ts b/packages/types/src/vscode.ts index fd28f2e9945..d38569e8f14 100644 --- a/packages/types/src/vscode.ts +++ b/packages/types/src/vscode.ts @@ -42,6 +42,7 @@ export const commandIds = [ "setCustomStoragePath", "importSettings", + "prepareZooMigration", "focusInput", "acceptInput", diff --git a/src/__mocks__/fs/promises.ts b/src/__mocks__/fs/promises.ts index daed479d4a3..22aeef7a91a 100644 --- a/src/__mocks__/fs/promises.ts +++ b/src/__mocks__/fs/promises.ts @@ -150,6 +150,68 @@ const mockFs = { throw error }), + rm: vi.fn().mockImplementation(async (targetPath: string, options?: { recursive?: boolean; force?: boolean }) => { + if (mockFiles.has(targetPath)) { + mockFiles.delete(targetPath) + return Promise.resolve() + } + + if (mockDirectories.has(targetPath)) { + for (const filePath of Array.from(mockFiles.keys())) { + if (filePath.startsWith(`${targetPath}/`)) { + mockFiles.delete(filePath) + } + } + for (const dirPath of Array.from(mockDirectories.values()) as string[]) { + if (dirPath === targetPath || dirPath.startsWith(`${targetPath}/`)) { + mockDirectories.delete(dirPath) + } + } + return Promise.resolve() + } + + if (options?.force) { + return Promise.resolve() + } + + const error = new Error(`ENOENT: no such file or directory, rm '${targetPath}'`) + ;(error as any).code = "ENOENT" + throw error + }), + + cp: vi.fn().mockImplementation(async (sourcePath: string, destinationPath: string) => { + if (mockFiles.has(sourcePath)) { + const parentDir = destinationPath.split("/").slice(0, -1).join("/") + ensureDirectoryExists(parentDir) + mockFiles.set(destinationPath, mockFiles.get(sourcePath)) + return Promise.resolve() + } + + if (mockDirectories.has(sourcePath)) { + ensureDirectoryExists(destinationPath) + for (const dirPath of Array.from(mockDirectories.values()) as string[]) { + if (dirPath.startsWith(`${sourcePath}/`)) { + ensureDirectoryExists(destinationPath + dirPath.slice(sourcePath.length)) + } + } + for (const [filePath, content] of Array.from(mockFiles.entries())) { + if (filePath.startsWith(`${sourcePath}/`)) { + const copiedPath = destinationPath + filePath.slice(sourcePath.length) + const parentDir = copiedPath.split("/").slice(0, -1).join("/") + ensureDirectoryExists(parentDir) + mockFiles.set(copiedPath, content) + } + } + return Promise.resolve() + } + + const error = new Error(`ENOENT: no such file or directory, cp '${sourcePath}'`) + ;(error as any).code = "ENOENT" + throw error + }), + + chmod: vi.fn().mockResolvedValue(undefined), + constants: require("fs").constants, // Expose mock data for test assertions diff --git a/src/activate/registerCommands.ts b/src/activate/registerCommands.ts index f02ee8309a3..6b0caf2f1e2 100644 --- a/src/activate/registerCommands.ts +++ b/src/activate/registerCommands.ts @@ -13,6 +13,7 @@ import { handleNewTask } from "./handleTask" import { CodeIndexManager } from "../services/code-index/manager" import { importSettingsWithFeedback } from "../core/config/importExport" import { MdmService } from "../services/mdm/MdmService" +import { createZooMigrationHandoff, promptAndCreateZooMigrationHandoff } from "../services/zoo-migration/ZooMigration" import { t } from "../i18n" /** @@ -155,6 +156,30 @@ const getCommandsMap = ({ context, outputChannel, provider }: RegisterCommandOpt filePath, ) }, + prepareZooMigration: async (options?: { skipPrompt?: boolean; includeSecrets?: boolean }) => { + try { + const migrationOptions = { + context, + contextProxy: provider.contextProxy, + providerSettingsManager: provider.providerSettingsManager, + outputChannel, + } + + if (options?.skipPrompt) { + return await createZooMigrationHandoff({ + ...migrationOptions, + includeSecrets: options.includeSecrets ?? false, + }) + } + + return await promptAndCreateZooMigrationHandoff(migrationOptions) + } catch (error) { + const message = error instanceof Error ? error.message : String(error) + outputChannel.appendLine(`[Zoo Migration] Failed to prepare migration handoff: ${message}`) + await vscode.window.showErrorMessage(t("common:zooMigration.handoffFailed", { error: message })) + return undefined + } + }, focusInput: async () => { try { await focusPanel(tabPanel, sidebarPanel) diff --git a/src/extension.ts b/src/extension.ts index 19c0d70585a..d24c4ed5e93 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -39,6 +39,7 @@ import { MdmService } from "./services/mdm/MdmService" import { migrateSettings } from "./utils/migrateSettings" import { autoImportSettings } from "./utils/autoImportSettings" import { API } from "./extension/api" +import { showZooMigrationNotice } from "./services/zoo-migration/ZooMigration" import { handleUri, @@ -317,6 +318,12 @@ export async function activate(context: vscode.ExtensionContext) { registerCommands({ context, outputChannel, provider }) + void showZooMigrationNotice(context, { outputChannel }).catch((error) => { + outputChannel.appendLine( + `[Zoo Migration] Failed to show migration notice: ${error instanceof Error ? error.message : String(error)}`, + ) + }) + /** * We use the text document content provider API to show the left side for diff * view by creating a virtual document for the original content. This makes it diff --git a/src/i18n/locales/ca/common.json b/src/i18n/locales/ca/common.json index 33188fce193..7d69616afe0 100644 --- a/src/i18n/locales/ca/common.json +++ b/src/i18n/locales/ca/common.json @@ -23,6 +23,22 @@ "delete_config_profile": "Estàs segur que vols eliminar aquest perfil de configuració?", "delete_custom_mode_with_rules": "Esteu segur que voleu suprimir aquest mode {scope}?\n\nAixò també suprimirà la carpeta de regles associada a:\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "Instal·la Zoo", + "prepareMigration": "Prepara la migració", + "learnMore": "Més informació", + "later": "Més tard", + "includeApiKeys": "Inclou les claus d'API", + "skipApiKeys": "Omet les claus d'API", + "cancel": "Cancel·la" + }, + "notice": "Roo Code està passant a Zoo Code. Pots preparar un paquet de migració basat en còpia per a Zoo sense eliminar les teves dades de Roo.", + "zooNotPublished": "Zoo Code encara no s'ha publicat amb un id d'extensió confirmat al Marketplace. S'ha obert la vista d'extensions amb una cerca de Zoo Code.", + "preparePrompt": "Vols preparar un paquet de migració local de Zoo Code? Si inclous les claus d'API, els secrets del proveïdor s'escriuran en un fitxer local perquè Zoo els pugui importar i després eliminar el paquet.", + "handoffPrepared": "Paquet de migració de Zoo Code preparat a {{path}}. Instal·la Zoo Code i importa des d'aquest paquet.", + "handoffFailed": "No s'ha pogut preparar el paquet de migració de Zoo Code: {{error}}" + }, "errors": { "invalid_data_uri": "Format d'URI de dades no vàlid", "error_copying_image": "Error copiant la imatge: {{errorMessage}}", diff --git a/src/i18n/locales/de/common.json b/src/i18n/locales/de/common.json index 861d9da5768..bb1c1838cb4 100644 --- a/src/i18n/locales/de/common.json +++ b/src/i18n/locales/de/common.json @@ -19,6 +19,22 @@ "delete_config_profile": "Möchtest du dieses Konfigurationsprofil wirklich löschen?", "delete_custom_mode_with_rules": "Bist du sicher, dass du diesen {scope}-Modus löschen möchtest?\n\nDadurch wird auch der zugehörige Regelordner unter folgender Adresse gelöscht:\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "Zoo Installieren", + "prepareMigration": "Migration Vorbereiten", + "learnMore": "Mehr Erfahren", + "later": "Später", + "includeApiKeys": "API-Schlüssel Einschließen", + "skipApiKeys": "API-Schlüssel Überspringen", + "cancel": "Abbrechen" + }, + "notice": "Roo Code wechselt zu Zoo Code. Du kannst eine kopierbasierte Migrationsübergabe für Zoo vorbereiten, ohne deine Roo-Daten zu löschen.", + "zooNotPublished": "Zoo Code ist noch nicht unter einer bestätigten Marketplace-Erweiterungs-ID veröffentlicht. Die Erweiterungsansicht wurde mit einer Suche nach Zoo Code geöffnet.", + "preparePrompt": "Lokale Zoo Code-Migrationsübergabe vorbereiten? Wenn du API-Schlüssel einschließt, werden Provider-Secrets in eine lokale Datei geschrieben, damit Zoo sie importieren und die Übergabe danach löschen kann.", + "handoffPrepared": "Zoo Code-Migrationsübergabe unter {{path}} vorbereitet. Installiere Zoo Code und importiere aus dieser Übergabe.", + "handoffFailed": "Zoo Code-Migrationsübergabe konnte nicht vorbereitet werden: {{error}}" + }, "errors": { "invalid_data_uri": "Ungültiges Daten-URI-Format", "error_copying_image": "Fehler beim Kopieren des Bildes: {{errorMessage}}", diff --git a/src/i18n/locales/en/common.json b/src/i18n/locales/en/common.json index d65fe183679..54cfdc027a6 100644 --- a/src/i18n/locales/en/common.json +++ b/src/i18n/locales/en/common.json @@ -19,6 +19,22 @@ "delete_config_profile": "Are you sure you want to delete this configuration profile?", "delete_custom_mode_with_rules": "Are you sure you want to delete this {scope} mode?\n\nThis will also delete the associated rules folder at:\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "Install Zoo", + "prepareMigration": "Prepare Migration", + "learnMore": "Learn More", + "later": "Later", + "includeApiKeys": "Include API keys", + "skipApiKeys": "Skip API keys", + "cancel": "Cancel" + }, + "notice": "Roo Code is transitioning to Zoo Code. You can prepare a copy-based migration handoff for Zoo without deleting your Roo data.", + "zooNotPublished": "Zoo Code is not published under a confirmed Marketplace extension id yet. The Extensions view has been opened with a Zoo Code search.", + "preparePrompt": "Prepare a local Zoo Code migration handoff? Including API keys writes provider secrets to a local file so Zoo can import them, then delete the handoff after import.", + "handoffPrepared": "Zoo Code migration handoff prepared at {{path}}. Install Zoo Code and import from this handoff.", + "handoffFailed": "Failed to prepare Zoo Code migration handoff: {{error}}" + }, "errors": { "invalid_data_uri": "Invalid data URI format", "error_copying_image": "Error copying image: {{errorMessage}}", diff --git a/src/i18n/locales/es/common.json b/src/i18n/locales/es/common.json index 82be83956b0..ab21f59b364 100644 --- a/src/i18n/locales/es/common.json +++ b/src/i18n/locales/es/common.json @@ -19,6 +19,22 @@ "delete_config_profile": "¿Estás seguro de que deseas eliminar este perfil de configuración?", "delete_custom_mode_with_rules": "¿Estás seguro de que quieres eliminar este modo {scope}?\n\nEsto también eliminará la carpeta de reglas asociada en:\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "Instalar Zoo", + "prepareMigration": "Preparar Migración", + "learnMore": "Más Información", + "later": "Más Tarde", + "includeApiKeys": "Incluir claves de API", + "skipApiKeys": "Omitir claves de API", + "cancel": "Cancelar" + }, + "notice": "Roo Code está pasando a Zoo Code. Puedes preparar una entrega de migración basada en copia para Zoo sin eliminar tus datos de Roo.", + "zooNotPublished": "Zoo Code aún no está publicado con un id de extensión confirmado en Marketplace. Se abrió la vista de Extensiones con una búsqueda de Zoo Code.", + "preparePrompt": "¿Preparar una entrega local de migración a Zoo Code? Si incluyes claves de API, los secrets del proveedor se escribirán en un archivo local para que Zoo pueda importarlos y luego eliminar la entrega.", + "handoffPrepared": "Entrega de migración a Zoo Code preparada en {{path}}. Instala Zoo Code e importa desde esta entrega.", + "handoffFailed": "No se pudo preparar la entrega de migración a Zoo Code: {{error}}" + }, "errors": { "invalid_data_uri": "Formato de URI de datos no válido", "error_copying_image": "Error copiando la imagen: {{errorMessage}}", diff --git a/src/i18n/locales/fr/common.json b/src/i18n/locales/fr/common.json index 6fc05ff94a3..0476a9487fe 100644 --- a/src/i18n/locales/fr/common.json +++ b/src/i18n/locales/fr/common.json @@ -19,6 +19,22 @@ "delete_config_profile": "Êtes-vous sûr de vouloir supprimer ce profil de configuration ?", "delete_custom_mode_with_rules": "Êtes-vous sûr de vouloir supprimer ce mode {scope} ?\n\nCela supprimera également le dossier de règles associé à l'adresse :\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "Installer Zoo", + "prepareMigration": "Préparer la Migration", + "learnMore": "En Savoir Plus", + "later": "Plus Tard", + "includeApiKeys": "Inclure les clés API", + "skipApiKeys": "Ignorer les clés API", + "cancel": "Annuler" + }, + "notice": "Roo Code passe à Zoo Code. Tu peux préparer un transfert de migration par copie pour Zoo sans supprimer tes données Roo.", + "zooNotPublished": "Zoo Code n'est pas encore publié avec un id d'extension Marketplace confirmé. La vue Extensions a été ouverte avec une recherche Zoo Code.", + "preparePrompt": "Préparer un transfert local de migration Zoo Code ? Inclure les clés API écrit les secrets du fournisseur dans un fichier local afin que Zoo puisse les importer, puis supprimer le transfert après import.", + "handoffPrepared": "Transfert de migration Zoo Code préparé dans {{path}}. Installe Zoo Code et importe depuis ce transfert.", + "handoffFailed": "Échec de la préparation du transfert de migration Zoo Code : {{error}}" + }, "errors": { "invalid_data_uri": "Format d'URI de données invalide", "error_copying_image": "Erreur lors de la copie de l'image : {{errorMessage}}", diff --git a/src/i18n/locales/hi/common.json b/src/i18n/locales/hi/common.json index 528ed6d45f5..109c0a6c9bd 100644 --- a/src/i18n/locales/hi/common.json +++ b/src/i18n/locales/hi/common.json @@ -19,6 +19,22 @@ "delete_config_profile": "क्या आप वाकई इस कॉन्फ़िगरेशन प्रोफ़ाइल को हटाना चाहते हैं?", "delete_custom_mode_with_rules": "क्या आप वाकई इस {scope} मोड को हटाना चाहते हैं?\n\nयह संबंधित नियम फ़ोल्डर को भी यहाँ हटा देगा:\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "Zoo इंस्टॉल करें", + "prepareMigration": "माइग्रेशन तैयार करें", + "learnMore": "और जानें", + "later": "बाद में", + "includeApiKeys": "API कुंजियां शामिल करें", + "skipApiKeys": "API कुंजियां छोड़ें", + "cancel": "रद्द करें" + }, + "notice": "Roo Code, Zoo Code में बदल रहा है। आप Roo डेटा हटाए बिना Zoo के लिए कॉपी-आधारित माइग्रेशन हैंडऑफ तैयार कर सकते हैं।", + "zooNotPublished": "Zoo Code अभी तक पुष्टि किए गए Marketplace एक्सटेंशन id के तहत प्रकाशित नहीं है। Extensions दृश्य Zoo Code खोज के साथ खोल दिया गया है।", + "preparePrompt": "स्थानीय Zoo Code माइग्रेशन हैंडऑफ तैयार करें? API कुंजियां शामिल करने से प्रदाता secrets एक स्थानीय फ़ाइल में लिखे जाएंगे ताकि Zoo उन्हें आयात कर सके और फिर आयात के बाद हैंडऑफ हटा सके।", + "handoffPrepared": "Zoo Code माइग्रेशन हैंडऑफ {{path}} पर तैयार है। Zoo Code इंस्टॉल करें और इस हैंडऑफ से आयात करें।", + "handoffFailed": "Zoo Code माइग्रेशन हैंडऑफ तैयार करने में विफल: {{error}}" + }, "errors": { "invalid_data_uri": "अमान्य डेटा URI फॉर्मेट", "error_copying_image": "छवि कॉपी करने में त्रुटि: {{errorMessage}}", diff --git a/src/i18n/locales/id/common.json b/src/i18n/locales/id/common.json index cb1c3231fb8..367c251e4aa 100644 --- a/src/i18n/locales/id/common.json +++ b/src/i18n/locales/id/common.json @@ -19,6 +19,22 @@ "delete_config_profile": "Apakah kamu yakin ingin menghapus profil konfigurasi ini?", "delete_custom_mode_with_rules": "Anda yakin ingin menghapus mode {scope} ini?\n\nIni juga akan menghapus folder aturan terkait di:\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "Instal Zoo", + "prepareMigration": "Siapkan Migrasi", + "learnMore": "Pelajari Selengkapnya", + "later": "Nanti", + "includeApiKeys": "Sertakan kunci API", + "skipApiKeys": "Lewati kunci API", + "cancel": "Batal" + }, + "notice": "Roo Code sedang beralih ke Zoo Code. Kamu bisa menyiapkan handoff migrasi berbasis salinan untuk Zoo tanpa menghapus data Roo-mu.", + "zooNotPublished": "Zoo Code belum diterbitkan dengan id ekstensi Marketplace yang terkonfirmasi. Tampilan Extensions telah dibuka dengan pencarian Zoo Code.", + "preparePrompt": "Siapkan handoff migrasi Zoo Code lokal? Menyertakan kunci API akan menulis secret penyedia ke file lokal agar Zoo bisa mengimpornya, lalu menghapus handoff setelah impor.", + "handoffPrepared": "Handoff migrasi Zoo Code disiapkan di {{path}}. Instal Zoo Code dan impor dari handoff ini.", + "handoffFailed": "Gagal menyiapkan handoff migrasi Zoo Code: {{error}}" + }, "errors": { "invalid_data_uri": "Format data URI tidak valid", "error_copying_image": "Error menyalin gambar: {{errorMessage}}", diff --git a/src/i18n/locales/it/common.json b/src/i18n/locales/it/common.json index b4e522cb732..0c0cee78cbb 100644 --- a/src/i18n/locales/it/common.json +++ b/src/i18n/locales/it/common.json @@ -19,6 +19,22 @@ "delete_config_profile": "Sei sicuro di voler eliminare questo profilo di configurazione?", "delete_custom_mode_with_rules": "Sei sicuro di voler eliminare questa modalità {scope}?\n\nQuesto eliminerà anche la cartella delle regole associata in:\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "Installa Zoo", + "prepareMigration": "Prepara Migrazione", + "learnMore": "Scopri di Più", + "later": "Più Tardi", + "includeApiKeys": "Includi chiavi API", + "skipApiKeys": "Salta chiavi API", + "cancel": "Annulla" + }, + "notice": "Roo Code sta passando a Zoo Code. Puoi preparare un handoff di migrazione basato su copia per Zoo senza eliminare i tuoi dati Roo.", + "zooNotPublished": "Zoo Code non è ancora pubblicato con un id estensione Marketplace confermato. La vista Estensioni è stata aperta con una ricerca di Zoo Code.", + "preparePrompt": "Preparare un handoff locale di migrazione Zoo Code? Includere le chiavi API scrive i secret dei provider in un file locale, così Zoo può importarli e poi eliminare l'handoff dopo l'importazione.", + "handoffPrepared": "Handoff di migrazione Zoo Code preparato in {{path}}. Installa Zoo Code e importa da questo handoff.", + "handoffFailed": "Impossibile preparare l'handoff di migrazione Zoo Code: {{error}}" + }, "errors": { "invalid_data_uri": "Formato URI dati non valido", "error_copying_image": "Errore durante la copia dell'immagine: {{errorMessage}}", diff --git a/src/i18n/locales/ja/common.json b/src/i18n/locales/ja/common.json index 7b63b6f7298..a3795a96b07 100644 --- a/src/i18n/locales/ja/common.json +++ b/src/i18n/locales/ja/common.json @@ -19,6 +19,22 @@ "delete_config_profile": "この設定プロファイルを削除してもよろしいですか?", "delete_custom_mode_with_rules": "この{scope}モードを削除してもよろしいですか?\n\nこれにより、関連するルールフォルダも次の場所で削除されます:\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "Zoo をインストール", + "prepareMigration": "移行を準備", + "learnMore": "詳しく見る", + "later": "後で", + "includeApiKeys": "API キーを含める", + "skipApiKeys": "API キーをスキップ", + "cancel": "キャンセル" + }, + "notice": "Roo Code は Zoo Code へ移行しています。Roo のデータを削除せずに、Zoo 用のコピー方式の移行ハンドオフを準備できます。", + "zooNotPublished": "Zoo Code は、確認済みの Marketplace 拡張機能 id ではまだ公開されていません。拡張機能ビューで Zoo Code の検索を開きました。", + "preparePrompt": "ローカルの Zoo Code 移行ハンドオフを準備しますか?API キーを含めると、Zoo がインポートできるようにプロバイダーの secret がローカルファイルに書き込まれ、インポート後にハンドオフを削除できます。", + "handoffPrepared": "Zoo Code 移行ハンドオフを {{path}} に準備しました。Zoo Code をインストールして、このハンドオフからインポートしてください。", + "handoffFailed": "Zoo Code 移行ハンドオフの準備に失敗しました: {{error}}" + }, "errors": { "invalid_data_uri": "データURIフォーマットが無効です", "error_copying_image": "画像のコピー中にエラーが発生しました:{{errorMessage}}", diff --git a/src/i18n/locales/ko/common.json b/src/i18n/locales/ko/common.json index fbde3225bb1..178ec9e0947 100644 --- a/src/i18n/locales/ko/common.json +++ b/src/i18n/locales/ko/common.json @@ -19,6 +19,22 @@ "delete_config_profile": "이 구성 프로필을 삭제하시겠습니까?", "delete_custom_mode_with_rules": "이 {scope} 모드를 삭제하시겠습니까?\n\n이렇게 하면 연결된 규칙 폴더도 다음 위치에서 삭제됩니다:\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "Zoo 설치", + "prepareMigration": "마이그레이션 준비", + "learnMore": "자세히 보기", + "later": "나중에", + "includeApiKeys": "API 키 포함", + "skipApiKeys": "API 키 건너뛰기", + "cancel": "취소" + }, + "notice": "Roo Code가 Zoo Code로 전환됩니다. Roo 데이터를 삭제하지 않고 Zoo용 복사 기반 마이그레이션 핸드오프를 준비할 수 있습니다.", + "zooNotPublished": "Zoo Code는 아직 확인된 Marketplace 확장 id로 게시되지 않았습니다. Extensions 보기에서 Zoo Code 검색을 열었습니다.", + "preparePrompt": "로컬 Zoo Code 마이그레이션 핸드오프를 준비할까요? API 키를 포함하면 Zoo가 가져올 수 있도록 공급자 secrets가 로컬 파일에 기록되고, 가져온 후 핸드오프를 삭제할 수 있습니다.", + "handoffPrepared": "Zoo Code 마이그레이션 핸드오프가 {{path}}에 준비되었습니다. Zoo Code를 설치하고 이 핸드오프에서 가져오세요.", + "handoffFailed": "Zoo Code 마이그레이션 핸드오프 준비 실패: {{error}}" + }, "errors": { "invalid_data_uri": "잘못된 데이터 URI 형식", "error_copying_image": "이미지 복사 중 오류 발생: {{errorMessage}}", diff --git a/src/i18n/locales/nl/common.json b/src/i18n/locales/nl/common.json index eba274c96ec..a00c49fc8e7 100644 --- a/src/i18n/locales/nl/common.json +++ b/src/i18n/locales/nl/common.json @@ -19,6 +19,22 @@ "delete_config_profile": "Weet je zeker dat je dit configuratieprofiel wilt verwijderen?", "delete_custom_mode_with_rules": "Weet je zeker dat je deze {scope}-modus wilt verwijderen?\n\nDit verwijdert ook de bijbehorende regelsmap op:\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "Zoo Installeren", + "prepareMigration": "Migratie Voorbereiden", + "learnMore": "Meer Informatie", + "later": "Later", + "includeApiKeys": "API-sleutels Opnemen", + "skipApiKeys": "API-sleutels Overslaan", + "cancel": "Annuleren" + }, + "notice": "Roo Code stapt over naar Zoo Code. Je kunt een kopie-gebaseerde migratiehandoff voor Zoo voorbereiden zonder je Roo-gegevens te verwijderen.", + "zooNotPublished": "Zoo Code is nog niet gepubliceerd onder een bevestigde Marketplace-extensie-id. De extensieweergave is geopend met een zoekopdracht naar Zoo Code.", + "preparePrompt": "Een lokale Zoo Code-migratiehandoff voorbereiden? Als je API-sleutels opneemt, worden provider-secrets naar een lokaal bestand geschreven zodat Zoo ze kan importeren en de handoff daarna kan verwijderen.", + "handoffPrepared": "Zoo Code-migratiehandoff voorbereid op {{path}}. Installeer Zoo Code en importeer vanuit deze handoff.", + "handoffFailed": "Kan Zoo Code-migratiehandoff niet voorbereiden: {{error}}" + }, "errors": { "invalid_data_uri": "Ongeldig data-URI-formaat", "error_copying_image": "Fout bij kopiëren van afbeelding: {{errorMessage}}", diff --git a/src/i18n/locales/pl/common.json b/src/i18n/locales/pl/common.json index 20b568281bb..6d96e359710 100644 --- a/src/i18n/locales/pl/common.json +++ b/src/i18n/locales/pl/common.json @@ -19,6 +19,22 @@ "delete_config_profile": "Czy na pewno chcesz usunąć ten profil konfiguracyjny?", "delete_custom_mode_with_rules": "Czy na pewno chcesz usunąć ten tryb {scope}?\n\nSpowoduje to również usunięcie powiązanego folderu reguł pod adresem:\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "Zainstaluj Zoo", + "prepareMigration": "Przygotuj Migrację", + "learnMore": "Dowiedz się Więcej", + "later": "Później", + "includeApiKeys": "Dołącz klucze API", + "skipApiKeys": "Pomiń klucze API", + "cancel": "Anuluj" + }, + "notice": "Roo Code przechodzi na Zoo Code. Możesz przygotować dla Zoo migrację przez kopię bez usuwania danych Roo.", + "zooNotPublished": "Zoo Code nie jest jeszcze opublikowany pod potwierdzonym id rozszerzenia Marketplace. Widok Rozszerzenia został otwarty z wyszukiwaniem Zoo Code.", + "preparePrompt": "Przygotować lokalną migrację Zoo Code? Dołączenie kluczy API zapisze secrets dostawców do lokalnego pliku, aby Zoo mogło je zaimportować, a następnie usunąć plik po imporcie.", + "handoffPrepared": "Migracja Zoo Code została przygotowana w {{path}}. Zainstaluj Zoo Code i zaimportuj dane z tego pliku.", + "handoffFailed": "Nie udało się przygotować migracji Zoo Code: {{error}}" + }, "errors": { "invalid_data_uri": "Nieprawidłowy format URI danych", "error_copying_image": "Błąd kopiowania obrazu: {{errorMessage}}", diff --git a/src/i18n/locales/pt-BR/common.json b/src/i18n/locales/pt-BR/common.json index 38abc8c8047..f111cfcd9dd 100644 --- a/src/i18n/locales/pt-BR/common.json +++ b/src/i18n/locales/pt-BR/common.json @@ -23,6 +23,22 @@ "delete_config_profile": "Tem certeza de que deseja excluir este perfil de configuração?", "delete_custom_mode_with_rules": "Tem certeza de que deseja excluir este modo {scope}?\n\nIsso também excluirá a pasta de regras associada em:\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "Instalar Zoo", + "prepareMigration": "Preparar Migração", + "learnMore": "Saiba Mais", + "later": "Mais Tarde", + "includeApiKeys": "Incluir chaves de API", + "skipApiKeys": "Ignorar chaves de API", + "cancel": "Cancelar" + }, + "notice": "Roo Code está migrando para Zoo Code. Você pode preparar uma entrega de migração baseada em cópia para o Zoo sem excluir seus dados do Roo.", + "zooNotPublished": "Zoo Code ainda não foi publicado com um id de extensão confirmado no Marketplace. A visualização de Extensões foi aberta com uma busca por Zoo Code.", + "preparePrompt": "Preparar uma entrega local de migração para o Zoo Code? Incluir chaves de API grava os secrets dos provedores em um arquivo local para que o Zoo possa importá-los e depois excluir a entrega após a importação.", + "handoffPrepared": "Entrega de migração do Zoo Code preparada em {{path}}. Instale o Zoo Code e importe a partir desta entrega.", + "handoffFailed": "Falha ao preparar a entrega de migração do Zoo Code: {{error}}" + }, "errors": { "invalid_data_uri": "Formato de URI de dados inválido", "error_copying_image": "Erro ao copiar imagem: {{errorMessage}}", diff --git a/src/i18n/locales/ru/common.json b/src/i18n/locales/ru/common.json index d124f597318..cca8610c9a0 100644 --- a/src/i18n/locales/ru/common.json +++ b/src/i18n/locales/ru/common.json @@ -19,6 +19,22 @@ "delete_config_profile": "Вы уверены, что хотите удалить этот профиль конфигурации?", "delete_custom_mode_with_rules": "Вы уверены, что хотите удалить этот режим {scope}?\n\nЭто также приведет к удалению соответствующей папки правил по адресу:\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "Установить Zoo", + "prepareMigration": "Подготовить миграцию", + "learnMore": "Подробнее", + "later": "Позже", + "includeApiKeys": "Включить API-ключи", + "skipApiKeys": "Пропустить API-ключи", + "cancel": "Отмена" + }, + "notice": "Roo Code переходит на Zoo Code. Вы можете подготовить копируемый пакет миграции для Zoo, не удаляя данные Roo.", + "zooNotPublished": "Zoo Code еще не опубликован с подтвержденным id расширения Marketplace. Открыт раздел расширений с поиском Zoo Code.", + "preparePrompt": "Подготовить локальный пакет миграции Zoo Code? Если включить API-ключи, secrets провайдеров будут записаны в локальный файл, чтобы Zoo мог импортировать их, а затем удалить пакет после импорта.", + "handoffPrepared": "Пакет миграции Zoo Code подготовлен в {{path}}. Установите Zoo Code и импортируйте данные из этого пакета.", + "handoffFailed": "Не удалось подготовить пакет миграции Zoo Code: {{error}}" + }, "errors": { "invalid_data_uri": "Неверный формат URI данных", "error_copying_image": "Ошибка копирования изображения: {{errorMessage}}", diff --git a/src/i18n/locales/tr/common.json b/src/i18n/locales/tr/common.json index 00dcf6fc33d..64862850228 100644 --- a/src/i18n/locales/tr/common.json +++ b/src/i18n/locales/tr/common.json @@ -19,6 +19,22 @@ "delete_config_profile": "Bu yapılandırma profilini silmek istediğinizden emin misiniz?", "delete_custom_mode_with_rules": "Bu {scope} modunu silmek istediğinizden emin misiniz?\n\nBu işlem, ilişkili kurallar klasörünü de şu konumdan silecektir:\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "Zoo'yu Yükle", + "prepareMigration": "Geçişi Hazırla", + "learnMore": "Daha Fazla Bilgi", + "later": "Daha Sonra", + "includeApiKeys": "API anahtarlarını dahil et", + "skipApiKeys": "API anahtarlarını atla", + "cancel": "İptal" + }, + "notice": "Roo Code, Zoo Code'a geçiyor. Roo verilerini silmeden Zoo için kopya tabanlı bir geçiş handoff'u hazırlayabilirsin.", + "zooNotPublished": "Zoo Code henüz doğrulanmış bir Marketplace eklenti id'siyle yayınlanmadı. Eklentiler görünümü Zoo Code aramasıyla açıldı.", + "preparePrompt": "Yerel bir Zoo Code geçiş handoff'u hazırlansın mı? API anahtarlarını dahil etmek, sağlayıcı secrets değerlerini Zoo'nun içe aktarabilmesi ve içe aktarma sonrası handoff'u silebilmesi için yerel bir dosyaya yazar.", + "handoffPrepared": "Zoo Code geçiş handoff'u {{path}} konumunda hazırlandı. Zoo Code'u yükle ve bu handoff'tan içe aktar.", + "handoffFailed": "Zoo Code geçiş handoff'u hazırlanamadı: {{error}}" + }, "errors": { "invalid_data_uri": "Geçersiz veri URI formatı", "error_copying_image": "Resim kopyalanırken hata oluştu: {{errorMessage}}", diff --git a/src/i18n/locales/vi/common.json b/src/i18n/locales/vi/common.json index decd4ff53ef..d2913757dfa 100644 --- a/src/i18n/locales/vi/common.json +++ b/src/i18n/locales/vi/common.json @@ -19,6 +19,22 @@ "delete_config_profile": "Bạn có chắc chắn muốn xóa hồ sơ cấu hình này không?", "delete_custom_mode_with_rules": "Bạn có chắc chắn muốn xóa chế độ {scope} này không?\n\nThao tác này cũng sẽ xóa thư mục quy tắc liên quan tại:\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "Cài đặt Zoo", + "prepareMigration": "Chuẩn bị Di chuyển", + "learnMore": "Tìm hiểu Thêm", + "later": "Để sau", + "includeApiKeys": "Bao gồm khóa API", + "skipApiKeys": "Bỏ qua khóa API", + "cancel": "Hủy" + }, + "notice": "Roo Code đang chuyển sang Zoo Code. Bạn có thể chuẩn bị handoff di chuyển dạng sao chép cho Zoo mà không xóa dữ liệu Roo của mình.", + "zooNotPublished": "Zoo Code chưa được phát hành với id tiện ích Marketplace đã xác nhận. Khung Extensions đã được mở với tìm kiếm Zoo Code.", + "preparePrompt": "Chuẩn bị handoff di chuyển Zoo Code cục bộ? Bao gồm khóa API sẽ ghi secrets của nhà cung cấp vào một tệp cục bộ để Zoo có thể nhập chúng, rồi xóa handoff sau khi nhập.", + "handoffPrepared": "Handoff di chuyển Zoo Code đã được chuẩn bị tại {{path}}. Cài đặt Zoo Code và nhập từ handoff này.", + "handoffFailed": "Không thể chuẩn bị handoff di chuyển Zoo Code: {{error}}" + }, "errors": { "invalid_data_uri": "Định dạng URI dữ liệu không hợp lệ", "error_copying_image": "Lỗi khi sao chép hình ảnh: {{errorMessage}}", diff --git a/src/i18n/locales/zh-CN/common.json b/src/i18n/locales/zh-CN/common.json index 6df1f78b167..5e969fa0642 100644 --- a/src/i18n/locales/zh-CN/common.json +++ b/src/i18n/locales/zh-CN/common.json @@ -19,6 +19,22 @@ "delete_config_profile": "您确定要删除此配置文件吗?", "delete_custom_mode_with_rules": "您确定要删除此 {scope} 模式吗?\n\n这也将删除位于以下位置的关联规则文件夹:\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "安装 Zoo", + "prepareMigration": "准备迁移", + "learnMore": "了解更多", + "later": "稍后", + "includeApiKeys": "包含 API 密钥", + "skipApiKeys": "跳过 API 密钥", + "cancel": "取消" + }, + "notice": "Roo Code 正在迁移到 Zoo Code。你可以为 Zoo 准备基于复制的迁移交接包,而不会删除你的 Roo 数据。", + "zooNotPublished": "Zoo Code 尚未以确认的 Marketplace 扩展 id 发布。已打开扩展视图并搜索 Zoo Code。", + "preparePrompt": "要准备本地 Zoo Code 迁移交接包吗?包含 API 密钥会将提供商 secrets 写入本地文件,以便 Zoo 导入,并在导入后删除该交接包。", + "handoffPrepared": "Zoo Code 迁移交接包已准备在 {{path}}。请安装 Zoo Code 并从此交接包导入。", + "handoffFailed": "无法准备 Zoo Code 迁移交接包:{{error}}" + }, "errors": { "invalid_mcp_config": "项目MCP配置格式无效", "invalid_mcp_settings_format": "MCP设置JSON格式无效。请确保您的设置遵循正确的JSON格式。", diff --git a/src/i18n/locales/zh-TW/common.json b/src/i18n/locales/zh-TW/common.json index be4a76fc5b9..b285f024b16 100644 --- a/src/i18n/locales/zh-TW/common.json +++ b/src/i18n/locales/zh-TW/common.json @@ -19,6 +19,22 @@ "delete_config_profile": "您確定要刪除此設定檔案嗎?", "delete_custom_mode_with_rules": "您確定要刪除此 {scope} 模式嗎?\n\n這也將刪除位於以下位置的關聯規則資料夾:\n{rulesFolderPath}" }, + "zooMigration": { + "actions": { + "installZoo": "安裝 Zoo", + "prepareMigration": "準備遷移", + "learnMore": "瞭解更多", + "later": "稍後", + "includeApiKeys": "包含 API 金鑰", + "skipApiKeys": "略過 API 金鑰", + "cancel": "取消" + }, + "notice": "Roo Code 正在遷移到 Zoo Code。你可以為 Zoo 準備以複製為基礎的遷移交接包,而不會刪除你的 Roo 資料。", + "zooNotPublished": "Zoo Code 尚未以確認的 Marketplace 擴充功能 id 發布。已開啟擴充功能檢視並搜尋 Zoo Code。", + "preparePrompt": "要準備本機 Zoo Code 遷移交接包嗎?包含 API 金鑰會將供應商 secrets 寫入本機檔案,讓 Zoo 匯入,然後在匯入後刪除交接包。", + "handoffPrepared": "Zoo Code 遷移交接包已準備在 {{path}}。請安裝 Zoo Code 並從此交接包匯入。", + "handoffFailed": "無法準備 Zoo Code 遷移交接包:{{error}}" + }, "errors": { "invalid_data_uri": "資料 URI 格式無效", "error_copying_image": "複製圖片時發生錯誤:{{errorMessage}}", diff --git a/src/package.json b/src/package.json index cb3b93d1602..e3b5c278e20 100644 --- a/src/package.json +++ b/src/package.json @@ -3,7 +3,7 @@ "displayName": "%extension.displayName%", "description": "%extension.description%", "publisher": "RooVeterinaryInc", - "version": "3.53.0", + "version": "3.53.1", "icon": "assets/icons/icon.png", "galleryBanner": { "color": "#617A91", @@ -155,6 +155,11 @@ "title": "%command.importSettings.title%", "category": "%configuration.title%" }, + { + "command": "roo-cline.prepareZooMigration", + "title": "%command.prepareZooMigration.title%", + "category": "%configuration.title%" + }, { "command": "roo-cline.focusInput", "title": "%command.focusInput.title%", diff --git a/src/package.nls.ca.json b/src/package.nls.ca.json index 2781ed169cf..746e9410240 100644 --- a/src/package.nls.ca.json +++ b/src/package.nls.ca.json @@ -10,6 +10,7 @@ "command.focusInput.title": "Enfocar Camp d'Entrada", "command.setCustomStoragePath.title": "Establir Ruta d'Emmagatzematge Personalitzada", "command.importSettings.title": "Importar Configuració", + "command.prepareZooMigration.title": "Prepara la migració a Zoo Code", "command.terminal.addToContext.title": "Afegir Contingut del Terminal al Context", "command.terminal.fixCommand.title": "Corregir Aquesta Ordre", "command.terminal.explainCommand.title": "Explicar Aquesta Ordre", diff --git a/src/package.nls.de.json b/src/package.nls.de.json index a77a253ef06..f30c8b9ed21 100644 --- a/src/package.nls.de.json +++ b/src/package.nls.de.json @@ -10,6 +10,7 @@ "command.focusInput.title": "Eingabefeld Fokussieren", "command.setCustomStoragePath.title": "Benutzerdefinierten Speicherpfad Festlegen", "command.importSettings.title": "Einstellungen Importieren", + "command.prepareZooMigration.title": "Zoo Code-Migration Vorbereiten", "command.terminal.addToContext.title": "Terminal-Inhalt zum Kontext Hinzufügen", "command.terminal.fixCommand.title": "Diesen Befehl Reparieren", "command.terminal.explainCommand.title": "Diesen Befehl Erklären", diff --git a/src/package.nls.es.json b/src/package.nls.es.json index a1c729080e2..7fe8eeebd61 100644 --- a/src/package.nls.es.json +++ b/src/package.nls.es.json @@ -10,6 +10,7 @@ "command.focusInput.title": "Enfocar Campo de Entrada", "command.setCustomStoragePath.title": "Establecer Ruta de Almacenamiento Personalizada", "command.importSettings.title": "Importar Configuración", + "command.prepareZooMigration.title": "Preparar Migración a Zoo Code", "command.terminal.addToContext.title": "Añadir Contenido de Terminal al Contexto", "command.terminal.fixCommand.title": "Corregir Este Comando", "command.terminal.explainCommand.title": "Explicar Este Comando", diff --git a/src/package.nls.fr.json b/src/package.nls.fr.json index 2d009c0038d..495d661da28 100644 --- a/src/package.nls.fr.json +++ b/src/package.nls.fr.json @@ -10,6 +10,7 @@ "command.focusInput.title": "Focus sur le Champ de Saisie", "command.setCustomStoragePath.title": "Définir le Chemin de Stockage Personnalisé", "command.importSettings.title": "Importer les Paramètres", + "command.prepareZooMigration.title": "Préparer la Migration vers Zoo Code", "command.terminal.addToContext.title": "Ajouter le Contenu du Terminal au Contexte", "command.terminal.fixCommand.title": "Corriger cette Commande", "command.terminal.explainCommand.title": "Expliquer cette Commande", diff --git a/src/package.nls.hi.json b/src/package.nls.hi.json index c51f3ee95ee..227af866ffa 100644 --- a/src/package.nls.hi.json +++ b/src/package.nls.hi.json @@ -10,6 +10,7 @@ "command.focusInput.title": "इनपुट फ़ील्ड पर फोकस करें", "command.setCustomStoragePath.title": "कस्टम स्टोरेज पाथ सेट करें", "command.importSettings.title": "सेटिंग्स इम्पोर्ट करें", + "command.prepareZooMigration.title": "Zoo Code माइग्रेशन तैयार करें", "command.terminal.addToContext.title": "टर्मिनल सामग्री को संदर्भ में जोड़ें", "command.terminal.fixCommand.title": "यह कमांड ठीक करें", "command.terminal.explainCommand.title": "यह कमांड समझाएं", diff --git a/src/package.nls.id.json b/src/package.nls.id.json index 2a7607f3e7c..70c962bf174 100644 --- a/src/package.nls.id.json +++ b/src/package.nls.id.json @@ -20,6 +20,7 @@ "command.focusInput.title": "Fokus ke Field Input", "command.setCustomStoragePath.title": "Atur Path Penyimpanan Kustom", "command.importSettings.title": "Impor Pengaturan", + "command.prepareZooMigration.title": "Siapkan Migrasi Zoo Code", "command.terminal.addToContext.title": "Tambahkan Konten Terminal ke Konteks", "command.terminal.fixCommand.title": "Perbaiki Perintah Ini", "command.terminal.explainCommand.title": "Jelaskan Perintah Ini", diff --git a/src/package.nls.it.json b/src/package.nls.it.json index c94471355d4..e7b8aa2b575 100644 --- a/src/package.nls.it.json +++ b/src/package.nls.it.json @@ -10,6 +10,7 @@ "command.focusInput.title": "Focalizza Campo di Input", "command.setCustomStoragePath.title": "Imposta Percorso di Archiviazione Personalizzato", "command.importSettings.title": "Importa Impostazioni", + "command.prepareZooMigration.title": "Prepara la Migrazione a Zoo Code", "command.terminal.addToContext.title": "Aggiungi Contenuto del Terminale al Contesto", "command.terminal.fixCommand.title": "Correggi Questo Comando", "command.terminal.explainCommand.title": "Spiega Questo Comando", diff --git a/src/package.nls.ja.json b/src/package.nls.ja.json index ff6040d7734..faa42f45cb5 100644 --- a/src/package.nls.ja.json +++ b/src/package.nls.ja.json @@ -20,6 +20,7 @@ "command.focusInput.title": "入力フィールドにフォーカス", "command.setCustomStoragePath.title": "カスタムストレージパスの設定", "command.importSettings.title": "設定をインポート", + "command.prepareZooMigration.title": "Zoo Code への移行を準備", "command.terminal.addToContext.title": "ターミナルの内容をコンテキストに追加", "command.terminal.fixCommand.title": "このコマンドを修正", "command.terminal.explainCommand.title": "このコマンドを説明", diff --git a/src/package.nls.json b/src/package.nls.json index 177b392f775..53828046831 100644 --- a/src/package.nls.json +++ b/src/package.nls.json @@ -20,6 +20,7 @@ "command.focusInput.title": "Focus Input Field", "command.setCustomStoragePath.title": "Set Custom Storage Path", "command.importSettings.title": "Import Settings", + "command.prepareZooMigration.title": "Prepare Zoo Code Migration", "command.terminal.addToContext.title": "Add Terminal Content to Context", "command.terminal.fixCommand.title": "Fix This Command", "command.terminal.explainCommand.title": "Explain This Command", diff --git a/src/package.nls.ko.json b/src/package.nls.ko.json index f0912835b8b..d760ba9e4c8 100644 --- a/src/package.nls.ko.json +++ b/src/package.nls.ko.json @@ -10,6 +10,7 @@ "command.focusInput.title": "입력 필드 포커스", "command.setCustomStoragePath.title": "사용자 지정 저장소 경로 설정", "command.importSettings.title": "설정 가져오기", + "command.prepareZooMigration.title": "Zoo Code 마이그레이션 준비", "command.terminal.addToContext.title": "터미널 내용을 컨텍스트에 추가", "command.terminal.fixCommand.title": "이 명령어 수정", "command.terminal.explainCommand.title": "이 명령어 설명", diff --git a/src/package.nls.nl.json b/src/package.nls.nl.json index fef3ca7219c..eb5ee869da1 100644 --- a/src/package.nls.nl.json +++ b/src/package.nls.nl.json @@ -20,6 +20,7 @@ "command.focusInput.title": "Focus op Invoerveld", "command.setCustomStoragePath.title": "Aangepast Opslagpad Instellen", "command.importSettings.title": "Instellingen Importeren", + "command.prepareZooMigration.title": "Zoo Code-migratie Voorbereiden", "command.terminal.addToContext.title": "Terminalinhoud aan Context Toevoegen", "command.terminal.fixCommand.title": "Repareer Dit Commando", "command.terminal.explainCommand.title": "Leg Dit Commando Uit", diff --git a/src/package.nls.pl.json b/src/package.nls.pl.json index 8c1f66450d1..1ceeee044fa 100644 --- a/src/package.nls.pl.json +++ b/src/package.nls.pl.json @@ -10,6 +10,7 @@ "command.focusInput.title": "Fokus na Pole Wprowadzania", "command.setCustomStoragePath.title": "Ustaw Niestandardową Ścieżkę Przechowywania", "command.importSettings.title": "Importuj Ustawienia", + "command.prepareZooMigration.title": "Przygotuj Migrację do Zoo Code", "command.terminal.addToContext.title": "Dodaj Zawartość Terminala do Kontekstu", "command.terminal.fixCommand.title": "Napraw tę Komendę", "command.terminal.explainCommand.title": "Wyjaśnij tę Komendę", diff --git a/src/package.nls.pt-BR.json b/src/package.nls.pt-BR.json index 84cbf42c097..dbf82a9e0aa 100644 --- a/src/package.nls.pt-BR.json +++ b/src/package.nls.pt-BR.json @@ -10,6 +10,7 @@ "command.focusInput.title": "Focar Campo de Entrada", "command.setCustomStoragePath.title": "Definir Caminho de Armazenamento Personalizado", "command.importSettings.title": "Importar Configurações", + "command.prepareZooMigration.title": "Preparar Migração para o Zoo Code", "command.terminal.addToContext.title": "Adicionar Conteúdo do Terminal ao Contexto", "command.terminal.fixCommand.title": "Corrigir Este Comando", "command.terminal.explainCommand.title": "Explicar Este Comando", diff --git a/src/package.nls.ru.json b/src/package.nls.ru.json index be8df040323..b5938568354 100644 --- a/src/package.nls.ru.json +++ b/src/package.nls.ru.json @@ -20,6 +20,7 @@ "command.focusInput.title": "Фокус на поле ввода", "command.setCustomStoragePath.title": "Указать путь хранения", "command.importSettings.title": "Импортировать настройки", + "command.prepareZooMigration.title": "Подготовить миграцию в Zoo Code", "command.terminal.addToContext.title": "Добавить содержимое терминала в контекст", "command.terminal.fixCommand.title": "Исправить эту команду", "command.terminal.explainCommand.title": "Объяснить эту команду", diff --git a/src/package.nls.tr.json b/src/package.nls.tr.json index a815188e8aa..4b0d4f28b9e 100644 --- a/src/package.nls.tr.json +++ b/src/package.nls.tr.json @@ -10,6 +10,7 @@ "command.focusInput.title": "Giriş Alanına Odaklan", "command.setCustomStoragePath.title": "Özel Depolama Yolunu Ayarla", "command.importSettings.title": "Ayarları İçe Aktar", + "command.prepareZooMigration.title": "Zoo Code Geçişini Hazırla", "command.terminal.addToContext.title": "Terminal İçeriğini Bağlama Ekle", "command.terminal.fixCommand.title": "Bu Komutu Düzelt", "command.terminal.explainCommand.title": "Bu Komutu Açıkla", diff --git a/src/package.nls.vi.json b/src/package.nls.vi.json index 6052080dfa3..3608c37e33e 100644 --- a/src/package.nls.vi.json +++ b/src/package.nls.vi.json @@ -10,6 +10,7 @@ "command.focusInput.title": "Tập Trung vào Trường Nhập", "command.setCustomStoragePath.title": "Đặt Đường Dẫn Lưu Trữ Tùy Chỉnh", "command.importSettings.title": "Nhập Cài Đặt", + "command.prepareZooMigration.title": "Chuẩn bị Di chuyển sang Zoo Code", "command.terminal.addToContext.title": "Thêm Nội Dung Terminal vào Ngữ Cảnh", "command.terminal.fixCommand.title": "Sửa Lệnh Này", "command.terminal.explainCommand.title": "Giải Thích Lệnh Này", diff --git a/src/package.nls.zh-CN.json b/src/package.nls.zh-CN.json index 9254d494d9b..c1343f7b7a4 100644 --- a/src/package.nls.zh-CN.json +++ b/src/package.nls.zh-CN.json @@ -10,6 +10,7 @@ "command.focusInput.title": "聚焦输入框", "command.setCustomStoragePath.title": "设置自定义存储路径", "command.importSettings.title": "导入设置", + "command.prepareZooMigration.title": "准备迁移到 Zoo Code", "command.terminal.addToContext.title": "将终端内容添加到上下文", "command.terminal.fixCommand.title": "修复此命令", "command.terminal.explainCommand.title": "解释此命令", diff --git a/src/package.nls.zh-TW.json b/src/package.nls.zh-TW.json index a8030d69141..1cdbfa261a9 100644 --- a/src/package.nls.zh-TW.json +++ b/src/package.nls.zh-TW.json @@ -10,6 +10,7 @@ "command.focusInput.title": "聚焦輸入框", "command.setCustomStoragePath.title": "設定自訂儲存路徑", "command.importSettings.title": "匯入設定", + "command.prepareZooMigration.title": "準備遷移到 Zoo Code", "command.terminal.addToContext.title": "將終端內容新增到上下文", "command.terminal.fixCommand.title": "修復此命令", "command.terminal.explainCommand.title": "解釋此命令", diff --git a/src/services/zoo-migration/ZooMigration.ts b/src/services/zoo-migration/ZooMigration.ts new file mode 100644 index 00000000000..9ebf2bec2d5 --- /dev/null +++ b/src/services/zoo-migration/ZooMigration.ts @@ -0,0 +1,297 @@ +import * as fs from "fs/promises" +import * as path from "path" +import * as vscode from "vscode" + +import type { GlobalSettings } from "@roo-code/types" + +import { ContextProxy } from "../../core/config/ContextProxy" +import type { ProviderProfiles } from "../../core/config/ProviderSettingsManager" +import { t } from "../../i18n" +import { Package } from "../../shared/package" +import { fileExistsAtPath } from "../../utils/fs" +import { getStorageBasePath } from "../../utils/storage" + +const HANDOFF_SCHEMA_VERSION = 1 +const HANDOFF_DIR_NAME = "zoo-migration" +const HANDOFF_FILE_NAME = "handoff-v1.json" + +const ZOO_REPOSITORY_URL = "https://github.com/Zoo-Code-Org/Zoo-Code" +const ZOO_ANNOUNCEMENT_URL = "https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/" +const ZOO_EXTENSION_ID = process.env.ZOO_CODE_EXTENSION_ID + +const CONFIGURATION_KEYS = [ + "allowedCommands", + "deniedCommands", + "commandExecutionTimeout", + "commandTimeoutAllowlist", + "preventCompletionWithOpenTodos", + "vsCodeLmModelSelector", + "customStoragePath", + "enableCodeActions", + "autoImportSettingsPath", + "maximumIndexedFilesForFileSearch", + "useAgentRules", + "apiRequestTimeout", + "newTaskRequireTodos", + "codeIndex.embeddingBatchSize", + "debug", + "debugProxy.enabled", + "debugProxy.serverUrl", + "debugProxy.tlsInsecure", +] as const + +type ConfigurationValue = { + value: unknown + globalValue?: unknown + workspaceValue?: unknown + workspaceFolderValue?: unknown +} + +type HandoffCopiedData = { + settings?: string + tasks?: string +} + +export type ZooMigrationHandoff = { + schemaVersion: typeof HANDOFF_SCHEMA_VERSION + createdAt: string + source: { + extensionId: string + publisher: string + name: string + version: string + globalStoragePath: string + storageBasePath: string + } + zoo: { + repositoryUrl: string + announcementUrl: string + extensionId?: string + } + containsSecrets: boolean + globalSettings?: GlobalSettings + vscodeConfiguration: Record + providerProfiles?: ProviderProfiles + copiedData: HandoffCopiedData +} + +export type CreateZooMigrationHandoffOptions = { + context: vscode.ExtensionContext + contextProxy: ContextProxy + providerSettingsManager: { + export: () => Promise + } + includeSecrets: boolean + outputChannel?: vscode.OutputChannel +} + +export type CreateZooMigrationHandoffResult = { + handoffPath: string + handoff: ZooMigrationHandoff +} + +export type ShowZooMigrationNoticeOptions = { + outputChannel?: vscode.OutputChannel + delayMs?: number +} + +export async function createZooMigrationHandoff({ + context, + contextProxy, + providerSettingsManager, + includeSecrets, + outputChannel, +}: CreateZooMigrationHandoffOptions): Promise { + const createdAt = new Date().toISOString() + const migrationDir = path.join(context.globalStorageUri.fsPath, HANDOFF_DIR_NAME) + const dataDir = path.join(migrationDir, "data") + const storageBasePath = await getStorageBasePath(context.globalStorageUri.fsPath) + const copiedData: HandoffCopiedData = {} + + await fs.mkdir(dataDir, { recursive: true }) + + await copyDataDirectory({ + sourcePath: path.join(storageBasePath, "settings"), + destinationPath: path.join(dataDir, "settings"), + relativePath: "data/settings", + copiedData, + key: "settings", + outputChannel, + }) + + await copyDataDirectory({ + sourcePath: path.join(storageBasePath, "tasks"), + destinationPath: path.join(dataDir, "tasks"), + relativePath: "data/tasks", + copiedData, + key: "tasks", + outputChannel, + }) + + const globalSettings = await contextProxy.export() + const providerProfiles = includeSecrets ? await providerSettingsManager.export() : undefined + const handoff: ZooMigrationHandoff = { + schemaVersion: HANDOFF_SCHEMA_VERSION, + createdAt, + source: { + extensionId: `${Package.publisher}.${Package.name}`, + publisher: Package.publisher, + name: Package.name, + version: Package.version, + globalStoragePath: context.globalStorageUri.fsPath, + storageBasePath, + }, + zoo: { + repositoryUrl: ZOO_REPOSITORY_URL, + announcementUrl: ZOO_ANNOUNCEMENT_URL, + extensionId: ZOO_EXTENSION_ID, + }, + containsSecrets: includeSecrets, + globalSettings, + vscodeConfiguration: getRooConfigurationValues(), + providerProfiles, + copiedData, + } + + const handoffPath = path.join(migrationDir, HANDOFF_FILE_NAME) + await fs.writeFile(handoffPath, JSON.stringify(handoff, null, 2), "utf-8") + await restrictFilePermissions(handoffPath, outputChannel) + + outputChannel?.appendLine(`[Zoo Migration] Prepared handoff at ${handoffPath}`) + + return { handoffPath, handoff } +} + +export async function showZooMigrationNotice( + context: vscode.ExtensionContext, + { outputChannel, delayMs = 1500 }: ShowZooMigrationNoticeOptions = {}, +): Promise { + if (delayMs > 0) { + await new Promise((resolve) => setTimeout(resolve, delayMs)) + } + + const installAction = t("common:zooMigration.actions.installZoo") + const migrateAction = t("common:zooMigration.actions.prepareMigration") + const learnMoreAction = t("common:zooMigration.actions.learnMore") + const laterAction = t("common:zooMigration.actions.later") + outputChannel?.appendLine(`[Zoo Migration] Showing migration notice for ${Package.version}`) + const result = await vscode.window.showInformationMessage( + t("common:zooMigration.notice"), + installAction, + migrateAction, + learnMoreAction, + laterAction, + ) + + if (!result) { + outputChannel?.appendLine("[Zoo Migration] Migration notice dismissed without selection; it may be shown again") + return + } + + outputChannel?.appendLine(`[Zoo Migration] Migration notice selected: ${result}`) + + if (result === installAction) { + await installOrShowZooExtension() + } else if (result === migrateAction) { + await vscode.commands.executeCommand(`${Package.name}.prepareZooMigration`) + } else if (result === learnMoreAction) { + await vscode.env.openExternal(vscode.Uri.parse(ZOO_REPOSITORY_URL)) + } +} + +export async function installOrShowZooExtension(): Promise { + if (ZOO_EXTENSION_ID) { + await vscode.commands.executeCommand("workbench.extensions.installExtension", ZOO_EXTENSION_ID) + return + } + + await vscode.commands.executeCommand("workbench.extensions.search", "Zoo Code") + await vscode.window.showInformationMessage(t("common:zooMigration.zooNotPublished")) +} + +export async function promptAndCreateZooMigrationHandoff(options: { + context: vscode.ExtensionContext + contextProxy: ContextProxy + providerSettingsManager: CreateZooMigrationHandoffOptions["providerSettingsManager"] + outputChannel?: vscode.OutputChannel +}): Promise { + const includeSecretsAction = t("common:zooMigration.actions.includeApiKeys") + const noSecretsAction = t("common:zooMigration.actions.skipApiKeys") + const cancelAction = t("common:zooMigration.actions.cancel") + const result = await vscode.window.showWarningMessage( + t("common:zooMigration.preparePrompt"), + { modal: true }, + includeSecretsAction, + noSecretsAction, + cancelAction, + ) + + if (!result || result === cancelAction) { + return undefined + } + + const handoffResult = await createZooMigrationHandoff({ + ...options, + includeSecrets: result === includeSecretsAction, + }) + + await vscode.window.showInformationMessage( + t("common:zooMigration.handoffPrepared", { path: handoffResult.handoffPath }), + ) + + return handoffResult +} + +function getRooConfigurationValues(): Record { + const configuration = vscode.workspace.getConfiguration(Package.name) + + return Object.fromEntries( + CONFIGURATION_KEYS.map((key) => { + const inspected = typeof configuration.inspect === "function" ? configuration.inspect(key) : undefined + return [ + key, + { + value: configuration.get(key), + globalValue: inspected?.globalValue, + workspaceValue: inspected?.workspaceValue, + workspaceFolderValue: inspected?.workspaceFolderValue, + }, + ] + }), + ) +} + +async function copyDataDirectory({ + sourcePath, + destinationPath, + relativePath, + copiedData, + key, + outputChannel, +}: { + sourcePath: string + destinationPath: string + relativePath: string + copiedData: HandoffCopiedData + key: keyof HandoffCopiedData + outputChannel?: vscode.OutputChannel +}) { + if (!(await fileExistsAtPath(sourcePath))) { + outputChannel?.appendLine(`[Zoo Migration] No ${key} directory found at ${sourcePath}; skipping`) + return + } + + await fs.rm(destinationPath, { recursive: true, force: true }) + await fs.cp(sourcePath, destinationPath, { recursive: true }) + copiedData[key] = relativePath +} + +async function restrictFilePermissions(filePath: string, outputChannel?: vscode.OutputChannel) { + try { + await fs.chmod(filePath, 0o600) + } catch (error) { + outputChannel?.appendLine( + `[Zoo Migration] Could not restrict handoff permissions: ${error instanceof Error ? error.message : String(error)}`, + ) + } +} diff --git a/src/services/zoo-migration/__tests__/ZooMigration.spec.ts b/src/services/zoo-migration/__tests__/ZooMigration.spec.ts new file mode 100644 index 00000000000..3c34e0e90af --- /dev/null +++ b/src/services/zoo-migration/__tests__/ZooMigration.spec.ts @@ -0,0 +1,208 @@ +import * as fs from "fs/promises" +import * as os from "os" +import * as path from "path" +import * as vscode from "vscode" + +import { createZooMigrationHandoff, showZooMigrationNotice } from "../ZooMigration" + +describe("createZooMigrationHandoff", () => { + let tmpDir: string + + beforeEach(async () => { + tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "roo-zoo-migration-")) + vi.spyOn(vscode.workspace, "getConfiguration").mockReturnValue({ + get: vi.fn((key: string, defaultValue?: unknown) => { + if (key === "customStoragePath") { + return "" + } + return defaultValue + }), + inspect: vi.fn((key: string) => ({ + globalValue: key === "allowedCommands" ? ["git diff"] : undefined, + })), + } as any) + }) + + afterEach(async () => { + vi.restoreAllMocks() + await fs.rm(tmpDir, { recursive: true, force: true }) + }) + + it("creates a copy-based handoff with settings and tasks but excludes cache data", async () => { + const context = makeContext(tmpDir) + await fs.mkdir(path.join(tmpDir, "settings"), { recursive: true }) + await fs.mkdir(path.join(tmpDir, "tasks", "task-1"), { recursive: true }) + await fs.mkdir(path.join(tmpDir, "cache"), { recursive: true }) + await fs.writeFile(path.join(tmpDir, "settings", "mcp_settings.json"), "{}") + await fs.writeFile(path.join(tmpDir, "tasks", "task-1", "history_item.json"), "{}") + await fs.writeFile(path.join(tmpDir, "cache", "openrouter_models.json"), "{}") + + const result = await createZooMigrationHandoff({ + context, + contextProxy: { export: vi.fn().mockResolvedValue({ mode: "code" }) } as any, + providerSettingsManager: { export: vi.fn().mockResolvedValue({ currentApiConfigName: "default" }) }, + includeSecrets: false, + }) + + const handoffJson = JSON.parse(await fs.readFile(result.handoffPath, "utf-8")) + expect(handoffJson.containsSecrets).toBe(false) + expect(handoffJson.providerProfiles).toBeUndefined() + expect(handoffJson.globalSettings).toEqual({ mode: "code" }) + expect(handoffJson.copiedData).toEqual({ + settings: "data/settings", + tasks: "data/tasks", + }) + await expect( + fs.readFile(path.join(tmpDir, "zoo-migration", "data", "settings", "mcp_settings.json"), "utf-8"), + ).resolves.toBe("{}") + await expect( + fs.readFile(path.join(tmpDir, "zoo-migration", "data", "tasks", "task-1", "history_item.json"), "utf-8"), + ).resolves.toBe("{}") + await expect( + fs.access(path.join(tmpDir, "zoo-migration", "data", "cache", "openrouter_models.json")), + ).rejects.toThrow() + }) + + it("exports provider profiles only when the user opts into secret migration", async () => { + const context = makeContext(tmpDir) + const providerProfiles = { + currentApiConfigName: "default", + apiConfigs: { + default: { + id: "profile-1", + apiProvider: "openai", + openAiApiKey: "secret-key", + }, + }, + } + + const result = await createZooMigrationHandoff({ + context, + contextProxy: { export: vi.fn().mockResolvedValue({}) } as any, + providerSettingsManager: { export: vi.fn().mockResolvedValue(providerProfiles as any) }, + includeSecrets: true, + }) + + const handoffJson = JSON.parse(await fs.readFile(result.handoffPath, "utf-8")) + expect(handoffJson.containsSecrets).toBe(true) + expect(handoffJson.providerProfiles).toEqual(providerProfiles) + }) + + it("uses a configured custom storage path as the source data path", async () => { + const customStoragePath = path.join(tmpDir, "custom-storage") + const context = makeContext(path.join(tmpDir, "global-storage")) + await fs.mkdir(path.join(customStoragePath, "settings"), { recursive: true }) + await fs.writeFile(path.join(customStoragePath, "settings", "custom_modes.yaml"), "customModes: []\n") + + vi.spyOn(vscode.workspace, "getConfiguration").mockReturnValue({ + get: vi.fn((key: string, defaultValue?: unknown) => { + if (key === "customStoragePath") { + return customStoragePath + } + return defaultValue + }), + inspect: vi.fn(), + } as any) + + const result = await createZooMigrationHandoff({ + context, + contextProxy: { export: vi.fn().mockResolvedValue({}) } as any, + providerSettingsManager: { export: vi.fn().mockResolvedValue({ currentApiConfigName: "default" }) }, + includeSecrets: false, + }) + + expect(result.handoff.source.storageBasePath).toBe(customStoragePath) + await expect( + fs.readFile( + path.join(tmpDir, "global-storage", "zoo-migration", "data", "settings", "custom_modes.yaml"), + "utf-8", + ), + ).resolves.toBe("customModes: []\n") + }) +}) + +describe("showZooMigrationNotice", () => { + afterEach(() => { + vi.restoreAllMocks() + }) + + it("shows the migration notice on activation", async () => { + const update = vi.fn().mockResolvedValue(undefined) + const context = { + globalState: { + get: vi.fn().mockReturnValue(undefined), + update, + }, + } as any + const outputChannel = { appendLine: vi.fn() } as any + const showInformationMessage = vi + .spyOn(vscode.window, "showInformationMessage") + .mockImplementation((async (_message: string, ...actions: unknown[]) => actions.at(-1)) as any) + + await showZooMigrationNotice(context, { outputChannel, delayMs: 0 }) + + expect(showInformationMessage).toHaveBeenCalled() + expect(update).not.toHaveBeenCalled() + expect(outputChannel.appendLine).toHaveBeenCalledWith("[Zoo Migration] Showing migration notice for 3.53.1") + }) + + it("does not mark the notice shown when VS Code dismisses it without a user selection", async () => { + const update = vi.fn().mockResolvedValue(undefined) + const context = { + globalState: { + get: vi.fn().mockReturnValue(undefined), + update, + }, + } as any + vi.spyOn(vscode.window, "showInformationMessage").mockResolvedValue(undefined) + + await showZooMigrationNotice(context, { delayMs: 0 }) + + expect(update).not.toHaveBeenCalled() + }) + + it("does not mark the notice shown when the user chooses Learn More", async () => { + const update = vi.fn().mockResolvedValue(undefined) + const context = { + globalState: { + get: vi.fn().mockReturnValue(undefined), + update, + }, + } as any + vi.spyOn(vscode.window, "showInformationMessage").mockImplementation((async ( + _message: string, + ...actions: unknown[] + ) => actions.at(2)) as any) + const openExternal = vi.spyOn(vscode.env, "openExternal").mockResolvedValue(true) + + await showZooMigrationNotice(context, { delayMs: 0 }) + + expect(openExternal).toHaveBeenCalled() + expect(update).not.toHaveBeenCalled() + }) + + it("shows the notice even when older persistent state says it was already shown", async () => { + const context = { + globalState: { + get: vi.fn().mockReturnValue(true), + update: vi.fn(), + }, + } as any + const showInformationMessage = vi.spyOn(vscode.window, "showInformationMessage").mockResolvedValue(undefined) + + await showZooMigrationNotice(context, { delayMs: 0 }) + + expect(showInformationMessage).toHaveBeenCalled() + expect(context.globalState.update).not.toHaveBeenCalled() + }) +}) + +function makeContext(globalStoragePath: string): vscode.ExtensionContext { + return { + globalStorageUri: vscode.Uri.file(globalStoragePath), + globalState: { + get: vi.fn(), + update: vi.fn().mockResolvedValue(undefined), + }, + } as any +} From 0f307d8cd7b317ddea51ffd1a0824363aa27caa0 Mon Sep 17 00:00:00 2001 From: Elliott de Launay Date: Mon, 4 May 2026 01:49:46 +0000 Subject: [PATCH 2/6] feat(Announcement): provide information for new extension --- .codex | 0 CHANGELOG.md | 6 ++ packages/types/src/vscode-extension-host.ts | 2 + src/core/webview/ClineProvider.ts | 2 +- src/core/webview/webviewMessageHandler.ts | 20 ++++++ .../src/components/chat/Announcement.tsx | 45 +++++++++----- .../chat/__tests__/Announcement.spec.tsx | 61 ++++++++++++------- webview-ui/src/i18n/locales/ca/chat.json | 18 ++++-- webview-ui/src/i18n/locales/de/chat.json | 18 ++++-- webview-ui/src/i18n/locales/en/chat.json | 18 ++++-- webview-ui/src/i18n/locales/es/chat.json | 18 ++++-- webview-ui/src/i18n/locales/fr/chat.json | 18 ++++-- webview-ui/src/i18n/locales/hi/chat.json | 18 ++++-- webview-ui/src/i18n/locales/id/chat.json | 18 ++++-- webview-ui/src/i18n/locales/it/chat.json | 18 ++++-- webview-ui/src/i18n/locales/ja/chat.json | 18 ++++-- webview-ui/src/i18n/locales/ko/chat.json | 18 ++++-- webview-ui/src/i18n/locales/nl/chat.json | 18 ++++-- webview-ui/src/i18n/locales/pl/chat.json | 18 ++++-- webview-ui/src/i18n/locales/pt-BR/chat.json | 18 ++++-- webview-ui/src/i18n/locales/ru/chat.json | 18 ++++-- webview-ui/src/i18n/locales/tr/chat.json | 18 ++++-- webview-ui/src/i18n/locales/vi/chat.json | 18 ++++-- webview-ui/src/i18n/locales/zh-CN/chat.json | 18 ++++-- webview-ui/src/i18n/locales/zh-TW/chat.json | 18 ++++-- 25 files changed, 348 insertions(+), 112 deletions(-) create mode 100644 .codex diff --git a/.codex b/.codex new file mode 100644 index 00000000000..e69de29bb2d diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b25d32598a..ce40eb29375 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Roo Code Changelog +## 3.53.1 + +### Patch Changes + +- Add the Zoo Code migration handoff flow, including a VS Code command, activation notification, and release announcement actions to prepare Roo data for import into Zoo Code. + ## 3.53.0 ### Minor Changes diff --git a/packages/types/src/vscode-extension-host.ts b/packages/types/src/vscode-extension-host.ts index b20539afe49..6264371b461 100644 --- a/packages/types/src/vscode-extension-host.ts +++ b/packages/types/src/vscode-extension-host.ts @@ -427,6 +427,8 @@ export interface WebviewMessage { | "terminalOperation" | "clearTask" | "didShowAnnouncement" + | "prepareZooMigration" + | "installZooExtension" | "selectImages" | "exportCurrentTask" | "shareCurrentTask" diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 1106d340050..cf9b6f901a1 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -169,7 +169,7 @@ export class ClineProvider public isViewLaunched = false public settingsImportedAt?: number - public readonly latestAnnouncementId = "apr-2026-v3.53.0-community-handoff-gpt55-opus47" // v3.53.0 Community handoff, GPT-5.5, Claude Opus 4.7, checkpoint navigation + public readonly latestAnnouncementId = "may-2026-v3.53.1-zoo-migration-handoff" // v3.53.1 Zoo migration handoff public readonly providerSettingsManager: ProviderSettingsManager public readonly customModesManager: CustomModesManager diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index e3b8c1bea88..f7e48b7f74a 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -54,6 +54,10 @@ import { openImage, saveImage } from "../../integrations/misc/image-handler" import { selectImages } from "../../integrations/misc/process-images" import { getTheme } from "../../integrations/theme/getTheme" import { searchWorkspaceFiles } from "../../services/search/file-search" +import { + installOrShowZooExtension, + promptAndCreateZooMigrationHandoff, +} from "../../services/zoo-migration/ZooMigration" import { fileExistsAtPath } from "../../utils/fs" import { playTts, setTtsEnabled, setTtsSpeed, stopTts } from "../../utils/tts" import { searchCommits } from "../../utils/git" @@ -766,6 +770,22 @@ export const webviewMessageHandler = async ( await updateGlobalState("lastShownAnnouncementId", provider.latestAnnouncementId) await provider.postStateToWebview() break + case "prepareZooMigration": + try { + await promptAndCreateZooMigrationHandoff({ + context: provider.context, + contextProxy: provider.contextProxy, + providerSettingsManager: provider.providerSettingsManager, + }) + } catch (error) { + const message = error instanceof Error ? error.message : String(error) + provider.log(`[Zoo Migration] Failed to prepare migration handoff from announcement: ${message}`) + await vscode.window.showErrorMessage(t("common:zooMigration.handoffFailed", { error: message })) + } + break + case "installZooExtension": + await installOrShowZooExtension() + break case "selectImages": const images = await selectImages() await provider.postMessageToWebview({ diff --git a/webview-ui/src/components/chat/Announcement.tsx b/webview-ui/src/components/chat/Announcement.tsx index 180767be440..715a572f5dd 100644 --- a/webview-ui/src/components/chat/Announcement.tsx +++ b/webview-ui/src/components/chat/Announcement.tsx @@ -1,7 +1,7 @@ import { memo, type ReactNode, useState } from "react" import { Trans } from "react-i18next" import { SiDiscord, SiReddit, SiX } from "react-icons/si" -import { VSCodeLink } from "@vscode/webview-ui-toolkit/react" +import { VSCodeButton, VSCodeLink } from "@vscode/webview-ui-toolkit/react" import { Package } from "@roo/package" import { useAppTranslation } from "@src/i18n/TranslationContext" @@ -40,7 +40,7 @@ const Announcement = ({ hideAnnouncement }: AnnouncementProps) => { {t("chat:announcement.title", { version: Package.version })}
- {/* Community Handoff Notice */} + {/* Zoo Handoff Notice */}

{t("chat:announcement.handoff.heading")} @@ -48,26 +48,39 @@ const Announcement = ({ hideAnnouncement }: AnnouncementProps) => {

}} />

- { - e.preventDefault() - vscode.postMessage({ - type: "openExternal", - url: "https://x.com/mattrubens/status/2046636598859559114", - }) - }}> + {t("chat:announcement.handoff.readMore")}
- {/* Regular Release Highlights */} + {/* Zoo Migration */} +
+

{t("chat:announcement.zooMigration.heading")}

+

{t("chat:announcement.zooMigration.description")}

+
+ { + vscode.postMessage({ type: "prepareZooMigration" }) + }}> + {t("chat:announcement.zooMigration.prepareButton")} + + { + vscode.postMessage({ type: "installZooExtension" }) + }}> + {t("chat:announcement.zooMigration.installButton")} + +
+
+ + {/* Migration Details */}
-

{t("chat:announcement.release.heading")}

+

{t("chat:announcement.zooMigration.detailsHeading")}

    -
  • {t("chat:announcement.release.gpt55")}
  • -
  • {t("chat:announcement.release.claudeOpus47")}
  • -
  • {t("chat:announcement.release.checkpointNav")}
  • +
  • {t("chat:announcement.zooMigration.copiesData")}
  • +
  • {t("chat:announcement.zooMigration.keepsOriginals")}
  • +
  • {t("chat:announcement.zooMigration.apiKeysOptIn")}
diff --git a/webview-ui/src/components/chat/__tests__/Announcement.spec.tsx b/webview-ui/src/components/chat/__tests__/Announcement.spec.tsx index 84254ae9e9c..bcef5937d16 100644 --- a/webview-ui/src/components/chat/__tests__/Announcement.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/Announcement.spec.tsx @@ -2,6 +2,8 @@ import React from "react" import { render, screen } from "@/utils/test-utils" +import { vscode } from "@src/utils/vscode" + import Announcement from "../Announcement" vi.mock("@src/utils/vscode", () => ({ @@ -12,11 +14,16 @@ vi.mock("@src/utils/vscode", () => ({ vi.mock("@roo/package", () => ({ Package: { - version: "3.53.0", + version: "3.53.1", }, })) vi.mock("@vscode/webview-ui-toolkit/react", () => ({ + VSCodeButton: ({ children, onClick, ...props }: React.ButtonHTMLAttributes) => ( + + ), VSCodeLink: ({ children, href, onClick, ...props }: React.AnchorHTMLAttributes) => ( {children} @@ -32,18 +39,24 @@ vi.mock("@src/i18n/TranslationContext", () => ({ useAppTranslation: () => ({ t: (key: string, options?: { version?: string }) => { const translations: Record = { - "chat:announcement.release.heading": "What's New:", - "chat:announcement.release.gpt55": - "GPT-5.5 via OpenAI Codex: Added GPT-5.5 support in the OpenAI Codex provider so you can use the latest model straight from Roo Code.", - "chat:announcement.release.claudeOpus47": - "Claude Opus 4.7 on Vertex AI: Added Claude Opus 4.7 to the Vertex AI provider for Anthropic's newest flagship reasoning model.", - "chat:announcement.release.checkpointNav": - "Previous Checkpoint Navigation: Added controls in chat to jump back through prior checkpoints, with full i18n support.", - "chat:announcement.handoff.heading": "The Roo Code plugin is not going away.", + "chat:announcement.handoff.heading": "Roo is back as Zoo Code.", + "chat:announcement.handoff.readMore": "Read the Zoo announcement", + "chat:announcement.zooMigration.heading": "Prepare your Zoo migration", + "chat:announcement.zooMigration.description": + "Create a handoff bundle from Roo's local storage. Roo keeps your original data in place and asks before including API keys.", + "chat:announcement.zooMigration.prepareButton": "Prepare Migration", + "chat:announcement.zooMigration.installButton": "Install Zoo", + "chat:announcement.zooMigration.detailsHeading": "What this does:", + "chat:announcement.zooMigration.copiesData": + "Copies your Roo settings and task history into a Zoo migration folder.", + "chat:announcement.zooMigration.keepsOriginals": + "Leaves your existing Roo folders untouched so you can verify the handoff first.", + "chat:announcement.zooMigration.apiKeysOptIn": + "Includes provider profiles and API keys only if you explicitly choose to include them.", } if (key === "chat:announcement.title") { - return `Roo Code ${options?.version ?? ""} Released` + return `Roo Code ${options?.version ?? ""}: Move to Zoo Code` } return translations[key] ?? key @@ -52,23 +65,15 @@ vi.mock("@src/i18n/TranslationContext", () => ({ })) describe("Announcement", () => { - it("renders the v3.53.0 announcement title and highlights", () => { + it("renders the v3.53.1 Zoo migration announcement", () => { render() - expect(screen.getByText("Roo Code 3.53.0 Released")).toBeInTheDocument() - expect( - screen.getByText( - "GPT-5.5 via OpenAI Codex: Added GPT-5.5 support in the OpenAI Codex provider so you can use the latest model straight from Roo Code.", - ), - ).toBeInTheDocument() - expect( - screen.getByText( - "Claude Opus 4.7 on Vertex AI: Added Claude Opus 4.7 to the Vertex AI provider for Anthropic's newest flagship reasoning model.", - ), - ).toBeInTheDocument() + expect(screen.getByText("Roo Code 3.53.1: Move to Zoo Code")).toBeInTheDocument() + expect(screen.getByText("Roo is back as Zoo Code.")).toBeInTheDocument() + expect(screen.getByText("Prepare your Zoo migration")).toBeInTheDocument() expect( screen.getByText( - "Previous Checkpoint Navigation: Added controls in chat to jump back through prior checkpoints, with full i18n support.", + "Create a handoff bundle from Roo's local storage. Roo keeps your original data in place and asks before including API keys.", ), ).toBeInTheDocument() }) @@ -78,4 +83,14 @@ describe("Announcement", () => { expect(screen.getAllByRole("listitem")).toHaveLength(3) }) + + it("posts Zoo migration actions from the announcement", () => { + render() + + screen.getByRole("button", { name: "Prepare Migration" }).click() + expect(vscode.postMessage).toHaveBeenCalledWith({ type: "prepareZooMigration" }) + + screen.getByRole("button", { name: "Install Zoo" }).click() + expect(vscode.postMessage).toHaveBeenCalledWith({ type: "installZooExtension" }) + }) }) diff --git a/webview-ui/src/i18n/locales/ca/chat.json b/webview-ui/src/i18n/locales/ca/chat.json index 889927e8636..fa0fc4efe5b 100644 --- a/webview-ui/src/i18n/locales/ca/chat.json +++ b/webview-ui/src/i18n/locales/ca/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "Aprovació automàtica habilitada. Seleccionant en {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}} Llançat", + "title": "Roo Code {{version}}: passa a Zoo Code", "support": "Si us plau, dona suport a Roo Code fent una estrella al nostre GitHub.", "stealthModel": { "feature": "Model stealth GRATUÏT per temps limitat - Code Supernova: Ara actualitzat amb una finestra de context d'1M tokens! Un model de codificació agèntica versàtil que suporta entrades d'imatges, disponible a través de Roo Code Cloud.", @@ -348,9 +348,9 @@ "goToSettingsButton": "Anar a Configuració" }, "handoff": { - "heading": "El plugin Roo Code no desapareix.", - "description": "Potser has vist l'anunci recent que Roo Code ha arribat a 3 milions d'instal·lacions i que l'equip original es bolca completament amb Roomote. Sabem que aquesta notícia ha estat dura per a molts de vosaltres. Aquest plugin ens importa molt, tant a nosaltres com a tu, i t'escoltem. La bona notícia: un equip de la comunitat ha donat un pas endavant per portar Roo Code cap endavant, i estem treballant amb ells en un relleu oficial perquè el plugin en què confies continuï rebent manteniment i millores.", - "readMore": "Llegir l'anunci original de Matt Rubens" + "heading": "Roo torna com a Zoo Code.", + "description": "Aquesta darrera actualització de Roo Code t’ajuda a moure la configuració local a la nova extensió Zoo Code mantinguda per la comunitat. Roo continua instal·lat prou temps per preparar un paquet de traspàs per a Zoo.", + "readMore": "Llegeix l’anunci de Zoo" }, "release": { "heading": "Què hi ha de nou:", @@ -363,6 +363,16 @@ "specialized": "Presentem Explainer, Planner i Coder - tres agents al núvol especialitzats per millorar els teus fluxos de treball.", "description": "Els agents treballen junts al núvol i es poden activar des del web o mitjançant Slack.", "tryButton": "Prova els Agents al Núvol" + }, + "zooMigration": { + "heading": "Prepara la migració a Zoo", + "description": "Crea un paquet de traspàs des de l’emmagatzematge local de Roo. Roo manté les dades originals al seu lloc i et demana permís abans d’incloure claus d’API.", + "prepareButton": "Prepara la migració", + "installButton": "Instal·la Zoo", + "detailsHeading": "Què fa això:", + "copiesData": "Copia la configuració de Roo i l’historial de tasques a una carpeta de migració de Zoo.", + "keepsOriginals": "Deixa intactes les carpetes existents de Roo perquè puguis verificar primer el traspàs.", + "apiKeysOptIn": "Inclou perfils de proveïdor i claus d’API només si tries explícitament incloure’ls." } }, "costs": { diff --git a/webview-ui/src/i18n/locales/de/chat.json b/webview-ui/src/i18n/locales/de/chat.json index 8212bc0ab00..200a8edc6cb 100644 --- a/webview-ui/src/i18n/locales/de/chat.json +++ b/webview-ui/src/i18n/locales/de/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "Automatische Genehmigung aktiviert. Wähle in {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}} veröffentlicht", + "title": "Roo Code {{version}}: Zu Zoo Code wechseln", "support": "Bitte unterstütze Roo Code, indem du uns auf GitHub einen Stern gibst.", "stealthModel": { "feature": "Zeitlich begrenztes KOSTENLOSES Stealth-Modell - Code Supernova: Jetzt mit einem 1M Token Kontextfenster erweitert! Ein vielseitiges agentisches Coding-Modell, das Bildeingaben unterstützt und über Roo Code Cloud zugänglich ist.", @@ -348,9 +348,9 @@ "goToSettingsButton": "Zu den Einstellungen" }, "handoff": { - "heading": "Das Roo Code-Plugin verschwindet nicht.", - "description": "Du hast vielleicht die neuliche Ankündigung gesehen, dass Roo Code 3 Millionen Installationen erreicht hat und das ursprüngliche Team sich voll auf Roomote konzentriert. Wir wissen, dass diese Nachricht für viele von euch schwer war. Dieses Plugin bedeutet uns und dir sehr viel, und wir hören dich. Die gute Nachricht: ein Community-Team hat sich bereit erklärt, Roo Code weiterzuführen, und wir arbeiten mit ihnen an einer offiziellen Übergabe, damit das Plugin, auf das du dich verlässt, weiterhin gepflegt und verbessert wird.", - "readMore": "Die ursprüngliche Ankündigung von Matt Rubens lesen" + "heading": "Roo ist als Zoo Code zurück.", + "description": "Dieses letzte Roo Code-Update hilft dir, deine lokale Einrichtung zur neuen, von der Community gepflegten Zoo Code-Erweiterung zu verschieben. Roo bleibt lange genug installiert, um ein Übergabepaket für Zoo vorzubereiten.", + "readMore": "Zoo-Ankündigung lesen" }, "release": { "heading": "Was ist neu:", @@ -363,6 +363,16 @@ "specialized": "Wir stellen Explainer, Planner und Coder vor - drei spezialisierte Cloud-Agenten zur Verbesserung deiner Workflows.", "description": "Die Agenten arbeiten zusammen in der Cloud und können vom Web oder über Slack ausgelöst werden.", "tryButton": "Probiere Cloud-Agenten aus" + }, + "zooMigration": { + "heading": "Bereite deine Zoo-Migration vor", + "description": "Erstelle ein Übergabepaket aus Roos lokalem Speicher. Roo lässt deine Originaldaten an Ort und Stelle und fragt nach, bevor API-Schlüssel eingeschlossen werden.", + "prepareButton": "Migration vorbereiten", + "installButton": "Zoo installieren", + "detailsHeading": "Was dabei passiert:", + "copiesData": "Kopiert deine Roo-Einstellungen und deinen Aufgabenverlauf in einen Zoo-Migrationsordner.", + "keepsOriginals": "Lässt deine vorhandenen Roo-Ordner unverändert, damit du die Übergabe zuerst prüfen kannst.", + "apiKeysOptIn": "Schließt Anbieterprofile und API-Schlüssel nur ein, wenn du dich ausdrücklich dafür entscheidest." } }, "costs": { diff --git a/webview-ui/src/i18n/locales/en/chat.json b/webview-ui/src/i18n/locales/en/chat.json index 6f1badac1f1..eae7bb0f3ba 100644 --- a/webview-ui/src/i18n/locales/en/chat.json +++ b/webview-ui/src/i18n/locales/en/chat.json @@ -357,7 +357,7 @@ "triggerLabelAll": "BRRR" }, "announcement": { - "title": "Roo Code {{version}} Released", + "title": "Roo Code {{version}}: Move to Zoo Code", "support": "Please support Roo Code by starring us on GitHub.", "stealthModel": { "feature": "Limited-time FREE stealth model - Code Supernova: Now upgraded with a 1M token context window! A versatile agentic coding model that supports image inputs, accessible through Roo Code Cloud.", @@ -367,9 +367,9 @@ "goToSettingsButton": "Go to Settings" }, "handoff": { - "heading": "The Roo Code plugin is not going away.", - "description": "You may have seen the recent announcement that Roo Code hit 3 million installs and the original team is going all-in on Roomote. We know that news was hard for a lot of you. This plugin means a lot to us and to you, and we hear you. The good news: a community team has stepped up to carry Roo Code forward, and we're working with them on an official handoff so the plugin you rely on keeps getting maintained and improved.", - "readMore": "Read the original announcement from Matt Rubens" + "heading": "Roo is back as Zoo Code.", + "description": "This final Roo Code update helps you move your local setup to the new Zoo Code extension maintained by the community. Roo stays installed long enough to prepare a handoff bundle for Zoo.", + "readMore": "Read the Zoo announcement" }, "release": { "heading": "What's New:", @@ -382,6 +382,16 @@ "specialized": "Introducing Explainer, Planner, and Coder - three specialized cloud agents to enhance your workflows.", "description": "The agents work together in the cloud and can be triggered from the web or through Slack.", "tryButton": "Try Cloud Agents" + }, + "zooMigration": { + "heading": "Prepare your Zoo migration", + "description": "Create a handoff bundle from Roo's local storage. Roo keeps your original data in place and asks before including API keys.", + "prepareButton": "Prepare Migration", + "installButton": "Install Zoo", + "detailsHeading": "What this does:", + "copiesData": "Copies your Roo settings and task history into a Zoo migration folder.", + "keepsOriginals": "Leaves your existing Roo folders untouched so you can verify the handoff first.", + "apiKeysOptIn": "Includes provider profiles and API keys only if you explicitly choose to include them." } }, "reasoning": { diff --git a/webview-ui/src/i18n/locales/es/chat.json b/webview-ui/src/i18n/locales/es/chat.json index 61f398ea6a6..95f02394c4c 100644 --- a/webview-ui/src/i18n/locales/es/chat.json +++ b/webview-ui/src/i18n/locales/es/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "Aprobación automática habilitada. Seleccionando en {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}} publicado", + "title": "Roo Code {{version}}: pásate a Zoo Code", "support": "Por favor, apoya a Roo Code dándonos una estrella en GitHub.", "stealthModel": { "feature": "Modelo stealth GRATUITO por tiempo limitado - Code Supernova: ¡Ahora actualizado con una ventana de contexto de 1M tokens! Un modelo de codificación agéntica versátil que soporta entradas de imágenes, accesible a través de Roo Code Cloud.", @@ -348,9 +348,9 @@ "goToSettingsButton": "Ir a Configuración" }, "handoff": { - "heading": "El plugin de Roo Code no va a desaparecer.", - "description": "Puede que hayas visto el anuncio reciente de que Roo Code ha llegado a 3 millones de instalaciones y que el equipo original se está volcando por completo en Roomote. Sabemos que esa noticia fue dura para muchos de vosotros. Este plugin significa mucho para nosotros y para ti, y te escuchamos. La buena noticia: un equipo de la comunidad ha dado un paso adelante para seguir adelante con Roo Code, y estamos trabajando con ellos en un relevo oficial para que el plugin del que dependes siga recibiendo mantenimiento y mejoras.", - "readMore": "Leer el anuncio original de Matt Rubens" + "heading": "Roo vuelve como Zoo Code.", + "description": "Esta última actualización de Roo Code te ayuda a mover tu configuración local a la nueva extensión Zoo Code mantenida por la comunidad. Roo seguirá instalado el tiempo suficiente para preparar un paquete de traspaso para Zoo.", + "readMore": "Leer el anuncio de Zoo" }, "release": { "heading": "Qué hay de nuevo:", @@ -363,6 +363,16 @@ "specialized": "Presentamos Explainer, Planner y Coder - tres agentes en la nube especializados para mejorar tus flujos de trabajo.", "description": "Los agentes trabajan juntos en la nube y se pueden activar desde la web o mediante Slack.", "tryButton": "Prueba los Agentes en la Nube" + }, + "zooMigration": { + "heading": "Prepara tu migración a Zoo", + "description": "Crea un paquete de traspaso desde el almacenamiento local de Roo. Roo mantiene tus datos originales en su sitio y te pregunta antes de incluir claves de API.", + "prepareButton": "Preparar migración", + "installButton": "Instalar Zoo", + "detailsHeading": "Qué hace esto:", + "copiesData": "Copia tu configuración de Roo y el historial de tareas en una carpeta de migración de Zoo.", + "keepsOriginals": "Deja intactas tus carpetas actuales de Roo para que puedas verificar primero el traspaso.", + "apiKeysOptIn": "Incluye perfiles de proveedor y claves de API solo si eliges incluirlos explícitamente." } }, "costs": { diff --git a/webview-ui/src/i18n/locales/fr/chat.json b/webview-ui/src/i18n/locales/fr/chat.json index 151aaf578bb..87d466355a8 100644 --- a/webview-ui/src/i18n/locales/fr/chat.json +++ b/webview-ui/src/i18n/locales/fr/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "Approbation automatique activée. Sélection dans {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}} est sortie", + "title": "Roo Code {{version}} : passer à Zoo Code", "support": "Soutiens Roo Code en nous donnant une étoile sur GitHub.", "stealthModel": { "feature": "Modèle stealth GRATUIT pour une durée limitée - Code Supernova : Maintenant amélioré avec une fenêtre de contexte de 1M tokens ! Un modèle de codage agentique polyvalent qui prend en charge les entrées d'images, accessible via Roo Code Cloud.", @@ -348,9 +348,9 @@ "goToSettingsButton": "Aller aux Paramètres" }, "handoff": { - "heading": "L'extension Roo Code ne va pas disparaître.", - "description": "Tu as peut-être vu l'annonce récente : Roo Code a franchi les 3 millions d'installations et l'équipe d'origine se consacre désormais entièrement à Roomote. On sait que cette nouvelle a été difficile pour beaucoup d'entre vous. Cette extension compte énormément pour nous comme pour toi, et on t'entend. La bonne nouvelle : une équipe de la communauté a décidé de prendre le relais pour faire avancer Roo Code, et on travaille avec eux sur une transmission officielle pour que l'extension sur laquelle tu comptes continue d'être maintenue et améliorée.", - "readMore": "Lire l'annonce originale de Matt Rubens" + "heading": "Roo revient sous le nom Zoo Code.", + "description": "Cette dernière mise à jour de Roo Code t’aide à déplacer ta configuration locale vers la nouvelle extension Zoo Code maintenue par la communauté. Roo reste installé assez longtemps pour préparer un paquet de transfert pour Zoo.", + "readMore": "Lire l’annonce de Zoo" }, "release": { "heading": "Quoi de neuf :", @@ -363,6 +363,16 @@ "specialized": "Présentation d'Explainer, Planner et Coder - trois agents cloud spécialisés pour améliorer tes workflows.", "description": "Les agents travaillent ensemble dans le cloud et peuvent être déclenchés depuis le web ou via Slack.", "tryButton": "Essayer les Agents Cloud" + }, + "zooMigration": { + "heading": "Prépare ta migration vers Zoo", + "description": "Crée un paquet de transfert depuis le stockage local de Roo. Roo laisse tes données d’origine en place et te demande confirmation avant d’inclure les clés API.", + "prepareButton": "Préparer la migration", + "installButton": "Installer Zoo", + "detailsHeading": "Ce que cela fait :", + "copiesData": "Copie tes paramètres Roo et ton historique de tâches dans un dossier de migration Zoo.", + "keepsOriginals": "Laisse tes dossiers Roo existants intacts pour que tu puisses vérifier le transfert d’abord.", + "apiKeysOptIn": "Inclut les profils de fournisseurs et les clés API uniquement si tu choisis explicitement de les inclure." } }, "costs": { diff --git a/webview-ui/src/i18n/locales/hi/chat.json b/webview-ui/src/i18n/locales/hi/chat.json index 6529cc068e2..f303d0ebd2d 100644 --- a/webview-ui/src/i18n/locales/hi/chat.json +++ b/webview-ui/src/i18n/locales/hi/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "ऑटो-अनुमोदन सक्षम है। {{seconds}}s में चयन किया जा रहा है…" }, "announcement": { - "title": "Roo Code {{version}} रिलीज़ हुआ", + "title": "Roo Code {{version}}: Zoo Code पर जाएँ", "support": "कृपया GitHub पर हमें स्टार देकर Roo Code का समर्थन करें।", "stealthModel": { "feature": "सीमित समय के लिए मुफ़्त स्टेल्थ मॉडल - Code Supernova: अब 1M Token संदर्भ विंडो के साथ अपग्रेड हुआ! एक बहुमुखी एजेंटिक कोडिंग मॉडल जो छवि इनपुट का समर्थन करता है, Roo Code Cloud के माध्यम से उपलब्ध।", @@ -348,9 +348,9 @@ "goToSettingsButton": "सेटिंग्स पर जाएं" }, "handoff": { - "heading": "Roo Code plugin कहीं नहीं जा रहा है।", - "description": "आपने शायद हाल ही की घोषणा देखी होगी कि Roo Code ने 30 लाख installs पार कर लिए हैं और मूल टीम पूरी तरह Roomote पर focus कर रही है। हम जानते हैं कि यह खबर आप में से कई के लिए कठिन थी। यह plugin हमारे और आपके लिए बहुत मायने रखता है, और हम आपकी बात सुन रहे हैं। अच्छी खबर: एक community team ने Roo Code को आगे ले जाने की ज़िम्मेदारी ली है, और हम उनके साथ एक आधिकारिक handoff पर काम कर रहे हैं ताकि जिस plugin पर आप भरोसा करते हैं, उसका maintenance और improvement जारी रहे।", - "readMore": "Matt Rubens की मूल घोषणा पढ़ें" + "heading": "Roo अब Zoo Code के रूप में वापस है।", + "description": "यह अंतिम Roo Code अपडेट आपके स्थानीय सेटअप को समुदाय द्वारा मेंटेन किए जा रहे नए Zoo Code एक्सटेंशन में ले जाने में मदद करता है। Roo इतना समय इंस्टॉल रहेगा कि Zoo के लिए handoff bundle तैयार कर सके।", + "readMore": "Zoo घोषणा पढ़ें" }, "release": { "heading": "नया क्या है:", @@ -363,6 +363,16 @@ "specialized": "Explainer, Planner, और Coder की शुरुआत - तीन विशेष क्लाउड एजेंट आपके वर्कफ़्लो को बेहतर बनाने के लिए।", "description": "एजेंट क्लाउड में एक साथ काम करते हैं और web या Slack के माध्यम से ट्रिगर किए जा सकते हैं।", "tryButton": "क्लाउड एजेंट आज़माएं" + }, + "zooMigration": { + "heading": "अपना Zoo migration तैयार करें", + "description": "Roo के local storage से handoff bundle बनाएँ। Roo आपका मूल डेटा वहीं रखता है और API keys शामिल करने से पहले पूछता है।", + "prepareButton": "Migration तैयार करें", + "installButton": "Zoo इंस्टॉल करें", + "detailsHeading": "यह क्या करता है:", + "copiesData": "आपकी Roo settings और task history को Zoo migration folder में कॉपी करता है।", + "keepsOriginals": "आपके मौजूदा Roo folders को बिना बदले छोड़ता है ताकि आप पहले handoff जाँच सकें।", + "apiKeysOptIn": "Provider profiles और API keys तभी शामिल करता है जब आप साफ़ तौर पर उन्हें शामिल करना चुनते हैं।" } }, "costs": { diff --git a/webview-ui/src/i18n/locales/id/chat.json b/webview-ui/src/i18n/locales/id/chat.json index 57500934032..ac9250f212d 100644 --- a/webview-ui/src/i18n/locales/id/chat.json +++ b/webview-ui/src/i18n/locales/id/chat.json @@ -367,7 +367,7 @@ "triggerLabelAll": "BRRR" }, "announcement": { - "title": "Roo Code {{version}} Dirilis", + "title": "Roo Code {{version}}: pindah ke Zoo Code", "support": "Dukung Roo Code dengan memberi kami bintang di GitHub.", "stealthModel": { "feature": "Model stealth GRATIS waktu terbatas - Code Supernova: Sekarang diupgrade dengan jendela konteks 1M token! Model coding agentik serbaguna yang mendukung input gambar, tersedia melalui Roo Code Cloud.", @@ -377,9 +377,9 @@ "goToSettingsButton": "Pergi ke Pengaturan" }, "handoff": { - "heading": "Plugin Roo Code tidak akan hilang.", - "description": "Kamu mungkin sudah melihat pengumuman baru-baru ini bahwa Roo Code mencapai 3 juta instalasi dan tim aslinya sepenuhnya fokus ke Roomote. Kami tahu berita itu berat bagi banyak dari kalian. Plugin ini sangat berarti bagi kami dan bagi kamu, dan kami mendengarmu. Kabar baiknya: sebuah tim komunitas telah maju untuk melanjutkan Roo Code, dan kami sedang bekerja sama dengan mereka untuk serah terima resmi agar plugin yang kamu andalkan tetap dirawat dan ditingkatkan.", - "readMore": "Baca pengumuman asli dari Matt Rubens" + "heading": "Roo kembali sebagai Zoo Code.", + "description": "Update terakhir Roo Code ini membantumu memindahkan setup lokal ke ekstensi Zoo Code baru yang dikelola komunitas. Roo tetap terpasang cukup lama untuk menyiapkan paket handoff bagi Zoo.", + "readMore": "Baca pengumuman Zoo" }, "release": { "heading": "Yang Baru:", @@ -392,6 +392,16 @@ "specialized": "Memperkenalkan Explainer, Planner, dan Coder - tiga agen cloud khusus untuk meningkatkan alur kerja Anda.", "description": "Agen bekerja bersama di cloud dan dapat dipicu dari web atau melalui Slack.", "tryButton": "Coba Agen Cloud" + }, + "zooMigration": { + "heading": "Siapkan migrasi Zoo kamu", + "description": "Buat paket handoff dari penyimpanan lokal Roo. Roo mempertahankan data asli di tempatnya dan meminta izin sebelum menyertakan API key.", + "prepareButton": "Siapkan Migrasi", + "installButton": "Instal Zoo", + "detailsHeading": "Yang dilakukan:", + "copiesData": "Menyalin pengaturan Roo dan riwayat tugas ke folder migrasi Zoo.", + "keepsOriginals": "Membiarkan folder Roo yang ada tetap utuh agar kamu bisa memeriksa handoff terlebih dulu.", + "apiKeysOptIn": "Menyertakan profil provider dan API key hanya jika kamu secara eksplisit memilih untuk menyertakannya." } }, "reasoning": { diff --git a/webview-ui/src/i18n/locales/it/chat.json b/webview-ui/src/i18n/locales/it/chat.json index 6bd860c0e1d..c3a998120f9 100644 --- a/webview-ui/src/i18n/locales/it/chat.json +++ b/webview-ui/src/i18n/locales/it/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "Approvazione automatica abilitata. Selezione tra {{seconds}}s…" }, "announcement": { - "title": "Rilasciato Roo Code {{version}}", + "title": "Roo Code {{version}}: passa a Zoo Code", "support": "Sostieni Roo Code lasciandoci una stella su GitHub.", "stealthModel": { "feature": "Modello stealth GRATUITO per tempo limitato - Code Supernova: Ora potenziato con una finestra di contesto da 1M token! Un modello di codificazione agentiva versatile che supporta input di immagini, accessibile tramite Roo Code Cloud.", @@ -348,9 +348,9 @@ "goToSettingsButton": "Vai alle Impostazioni" }, "handoff": { - "heading": "Il plugin Roo Code non sta per sparire.", - "description": "Potresti aver visto l'annuncio recente: Roo Code ha raggiunto 3 milioni di installazioni e il team originale si sta concentrando completamente su Roomote. Sappiamo che questa notizia è stata dura per molti di voi. Questo plugin significa tanto per noi e per te, e ti ascoltiamo. La buona notizia: un team della community si è fatto avanti per portare avanti Roo Code, e stiamo lavorando con loro a un passaggio di consegne ufficiale, così il plugin su cui conti continuerà a essere mantenuto e migliorato.", - "readMore": "Leggi l'annuncio originale di Matt Rubens" + "heading": "Roo torna come Zoo Code.", + "description": "Questo ultimo aggiornamento di Roo Code ti aiuta a spostare la configurazione locale nella nuova estensione Zoo Code mantenuta dalla community. Roo resta installato il tempo necessario per preparare un pacchetto di handoff per Zoo.", + "readMore": "Leggi l’annuncio di Zoo" }, "release": { "heading": "Novità:", @@ -363,6 +363,16 @@ "specialized": "Presentazione di Explainer, Planner e Coder - tre agenti cloud specializzati per migliorare i tuoi flussi di lavoro.", "description": "Gli agenti lavorano insieme nel cloud e possono essere attivati dal web o tramite Slack.", "tryButton": "Prova gli Agenti Cloud" + }, + "zooMigration": { + "heading": "Prepara la migrazione a Zoo", + "description": "Crea un pacchetto di handoff dallo storage locale di Roo. Roo lascia i dati originali al loro posto e chiede conferma prima di includere le chiavi API.", + "prepareButton": "Prepara migrazione", + "installButton": "Installa Zoo", + "detailsHeading": "Cosa fa:", + "copiesData": "Copia le impostazioni di Roo e la cronologia delle attività in una cartella di migrazione Zoo.", + "keepsOriginals": "Lascia intatte le cartelle Roo esistenti così puoi verificare prima l’handoff.", + "apiKeysOptIn": "Include profili provider e chiavi API solo se scegli esplicitamente di includerli." } }, "costs": { diff --git a/webview-ui/src/i18n/locales/ja/chat.json b/webview-ui/src/i18n/locales/ja/chat.json index 8e5889c853f..d3040872829 100644 --- a/webview-ui/src/i18n/locales/ja/chat.json +++ b/webview-ui/src/i18n/locales/ja/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "自動承認が有効です。{{seconds}}秒後に選択中…" }, "announcement": { - "title": "Roo Code {{version}} リリース", + "title": "Roo Code {{version}}: Zoo Code へ移行", "support": "GitHubでスターを付けてRoo Codeを応援してください。", "stealthModel": { "feature": "期間限定無料ステルスモデル - Code Supernova:1Mトークンコンテキストウィンドウにアップグレード!画像入力をサポートする多目的エージェントコーディングモデル、Roo Code Cloud 経由で利用可能。", @@ -348,9 +348,9 @@ "goToSettingsButton": "設定に移動" }, "handoff": { - "heading": "Roo Code プラグインはなくなりません。", - "description": "Roo Code のインストール数が300万に達し、元のチームが Roomote に全力で取り組むという先日のお知らせをご覧になったかもしれません。この知らせが多くの方にとって辛いものだったことは承知しています。このプラグインは私たちにとっても、あなたにとっても大切な存在であり、皆さんの声はしっかり届いています。良いお知らせです:コミュニティチームが Roo Code を受け継いで前進させることを引き受けてくれました。頼りにしているこのプラグインが引き続きメンテナンスと改善を受けられるよう、私たちは彼らと公式な引き継ぎを進めています。", - "readMore": "Matt Rubens による最初のお知らせを読む" + "heading": "Roo は Zoo Code として戻ってきました。", + "description": "この最後の Roo Code アップデートは、ローカル設定をコミュニティがメンテナンスする新しい Zoo Code 拡張機能へ移すためのものです。Roo は Zoo 向けのハンドオフバンドルを準備できるよう、しばらくインストールされたままになります。", + "readMore": "Zoo の発表を読む" }, "release": { "heading": "新機能:", @@ -363,6 +363,16 @@ "specialized": "ExplainerPlannerCoder の 3 つの専門クラウドエージェントを紹介します。ワークフローを強化します。", "description": "エージェントはクラウドで連携して動作し、Web または Slack からトリガーできます。", "tryButton": "クラウドエージェントを試す" + }, + "zooMigration": { + "heading": "Zoo への移行を準備", + "description": "Roo のローカルストレージからハンドオフバンドルを作成します。Roo は元データをそのまま残し、API キーを含める前に確認します。", + "prepareButton": "移行を準備", + "installButton": "Zoo をインストール", + "detailsHeading": "実行されること:", + "copiesData": "Roo の設定とタスク履歴を Zoo 移行フォルダーにコピーします。", + "keepsOriginals": "既存の Roo フォルダーは変更せず、先にハンドオフ内容を確認できます。", + "apiKeysOptIn": "プロバイダープロファイルと API キーは、明示的に選択した場合にのみ含めます。" } }, "costs": { diff --git a/webview-ui/src/i18n/locales/ko/chat.json b/webview-ui/src/i18n/locales/ko/chat.json index 42555e647d2..535d6fbeb88 100644 --- a/webview-ui/src/i18n/locales/ko/chat.json +++ b/webview-ui/src/i18n/locales/ko/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "자동 승인 활성화됨. {{seconds}}초 후 선택 중…" }, "announcement": { - "title": "Roo Code {{version}} 출시", + "title": "Roo Code {{version}}: Zoo Code로 이동", "support": "GitHub에서 별표를 눌러 Roo Code를 응원해 주세요.", "stealthModel": { "feature": "기간 한정 무료 스텔스 모델 - Code Supernova: 이제 1M 토큰 컨텍스트 윈도우로 업그레이드되었습니다! 이미지 입력을 지원하는 다목적 에이전틱 코딩 모델, Roo Code Cloud를 통해 이용 가능.", @@ -348,9 +348,9 @@ "goToSettingsButton": "설정으로 이동" }, "handoff": { - "heading": "Roo Code 플러그인은 사라지지 않아요.", - "description": "Roo Code가 300만 설치를 돌파했고, 원래 팀이 Roomote에 전념하기로 했다는 최근 발표를 보셨을 거예요. 많은 분들께 이 소식이 힘들게 다가왔다는 걸 알고 있어요. 이 플러그인은 저희와 여러분 모두에게 큰 의미가 있고, 여러분의 목소리를 듣고 있어요. 좋은 소식이 있어요: 커뮤니티 팀이 Roo Code를 계속 이어가기로 나섰어요. 여러분이 의지하는 이 플러그인이 계속 유지 관리되고 개선될 수 있도록, 저희는 그들과 공식적인 인수인계를 진행하고 있어요.", - "readMore": "Matt Rubens의 원본 발표 읽기" + "heading": "Roo가 Zoo Code로 돌아왔습니다.", + "description": "이번 마지막 Roo Code 업데이트는 로컬 설정을 커뮤니티가 유지 관리하는 새 Zoo Code 확장으로 옮길 수 있게 도와줍니다. Roo는 Zoo용 handoff bundle을 준비할 수 있도록 충분한 기간 동안 설치된 상태로 남습니다.", + "readMore": "Zoo 공지 읽기" }, "release": { "heading": "새로운 기능:", @@ -363,6 +363,16 @@ "specialized": "Explainer, Planner, Coder 세 가지 전문 클라우드 에이전트를 소개합니다. 워크플로우를 향상시킵니다.", "description": "에이전트는 클라우드에서 함께 작동하며 웹 또는 Slack을 통해 트리거할 수 있습니다.", "tryButton": "클라우드 에이전트 사용해보기" + }, + "zooMigration": { + "heading": "Zoo migration 준비", + "description": "Roo의 local storage에서 handoff bundle을 만듭니다. Roo는 원본 데이터를 그대로 두고 API key를 포함하기 전에 확인합니다.", + "prepareButton": "Migration 준비", + "installButton": "Zoo 설치", + "detailsHeading": "수행되는 작업:", + "copiesData": "Roo 설정과 작업 기록을 Zoo migration folder로 복사합니다.", + "keepsOriginals": "기존 Roo 폴더는 그대로 두어 먼저 handoff를 확인할 수 있습니다.", + "apiKeysOptIn": "Provider profile과 API key는 명시적으로 포함을 선택한 경우에만 포함합니다." } }, "costs": { diff --git a/webview-ui/src/i18n/locales/nl/chat.json b/webview-ui/src/i18n/locales/nl/chat.json index b6325e17081..0c010e05706 100644 --- a/webview-ui/src/i18n/locales/nl/chat.json +++ b/webview-ui/src/i18n/locales/nl/chat.json @@ -311,7 +311,7 @@ "triggerLabelAll": "BRRR" }, "announcement": { - "title": "Roo Code {{version}} uitgebracht", + "title": "Roo Code {{version}}: stap over naar Zoo Code", "support": "Steun Roo Code door ons een ster te geven op GitHub.", "stealthModel": { "feature": "Beperkt tijd GRATIS stealth model - Code Supernova: Nu geüpgraded met een 1M token contextvenster! Een veelzijdig agentisch codeermodel dat beeldinvoer ondersteunt, beschikbaar via Roo Code Cloud.", @@ -321,9 +321,9 @@ "goToSettingsButton": "Ga naar Instellingen" }, "handoff": { - "heading": "De Roo Code-plugin gaat niet weg.", - "description": "Je hebt misschien de recente aankondiging gezien dat Roo Code 3 miljoen installaties heeft bereikt en het oorspronkelijke team zich volledig richt op Roomote. We weten dat dat nieuws voor velen van jullie moeilijk was. Deze plugin betekent veel voor ons en voor jou, en we horen je. Het goede nieuws: een community-team heeft zich aangemeld om Roo Code voort te zetten, en we werken samen aan een officiële overdracht, zodat de plugin waar je op vertrouwt onderhouden en verbeterd blijft worden.", - "readMore": "Lees de originele aankondiging van Matt Rubens" + "heading": "Roo is terug als Zoo Code.", + "description": "Deze laatste Roo Code-update helpt je je lokale setup te verplaatsen naar de nieuwe Zoo Code-extensie die door de community wordt onderhouden. Roo blijft lang genoeg geïnstalleerd om een overdrachtspakket voor Zoo klaar te zetten.", + "readMore": "Lees de Zoo-aankondiging" }, "release": { "heading": "Wat is er nieuw:", @@ -336,6 +336,16 @@ "specialized": "Introductie van Explainer, Planner en Coder - drie gespecialiseerde cloud-agents om je workflows te verbeteren.", "description": "De agents werken samen in de cloud en kunnen worden geactiveerd vanaf het web of via Slack.", "tryButton": "Probeer Cloud-agents" + }, + "zooMigration": { + "heading": "Bereid je Zoo-migratie voor", + "description": "Maak een overdrachtspakket vanuit Roo’s lokale opslag. Roo laat je oorspronkelijke data staan en vraagt toestemming voordat API-sleutels worden meegenomen.", + "prepareButton": "Migratie voorbereiden", + "installButton": "Zoo installeren", + "detailsHeading": "Wat dit doet:", + "copiesData": "Kopieert je Roo-instellingen en taakgeschiedenis naar een Zoo-migratiemap.", + "keepsOriginals": "Laat je bestaande Roo-mappen ongemoeid zodat je de overdracht eerst kunt controleren.", + "apiKeysOptIn": "Neemt providerprofielen en API-sleutels alleen mee als je daar expliciet voor kiest." } }, "reasoning": { diff --git a/webview-ui/src/i18n/locales/pl/chat.json b/webview-ui/src/i18n/locales/pl/chat.json index c377a78a5be..ca8ecee268a 100644 --- a/webview-ui/src/i18n/locales/pl/chat.json +++ b/webview-ui/src/i18n/locales/pl/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "Automatyczne zatwierdzanie włączone. Zaznaczanie za {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}} wydany", + "title": "Roo Code {{version}}: przejdź na Zoo Code", "support": "Wesprzyj Roo Code, dając nam gwiazdkę na GitHub.", "stealthModel": { "feature": "Darmowy model stealth na ograniczony czas - Code Supernova: Teraz ulepszony z oknem kontekstu 1M tokenów! Wszechstronny model kodowania agentowego, który obsługuje wprowadzanie obrazów, dostępny przez Roo Code Cloud.", @@ -348,9 +348,9 @@ "goToSettingsButton": "Przejdź do Ustawień" }, "handoff": { - "heading": "Wtyczka Roo Code nie znika.", - "description": "Być może widziałeś niedawne ogłoszenie, że Roo Code osiągnął 3 miliony instalacji, a oryginalny zespół całkowicie skupia się na Roomote. Wiemy, że ta wiadomość była trudna dla wielu z was. Ta wtyczka wiele dla nas i dla ciebie znaczy, i słyszymy was. Dobra wiadomość: zespół społeczności zgłosił się, żeby poprowadzić Roo Code dalej, i pracujemy z nimi nad oficjalnym przekazaniem, żeby wtyczka, na której polegasz, była nadal utrzymywana i ulepszana.", - "readMore": "Przeczytaj oryginalne ogłoszenie Matta Rubensa" + "heading": "Roo wraca jako Zoo Code.", + "description": "Ta ostatnia aktualizacja Roo Code pomaga przenieść lokalną konfigurację do nowego rozszerzenia Zoo Code utrzymywanego przez społeczność. Roo pozostaje zainstalowane wystarczająco długo, aby przygotować pakiet przekazania dla Zoo.", + "readMore": "Przeczytaj ogłoszenie Zoo" }, "release": { "heading": "Co nowego:", @@ -363,6 +363,16 @@ "specialized": "Przedstawiamy Explainer, Planner i Coder - trzech wyspecjalizowanych agentów chmurowych, aby ulepszyć Twoje przepływy pracy.", "description": "Agenci pracują razem w chmurze i mogą być uruchamiani z sieci lub przez Slack.", "tryButton": "Wypróbuj agentów chmurowych" + }, + "zooMigration": { + "heading": "Przygotuj migrację do Zoo", + "description": "Utwórz pakiet przekazania z lokalnego magazynu Roo. Roo zostawia oryginalne dane na miejscu i pyta przed dołączeniem kluczy API.", + "prepareButton": "Przygotuj migrację", + "installButton": "Zainstaluj Zoo", + "detailsHeading": "Co to robi:", + "copiesData": "Kopiuje ustawienia Roo i historię zadań do folderu migracji Zoo.", + "keepsOriginals": "Pozostawia istniejące foldery Roo bez zmian, aby można było najpierw sprawdzić przekazanie.", + "apiKeysOptIn": "Dołącza profile dostawców i klucze API tylko wtedy, gdy wyraźnie wybierzesz ich dołączenie." } }, "costs": { diff --git a/webview-ui/src/i18n/locales/pt-BR/chat.json b/webview-ui/src/i18n/locales/pt-BR/chat.json index fe65244eaf2..07694cfbb5e 100644 --- a/webview-ui/src/i18n/locales/pt-BR/chat.json +++ b/webview-ui/src/i18n/locales/pt-BR/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "Aprovação automática ativada. Selecionando em {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}} Lançado", + "title": "Roo Code {{version}}: migre para o Zoo Code", "support": "Apoie o Roo Code nos dando uma estrela no GitHub.", "stealthModel": { "feature": "Modelo stealth GRATUITO por tempo limitado - Code Supernova: Agora atualizado com uma janela de contexto de 1M tokens! Um modelo de codificação agêntica versátil que suporta entradas de imagem, acessível através do Roo Code Cloud.", @@ -348,9 +348,9 @@ "goToSettingsButton": "Ir para Configurações" }, "handoff": { - "heading": "O plugin Roo Code não vai acabar.", - "description": "Você pode ter visto o anúncio recente de que o Roo Code atingiu 3 milhões de instalações e a equipe original está se dedicando totalmente ao Roomote. Sabemos que essa notícia foi difícil para muitos de vocês. Esse plugin significa muito para nós e para você, e ouvimos o que você tem a dizer. A boa notícia: um time da comunidade assumiu a tarefa de levar o Roo Code adiante, e estamos trabalhando com eles em uma transição oficial para que o plugin em que você confia continue recebendo manutenção e melhorias.", - "readMore": "Leia o anúncio original do Matt Rubens" + "heading": "O Roo voltou como Zoo Code.", + "description": "Esta última atualização do Roo Code ajuda você a mover sua configuração local para a nova extensão Zoo Code mantida pela comunidade. O Roo continua instalado tempo suficiente para preparar um pacote de transferência para o Zoo.", + "readMore": "Ler o anúncio do Zoo" }, "release": { "heading": "Novidades:", @@ -363,6 +363,16 @@ "specialized": "Apresentando Explainer, Planner e Coder - três agentes em nuvem especializados para aprimorar seus fluxos de trabalho.", "description": "Os agentes trabalham juntos na nuvem e podem ser acionados a partir da web ou por meio do Slack.", "tryButton": "Experimentar Agentes em Nuvem" + }, + "zooMigration": { + "heading": "Prepare sua migração para o Zoo", + "description": "Crie um pacote de transferência a partir do armazenamento local do Roo. O Roo mantém seus dados originais no lugar e pergunta antes de incluir chaves de API.", + "prepareButton": "Preparar migração", + "installButton": "Instalar Zoo", + "detailsHeading": "O que isso faz:", + "copiesData": "Copia suas configurações do Roo e o histórico de tarefas para uma pasta de migração do Zoo.", + "keepsOriginals": "Mantém suas pastas atuais do Roo intactas para você verificar a transferência primeiro.", + "apiKeysOptIn": "Inclui perfis de provedores e chaves de API somente se você escolher explicitamente incluí-los." } }, "costs": { diff --git a/webview-ui/src/i18n/locales/ru/chat.json b/webview-ui/src/i18n/locales/ru/chat.json index ca9f9640e75..ee6e85deddf 100644 --- a/webview-ui/src/i18n/locales/ru/chat.json +++ b/webview-ui/src/i18n/locales/ru/chat.json @@ -312,7 +312,7 @@ "triggerLabelAll": "BRRR" }, "announcement": { - "title": "Выпущен Roo Code {{version}}", + "title": "Roo Code {{version}}: переход на Zoo Code", "support": "Поддержите Roo Code, поставив нам звезду на GitHub.", "stealthModel": { "feature": "Бесплатная скрытая модель на ограниченное время - Code Supernova: Теперь обновлена до контекстного окна 1M токенов! Универсальная модель агентного программирования, поддерживающая ввод изображений, доступная через Roo Code Cloud.", @@ -322,9 +322,9 @@ "goToSettingsButton": "Перейти к Настройкам" }, "handoff": { - "heading": "Плагин Roo Code никуда не денется.", - "description": "Возможно, ты видел недавнее объявление о том, что Roo Code достиг 3 миллионов установок, а оригинальная команда полностью переключается на Roomote. Мы понимаем, что эта новость была непростой для многих из вас. Этот плагин много значит для нас и для тебя, и мы тебя слышим. Хорошая новость: команда сообщества взяла на себя задачу продолжать развивать Roo Code, и мы работаем с ними над официальной передачей, чтобы плагин, на который ты полагаешься, продолжал получать поддержку и улучшения.", - "readMore": "Прочитать оригинальное объявление Matt Rubens" + "heading": "Roo возвращается как Zoo Code.", + "description": "Это последнее обновление Roo Code помогает перенести локальную настройку в новое расширение Zoo Code, которое поддерживает сообщество. Roo останется установленным достаточно долго, чтобы подготовить пакет передачи для Zoo.", + "readMore": "Прочитать объявление Zoo" }, "release": { "heading": "Что нового:", @@ -337,6 +337,16 @@ "specialized": "Представляем Explainer, Planner и Coder - трёх специализированных облачных агентов для улучшения ваших рабочих процессов.", "description": "Агенты работают вместе в облаке и могут быть запущены из веб-интерфейса или через Slack.", "tryButton": "Попробовать облачных агентов" + }, + "zooMigration": { + "heading": "Подготовь миграцию в Zoo", + "description": "Создай пакет передачи из локального хранилища Roo. Roo оставляет исходные данные на месте и спрашивает перед включением API-ключей.", + "prepareButton": "Подготовить миграцию", + "installButton": "Установить Zoo", + "detailsHeading": "Что это делает:", + "copiesData": "Копирует настройки Roo и историю задач в папку миграции Zoo.", + "keepsOriginals": "Оставляет существующие папки Roo без изменений, чтобы ты сначала мог проверить передачу.", + "apiKeysOptIn": "Включает профили провайдеров и API-ключи только если ты явно выберешь их включение." } }, "reasoning": { diff --git a/webview-ui/src/i18n/locales/tr/chat.json b/webview-ui/src/i18n/locales/tr/chat.json index c1042ddc169..6711c6f83e0 100644 --- a/webview-ui/src/i18n/locales/tr/chat.json +++ b/webview-ui/src/i18n/locales/tr/chat.json @@ -339,7 +339,7 @@ "timerPrefix": "Otomatik onay etkinleştirildi. {{seconds}}s içinde seçim yapılıyor…" }, "announcement": { - "title": "Roo Code {{version}} Yayınlandı", + "title": "Roo Code {{version}}: Zoo Code’a geç", "support": "GitHub'da yıldız vererek Roo Code'u destekle.", "stealthModel": { "feature": "Sınırlı süre ÜCRETSİZ gizli model - Code Supernova: Artık 1M token bağlam penceresi ile yükseltildi! Görüntü girişlerini destekleyen çok amaçlı acentik kodlama modeli, Roo Code Cloud üzerinden kullanılabilir.", @@ -349,9 +349,9 @@ "goToSettingsButton": "Ayarlar'a Git" }, "handoff": { - "heading": "Roo Code eklentisi bir yere gitmiyor.", - "description": "Roo Code'un 3 milyon kuruluma ulaştığı ve orijinal ekibin tüm enerjisini Roomote'a verdiği son duyuruyu görmüş olabilirsin. Bu haberin birçoğunuz için zor olduğunu biliyoruz. Bu eklenti bizim ve senin için çok şey ifade ediyor ve seni duyuyoruz. İyi haber: bir topluluk ekibi Roo Code'u ileriye taşımak için öne çıktı ve güvendiğin eklentinin bakımı ve geliştirilmesinin sürmesi için onlarla resmi bir devir çalışması yürütüyoruz.", - "readMore": "Matt Rubens'in orijinal duyurusunu oku" + "heading": "Roo, Zoo Code olarak geri döndü.", + "description": "Bu son Roo Code güncellemesi, yerel kurulumunu topluluk tarafından sürdürülen yeni Zoo Code uzantısına taşıman için yardımcı olur. Roo, Zoo için bir handoff paketi hazırlayacak kadar kurulu kalır.", + "readMore": "Zoo duyurusunu oku" }, "release": { "heading": "Yenilikler:", @@ -364,6 +364,16 @@ "specialized": "Explainer, Planner ve Coder tanıtımı - iş akışlarını geliştirmek için üç özel bulut ajanı.", "description": "Ajanlar bulutta birlikte çalışır ve web'den veya Slack üzerinden tetiklenebilir.", "tryButton": "Bulut Ajanlarını Dene" + }, + "zooMigration": { + "heading": "Zoo migration hazırlığını yap", + "description": "Roo’nun local storage alanından bir handoff paketi oluştur. Roo özgün verilerini yerinde bırakır ve API key eklemeden önce sorar.", + "prepareButton": "Migration hazırla", + "installButton": "Zoo yükle", + "detailsHeading": "Bu ne yapar:", + "copiesData": "Roo ayarlarını ve görev geçmişini bir Zoo migration klasörüne kopyalar.", + "keepsOriginals": "Handoff’u önce doğrulayabilmen için mevcut Roo klasörlerini olduğu gibi bırakır.", + "apiKeysOptIn": "Provider profillerini ve API key’leri yalnızca açıkça dahil etmeyi seçersen ekler." } }, "costs": { diff --git a/webview-ui/src/i18n/locales/vi/chat.json b/webview-ui/src/i18n/locales/vi/chat.json index 1e82396685d..494b3d93ac7 100644 --- a/webview-ui/src/i18n/locales/vi/chat.json +++ b/webview-ui/src/i18n/locales/vi/chat.json @@ -339,7 +339,7 @@ "timerPrefix": "Phê duyệt tự động được bật. Chọn trong {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}} Đã phát hành", + "title": "Roo Code {{version}}: chuyển sang Zoo Code", "support": "Hãy ủng hộ Roo Code bằng cách gắn sao cho chúng tôi trên GitHub.", "stealthModel": { "feature": "Mô hình stealth MIỄN PHÍ có thời hạn - Code Supernova: Hiện đã được nâng cấp với cửa sổ ngữ cảnh 1M token! Một mô hình lập trình agentic đa năng hỗ trợ đầu vào hình ảnh, có sẵn qua Roo Code Cloud.", @@ -349,9 +349,9 @@ "goToSettingsButton": "Đi tới Cài đặt" }, "handoff": { - "heading": "Plugin Roo Code sẽ không biến mất.", - "description": "Bạn có thể đã thấy thông báo gần đây rằng Roo Code đã đạt 3 triệu lượt cài đặt và đội ngũ ban đầu đang dồn toàn lực cho Roomote. Chúng tôi biết rằng tin này thật khó khăn với nhiều bạn. Plugin này có ý nghĩa rất lớn với chúng tôi và với bạn, và chúng tôi lắng nghe bạn. Tin tốt: một đội ngũ từ cộng đồng đã đứng ra tiếp tục đưa Roo Code đi tiếp, và chúng tôi đang làm việc với họ về việc bàn giao chính thức để plugin mà bạn đang tin cậy tiếp tục được bảo trì và cải thiện.", - "readMore": "Đọc thông báo gốc từ Matt Rubens" + "heading": "Roo trở lại với tên Zoo Code.", + "description": "Bản cập nhật Roo Code cuối cùng này giúp bạn chuyển thiết lập cục bộ sang extension Zoo Code mới do cộng đồng duy trì. Roo vẫn được cài đủ lâu để chuẩn bị gói handoff cho Zoo.", + "readMore": "Đọc thông báo về Zoo" }, "release": { "heading": "Tính năng mới:", @@ -364,6 +364,16 @@ "specialized": "Giới thiệu Explainer, PlannerCoder - ba agent đám mây chuyên biệt để nâng cao quy trình làm việc của bạn.", "description": "Các agent làm việc cùng nhau trên đám mây và có thể được kích hoạt từ web hoặc qua Slack.", "tryButton": "Dùng thử Agents trên Cloud" + }, + "zooMigration": { + "heading": "Chuẩn bị migration sang Zoo", + "description": "Tạo gói handoff từ bộ nhớ cục bộ của Roo. Roo giữ nguyên dữ liệu gốc và hỏi trước khi bao gồm API key.", + "prepareButton": "Chuẩn bị migration", + "installButton": "Cài Zoo", + "detailsHeading": "Việc này sẽ:", + "copiesData": "Sao chép cài đặt Roo và lịch sử tác vụ vào thư mục migration của Zoo.", + "keepsOriginals": "Giữ nguyên các thư mục Roo hiện có để bạn kiểm tra handoff trước.", + "apiKeysOptIn": "Chỉ bao gồm provider profile và API key nếu bạn chủ động chọn đưa chúng vào." } }, "costs": { diff --git a/webview-ui/src/i18n/locales/zh-CN/chat.json b/webview-ui/src/i18n/locales/zh-CN/chat.json index 8fe5d14ee8c..44e3c669092 100644 --- a/webview-ui/src/i18n/locales/zh-CN/chat.json +++ b/webview-ui/src/i18n/locales/zh-CN/chat.json @@ -339,7 +339,7 @@ "timerPrefix": "自动批准已启用。{{seconds}}秒后选择中…" }, "announcement": { - "title": "Roo Code {{version}} 已发布", + "title": "Roo Code {{version}}:迁移到 Zoo Code", "support": "请在 GitHub 上为我们点星支持 Roo Code。", "stealthModel": { "feature": "限时免费隐形模型 - Code Supernova:现已升级为 1M Token 上下文窗口!一个支持图像输入的多功能代理编程模型,通过 Roo Code Cloud 提供。", @@ -349,9 +349,9 @@ "goToSettingsButton": "前往设置" }, "handoff": { - "heading": "Roo Code 插件不会消失。", - "description": "你可能已经看到最近的公告:Roo Code 已突破 300 万次安装,原团队正全力投入 Roomote。我们知道这个消息让许多人感到难受。这个插件对我们和你都意义重大,你的心声我们听到了。好消息是:一支社区团队已挺身而出,继续推进 Roo Code,我们正与他们协作进行正式交接,让你所依赖的插件继续得到维护和改进。", - "readMore": "阅读 Matt Rubens 的原始公告" + "heading": "Roo 以 Zoo Code 的形式回来了。", + "description": "这次 Roo Code 的最后更新会帮助你把本地配置迁移到由社区维护的新 Zoo Code 扩展。Roo 会保留安装足够久,以便为 Zoo 准备 handoff bundle。", + "readMore": "阅读 Zoo 公告" }, "release": { "heading": "新增功能:", @@ -364,6 +364,16 @@ "specialized": "推出 ExplainerPlannerCoder - 三个专业云代理来增强你的工作流程。", "description": "代理在云端协同工作,可从网页或通过 Slack 触发。", "tryButton": "试用云代理" + }, + "zooMigration": { + "heading": "准备 Zoo 迁移", + "description": "从 Roo 的本地存储创建 handoff bundle。Roo 会保留原始数据,并且在包含 API key 之前先征求你的同意。", + "prepareButton": "准备迁移", + "installButton": "安装 Zoo", + "detailsHeading": "这会执行:", + "copiesData": "将你的 Roo 设置和任务历史复制到 Zoo 迁移文件夹。", + "keepsOriginals": "保持现有 Roo 文件夹不变,方便你先验证 handoff。", + "apiKeysOptIn": "只有在你明确选择包含时,才会加入 provider profile 和 API key。" } }, "costs": { diff --git a/webview-ui/src/i18n/locales/zh-TW/chat.json b/webview-ui/src/i18n/locales/zh-TW/chat.json index 515124e8e1d..3defe7b68eb 100644 --- a/webview-ui/src/i18n/locales/zh-TW/chat.json +++ b/webview-ui/src/i18n/locales/zh-TW/chat.json @@ -360,7 +360,7 @@ "triggerLabelAll": "BRRR" }, "announcement": { - "title": "Roo Code {{version}} 已發布", + "title": "Roo Code {{version}}:移轉到 Zoo Code", "support": "請在 GitHub 上給 Roo Code 星星支持我們。", "stealthModel": { "feature": "限時免費隱形模型 - Code Supernova:現已升級為 1M Token 上下文視窗!一個支援影像輸入的多功能代理程式設計模型,透過 Roo Code Cloud 提供。", @@ -370,9 +370,9 @@ "goToSettingsButton": "前往設定" }, "handoff": { - "heading": "Roo Code 外掛不會消失。", - "description": "你可能已經看到最近的公告:Roo Code 已突破 300 萬次安裝,原團隊將全心投入 Roomote。我們知道這個消息讓許多人感到難受。這個外掛對我們和你都意義重大,你的心聲我們聽到了。好消息是:一支社群團隊已挺身而出,繼續推進 Roo Code,我們正與他們協作進行正式交接,讓你所仰賴的外掛持續受到維護與改進。", - "readMore": "閱讀 Matt Rubens 的原始公告" + "heading": "Roo 以 Zoo Code 的形式回來了。", + "description": "這次 Roo Code 的最後更新會協助你把本機設定移轉到由社群維護的新 Zoo Code 擴充功能。Roo 會保留安裝足夠久,以便為 Zoo 準備 handoff bundle。", + "readMore": "閱讀 Zoo 公告" }, "release": { "heading": "新增功能:", @@ -385,6 +385,16 @@ "specialized": "推出 ExplainerPlannerCoder,三個專業雲端代理用來強化工作流程。", "description": "代理在雲端協同工作,可從網頁或透過 Slack 觸發。", "tryButton": "試用雲端代理" + }, + "zooMigration": { + "heading": "準備 Zoo 移轉", + "description": "從 Roo 的本機儲存建立 handoff bundle。Roo 會保留原始資料,並在包含 API key 前先詢問你。", + "prepareButton": "準備移轉", + "installButton": "安裝 Zoo", + "detailsHeading": "這會執行:", + "copiesData": "將你的 Roo 設定和任務歷史複製到 Zoo 移轉資料夾。", + "keepsOriginals": "保持現有 Roo 資料夾不變,讓你可以先驗證 handoff。", + "apiKeysOptIn": "只有在你明確選擇包含時,才會加入 provider profile 和 API key。" } }, "reasoning": { From f61782ec4fe6dc3c55fb7a72da63dec4a8619eb4 Mon Sep 17 00:00:00 2001 From: Elliott de Launay Date: Sat, 9 May 2026 01:43:13 +0000 Subject: [PATCH 3/6] refactor(ZooMigration): adding publisher id for extension --- src/i18n/locales/ca/common.json | 2 +- src/i18n/locales/de/common.json | 2 +- src/i18n/locales/en/common.json | 2 +- src/i18n/locales/es/common.json | 2 +- src/i18n/locales/fr/common.json | 2 +- src/i18n/locales/hi/common.json | 2 +- src/i18n/locales/id/common.json | 2 +- src/i18n/locales/it/common.json | 2 +- src/i18n/locales/ja/common.json | 2 +- src/i18n/locales/ko/common.json | 2 +- src/i18n/locales/nl/common.json | 2 +- src/i18n/locales/pl/common.json | 2 +- src/i18n/locales/pt-BR/common.json | 2 +- src/i18n/locales/ru/common.json | 2 +- src/i18n/locales/tr/common.json | 2 +- src/i18n/locales/vi/common.json | 2 +- src/i18n/locales/zh-CN/common.json | 2 +- src/i18n/locales/zh-TW/common.json | 2 +- src/services/zoo-migration/ZooMigration.ts | 13 +++--- .../__tests__/ZooMigration.spec.ts | 46 ++++++++++++++++++- 20 files changed, 69 insertions(+), 26 deletions(-) diff --git a/src/i18n/locales/ca/common.json b/src/i18n/locales/ca/common.json index 7d69616afe0..9723ea5d568 100644 --- a/src/i18n/locales/ca/common.json +++ b/src/i18n/locales/ca/common.json @@ -34,7 +34,7 @@ "cancel": "Cancel·la" }, "notice": "Roo Code està passant a Zoo Code. Pots preparar un paquet de migració basat en còpia per a Zoo sense eliminar les teves dades de Roo.", - "zooNotPublished": "Zoo Code encara no s'ha publicat amb un id d'extensió confirmat al Marketplace. S'ha obert la vista d'extensions amb una cerca de Zoo Code.", + "installUnavailable": "Zoo Code està disponible com a ZooCodeOrganization.zoo-code. La instal·lació automàtica no s'ha completat, així que s'ha obert la vista Extensions perquè el puguis instal·lar des de la galeria d'extensions configurada.", "preparePrompt": "Vols preparar un paquet de migració local de Zoo Code? Si inclous les claus d'API, els secrets del proveïdor s'escriuran en un fitxer local perquè Zoo els pugui importar i després eliminar el paquet.", "handoffPrepared": "Paquet de migració de Zoo Code preparat a {{path}}. Instal·la Zoo Code i importa des d'aquest paquet.", "handoffFailed": "No s'ha pogut preparar el paquet de migració de Zoo Code: {{error}}" diff --git a/src/i18n/locales/de/common.json b/src/i18n/locales/de/common.json index bb1c1838cb4..85a1a18ec82 100644 --- a/src/i18n/locales/de/common.json +++ b/src/i18n/locales/de/common.json @@ -30,7 +30,7 @@ "cancel": "Abbrechen" }, "notice": "Roo Code wechselt zu Zoo Code. Du kannst eine kopierbasierte Migrationsübergabe für Zoo vorbereiten, ohne deine Roo-Daten zu löschen.", - "zooNotPublished": "Zoo Code ist noch nicht unter einer bestätigten Marketplace-Erweiterungs-ID veröffentlicht. Die Erweiterungsansicht wurde mit einer Suche nach Zoo Code geöffnet.", + "installUnavailable": "Zoo Code ist als ZooCodeOrganization.zoo-code verfügbar. Die automatische Installation wurde nicht abgeschlossen, deshalb wurde die Erweiterungsansicht geöffnet, damit du es aus deiner konfigurierten Erweiterungsgalerie installieren kannst.", "preparePrompt": "Lokale Zoo Code-Migrationsübergabe vorbereiten? Wenn du API-Schlüssel einschließt, werden Provider-Secrets in eine lokale Datei geschrieben, damit Zoo sie importieren und die Übergabe danach löschen kann.", "handoffPrepared": "Zoo Code-Migrationsübergabe unter {{path}} vorbereitet. Installiere Zoo Code und importiere aus dieser Übergabe.", "handoffFailed": "Zoo Code-Migrationsübergabe konnte nicht vorbereitet werden: {{error}}" diff --git a/src/i18n/locales/en/common.json b/src/i18n/locales/en/common.json index 54cfdc027a6..a418b5ff6d0 100644 --- a/src/i18n/locales/en/common.json +++ b/src/i18n/locales/en/common.json @@ -30,7 +30,7 @@ "cancel": "Cancel" }, "notice": "Roo Code is transitioning to Zoo Code. You can prepare a copy-based migration handoff for Zoo without deleting your Roo data.", - "zooNotPublished": "Zoo Code is not published under a confirmed Marketplace extension id yet. The Extensions view has been opened with a Zoo Code search.", + "installUnavailable": "Zoo Code is available as ZooCodeOrganization.zoo-code. Automatic install did not complete, so the Extensions view has been opened so you can install it from your configured extension gallery.", "preparePrompt": "Prepare a local Zoo Code migration handoff? Including API keys writes provider secrets to a local file so Zoo can import them, then delete the handoff after import.", "handoffPrepared": "Zoo Code migration handoff prepared at {{path}}. Install Zoo Code and import from this handoff.", "handoffFailed": "Failed to prepare Zoo Code migration handoff: {{error}}" diff --git a/src/i18n/locales/es/common.json b/src/i18n/locales/es/common.json index ab21f59b364..3e5b44e4c71 100644 --- a/src/i18n/locales/es/common.json +++ b/src/i18n/locales/es/common.json @@ -30,7 +30,7 @@ "cancel": "Cancelar" }, "notice": "Roo Code está pasando a Zoo Code. Puedes preparar una entrega de migración basada en copia para Zoo sin eliminar tus datos de Roo.", - "zooNotPublished": "Zoo Code aún no está publicado con un id de extensión confirmado en Marketplace. Se abrió la vista de Extensiones con una búsqueda de Zoo Code.", + "installUnavailable": "Zoo Code está disponible como ZooCodeOrganization.zoo-code. La instalación automática no se completó, así que se abrió la vista de Extensiones para que puedas instalarlo desde tu galería de extensiones configurada.", "preparePrompt": "¿Preparar una entrega local de migración a Zoo Code? Si incluyes claves de API, los secrets del proveedor se escribirán en un archivo local para que Zoo pueda importarlos y luego eliminar la entrega.", "handoffPrepared": "Entrega de migración a Zoo Code preparada en {{path}}. Instala Zoo Code e importa desde esta entrega.", "handoffFailed": "No se pudo preparar la entrega de migración a Zoo Code: {{error}}" diff --git a/src/i18n/locales/fr/common.json b/src/i18n/locales/fr/common.json index 0476a9487fe..97f0c0bc8c1 100644 --- a/src/i18n/locales/fr/common.json +++ b/src/i18n/locales/fr/common.json @@ -30,7 +30,7 @@ "cancel": "Annuler" }, "notice": "Roo Code passe à Zoo Code. Tu peux préparer un transfert de migration par copie pour Zoo sans supprimer tes données Roo.", - "zooNotPublished": "Zoo Code n'est pas encore publié avec un id d'extension Marketplace confirmé. La vue Extensions a été ouverte avec une recherche Zoo Code.", + "installUnavailable": "Zoo Code est disponible sous l'id ZooCodeOrganization.zoo-code. L'installation automatique ne s'est pas terminée, donc la vue Extensions a été ouverte pour que tu puisses l'installer depuis ta galerie d'extensions configurée.", "preparePrompt": "Préparer un transfert local de migration Zoo Code ? Inclure les clés API écrit les secrets du fournisseur dans un fichier local afin que Zoo puisse les importer, puis supprimer le transfert après import.", "handoffPrepared": "Transfert de migration Zoo Code préparé dans {{path}}. Installe Zoo Code et importe depuis ce transfert.", "handoffFailed": "Échec de la préparation du transfert de migration Zoo Code : {{error}}" diff --git a/src/i18n/locales/hi/common.json b/src/i18n/locales/hi/common.json index 109c0a6c9bd..af6449e00c4 100644 --- a/src/i18n/locales/hi/common.json +++ b/src/i18n/locales/hi/common.json @@ -30,7 +30,7 @@ "cancel": "रद्द करें" }, "notice": "Roo Code, Zoo Code में बदल रहा है। आप Roo डेटा हटाए बिना Zoo के लिए कॉपी-आधारित माइग्रेशन हैंडऑफ तैयार कर सकते हैं।", - "zooNotPublished": "Zoo Code अभी तक पुष्टि किए गए Marketplace एक्सटेंशन id के तहत प्रकाशित नहीं है। Extensions दृश्य Zoo Code खोज के साथ खोल दिया गया है।", + "installUnavailable": "Zoo Code, ZooCodeOrganization.zoo-code के रूप में उपलब्ध है। स्वचालित इंस्टॉल पूरा नहीं हुआ, इसलिए Extensions दृश्य खोला गया है ताकि आप इसे अपनी कॉन्फ़िगर की गई एक्सटेंशन गैलरी से इंस्टॉल कर सकें।", "preparePrompt": "स्थानीय Zoo Code माइग्रेशन हैंडऑफ तैयार करें? API कुंजियां शामिल करने से प्रदाता secrets एक स्थानीय फ़ाइल में लिखे जाएंगे ताकि Zoo उन्हें आयात कर सके और फिर आयात के बाद हैंडऑफ हटा सके।", "handoffPrepared": "Zoo Code माइग्रेशन हैंडऑफ {{path}} पर तैयार है। Zoo Code इंस्टॉल करें और इस हैंडऑफ से आयात करें।", "handoffFailed": "Zoo Code माइग्रेशन हैंडऑफ तैयार करने में विफल: {{error}}" diff --git a/src/i18n/locales/id/common.json b/src/i18n/locales/id/common.json index 367c251e4aa..8a5a0976a91 100644 --- a/src/i18n/locales/id/common.json +++ b/src/i18n/locales/id/common.json @@ -30,7 +30,7 @@ "cancel": "Batal" }, "notice": "Roo Code sedang beralih ke Zoo Code. Kamu bisa menyiapkan handoff migrasi berbasis salinan untuk Zoo tanpa menghapus data Roo-mu.", - "zooNotPublished": "Zoo Code belum diterbitkan dengan id ekstensi Marketplace yang terkonfirmasi. Tampilan Extensions telah dibuka dengan pencarian Zoo Code.", + "installUnavailable": "Zoo Code tersedia sebagai ZooCodeOrganization.zoo-code. Instal otomatis tidak selesai, jadi tampilan Extensions telah dibuka agar kamu bisa menginstalnya dari galeri ekstensi yang dikonfigurasi.", "preparePrompt": "Siapkan handoff migrasi Zoo Code lokal? Menyertakan kunci API akan menulis secret penyedia ke file lokal agar Zoo bisa mengimpornya, lalu menghapus handoff setelah impor.", "handoffPrepared": "Handoff migrasi Zoo Code disiapkan di {{path}}. Instal Zoo Code dan impor dari handoff ini.", "handoffFailed": "Gagal menyiapkan handoff migrasi Zoo Code: {{error}}" diff --git a/src/i18n/locales/it/common.json b/src/i18n/locales/it/common.json index 0c0cee78cbb..175d3cc869a 100644 --- a/src/i18n/locales/it/common.json +++ b/src/i18n/locales/it/common.json @@ -30,7 +30,7 @@ "cancel": "Annulla" }, "notice": "Roo Code sta passando a Zoo Code. Puoi preparare un handoff di migrazione basato su copia per Zoo senza eliminare i tuoi dati Roo.", - "zooNotPublished": "Zoo Code non è ancora pubblicato con un id estensione Marketplace confermato. La vista Estensioni è stata aperta con una ricerca di Zoo Code.", + "installUnavailable": "Zoo Code è disponibile come ZooCodeOrganization.zoo-code. L'installazione automatica non è stata completata, quindi la vista Estensioni è stata aperta per permetterti di installarlo dalla galleria estensioni configurata.", "preparePrompt": "Preparare un handoff locale di migrazione Zoo Code? Includere le chiavi API scrive i secret dei provider in un file locale, così Zoo può importarli e poi eliminare l'handoff dopo l'importazione.", "handoffPrepared": "Handoff di migrazione Zoo Code preparato in {{path}}. Installa Zoo Code e importa da questo handoff.", "handoffFailed": "Impossibile preparare l'handoff di migrazione Zoo Code: {{error}}" diff --git a/src/i18n/locales/ja/common.json b/src/i18n/locales/ja/common.json index a3795a96b07..f7df0d053e9 100644 --- a/src/i18n/locales/ja/common.json +++ b/src/i18n/locales/ja/common.json @@ -30,7 +30,7 @@ "cancel": "キャンセル" }, "notice": "Roo Code は Zoo Code へ移行しています。Roo のデータを削除せずに、Zoo 用のコピー方式の移行ハンドオフを準備できます。", - "zooNotPublished": "Zoo Code は、確認済みの Marketplace 拡張機能 id ではまだ公開されていません。拡張機能ビューで Zoo Code の検索を開きました。", + "installUnavailable": "Zoo Code は ZooCodeOrganization.zoo-code として利用できます。自動インストールが完了しなかったため、設定済みの拡張機能ギャラリーからインストールできるように Extensions ビューを開きました。", "preparePrompt": "ローカルの Zoo Code 移行ハンドオフを準備しますか?API キーを含めると、Zoo がインポートできるようにプロバイダーの secret がローカルファイルに書き込まれ、インポート後にハンドオフを削除できます。", "handoffPrepared": "Zoo Code 移行ハンドオフを {{path}} に準備しました。Zoo Code をインストールして、このハンドオフからインポートしてください。", "handoffFailed": "Zoo Code 移行ハンドオフの準備に失敗しました: {{error}}" diff --git a/src/i18n/locales/ko/common.json b/src/i18n/locales/ko/common.json index 178ec9e0947..d0d00f1723e 100644 --- a/src/i18n/locales/ko/common.json +++ b/src/i18n/locales/ko/common.json @@ -30,7 +30,7 @@ "cancel": "취소" }, "notice": "Roo Code가 Zoo Code로 전환됩니다. Roo 데이터를 삭제하지 않고 Zoo용 복사 기반 마이그레이션 핸드오프를 준비할 수 있습니다.", - "zooNotPublished": "Zoo Code는 아직 확인된 Marketplace 확장 id로 게시되지 않았습니다. Extensions 보기에서 Zoo Code 검색을 열었습니다.", + "installUnavailable": "Zoo Code는 ZooCodeOrganization.zoo-code로 제공됩니다. 자동 설치가 완료되지 않아, 구성된 확장 갤러리에서 설치할 수 있도록 Extensions 보기를 열었습니다.", "preparePrompt": "로컬 Zoo Code 마이그레이션 핸드오프를 준비할까요? API 키를 포함하면 Zoo가 가져올 수 있도록 공급자 secrets가 로컬 파일에 기록되고, 가져온 후 핸드오프를 삭제할 수 있습니다.", "handoffPrepared": "Zoo Code 마이그레이션 핸드오프가 {{path}}에 준비되었습니다. Zoo Code를 설치하고 이 핸드오프에서 가져오세요.", "handoffFailed": "Zoo Code 마이그레이션 핸드오프 준비 실패: {{error}}" diff --git a/src/i18n/locales/nl/common.json b/src/i18n/locales/nl/common.json index a00c49fc8e7..9d63f48e10a 100644 --- a/src/i18n/locales/nl/common.json +++ b/src/i18n/locales/nl/common.json @@ -30,7 +30,7 @@ "cancel": "Annuleren" }, "notice": "Roo Code stapt over naar Zoo Code. Je kunt een kopie-gebaseerde migratiehandoff voor Zoo voorbereiden zonder je Roo-gegevens te verwijderen.", - "zooNotPublished": "Zoo Code is nog niet gepubliceerd onder een bevestigde Marketplace-extensie-id. De extensieweergave is geopend met een zoekopdracht naar Zoo Code.", + "installUnavailable": "Zoo Code is beschikbaar als ZooCodeOrganization.zoo-code. De automatische installatie is niet voltooid, daarom is de Extensions-weergave geopend zodat je het vanuit je geconfigureerde extensiegalerie kunt installeren.", "preparePrompt": "Een lokale Zoo Code-migratiehandoff voorbereiden? Als je API-sleutels opneemt, worden provider-secrets naar een lokaal bestand geschreven zodat Zoo ze kan importeren en de handoff daarna kan verwijderen.", "handoffPrepared": "Zoo Code-migratiehandoff voorbereid op {{path}}. Installeer Zoo Code en importeer vanuit deze handoff.", "handoffFailed": "Kan Zoo Code-migratiehandoff niet voorbereiden: {{error}}" diff --git a/src/i18n/locales/pl/common.json b/src/i18n/locales/pl/common.json index 6d96e359710..c132c6774bb 100644 --- a/src/i18n/locales/pl/common.json +++ b/src/i18n/locales/pl/common.json @@ -30,7 +30,7 @@ "cancel": "Anuluj" }, "notice": "Roo Code przechodzi na Zoo Code. Możesz przygotować dla Zoo migrację przez kopię bez usuwania danych Roo.", - "zooNotPublished": "Zoo Code nie jest jeszcze opublikowany pod potwierdzonym id rozszerzenia Marketplace. Widok Rozszerzenia został otwarty z wyszukiwaniem Zoo Code.", + "installUnavailable": "Zoo Code jest dostępny jako ZooCodeOrganization.zoo-code. Automatyczna instalacja nie została ukończona, więc otwarto widok Extensions, aby można było zainstalować go ze skonfigurowanej galerii rozszerzeń.", "preparePrompt": "Przygotować lokalną migrację Zoo Code? Dołączenie kluczy API zapisze secrets dostawców do lokalnego pliku, aby Zoo mogło je zaimportować, a następnie usunąć plik po imporcie.", "handoffPrepared": "Migracja Zoo Code została przygotowana w {{path}}. Zainstaluj Zoo Code i zaimportuj dane z tego pliku.", "handoffFailed": "Nie udało się przygotować migracji Zoo Code: {{error}}" diff --git a/src/i18n/locales/pt-BR/common.json b/src/i18n/locales/pt-BR/common.json index f111cfcd9dd..4f1a7d2b2b1 100644 --- a/src/i18n/locales/pt-BR/common.json +++ b/src/i18n/locales/pt-BR/common.json @@ -34,7 +34,7 @@ "cancel": "Cancelar" }, "notice": "Roo Code está migrando para Zoo Code. Você pode preparar uma entrega de migração baseada em cópia para o Zoo sem excluir seus dados do Roo.", - "zooNotPublished": "Zoo Code ainda não foi publicado com um id de extensão confirmado no Marketplace. A visualização de Extensões foi aberta com uma busca por Zoo Code.", + "installUnavailable": "Zoo Code está disponível como ZooCodeOrganization.zoo-code. A instalação automática não foi concluída, então a visualização Extensões foi aberta para que você possa instalá-lo pela galeria de extensões configurada.", "preparePrompt": "Preparar uma entrega local de migração para o Zoo Code? Incluir chaves de API grava os secrets dos provedores em um arquivo local para que o Zoo possa importá-los e depois excluir a entrega após a importação.", "handoffPrepared": "Entrega de migração do Zoo Code preparada em {{path}}. Instale o Zoo Code e importe a partir desta entrega.", "handoffFailed": "Falha ao preparar a entrega de migração do Zoo Code: {{error}}" diff --git a/src/i18n/locales/ru/common.json b/src/i18n/locales/ru/common.json index cca8610c9a0..dd3b7fff812 100644 --- a/src/i18n/locales/ru/common.json +++ b/src/i18n/locales/ru/common.json @@ -30,7 +30,7 @@ "cancel": "Отмена" }, "notice": "Roo Code переходит на Zoo Code. Вы можете подготовить копируемый пакет миграции для Zoo, не удаляя данные Roo.", - "zooNotPublished": "Zoo Code еще не опубликован с подтвержденным id расширения Marketplace. Открыт раздел расширений с поиском Zoo Code.", + "installUnavailable": "Zoo Code доступен как ZooCodeOrganization.zoo-code. Автоматическая установка не завершилась, поэтому открыт раздел Extensions, чтобы вы могли установить его из настроенной галереи расширений.", "preparePrompt": "Подготовить локальный пакет миграции Zoo Code? Если включить API-ключи, secrets провайдеров будут записаны в локальный файл, чтобы Zoo мог импортировать их, а затем удалить пакет после импорта.", "handoffPrepared": "Пакет миграции Zoo Code подготовлен в {{path}}. Установите Zoo Code и импортируйте данные из этого пакета.", "handoffFailed": "Не удалось подготовить пакет миграции Zoo Code: {{error}}" diff --git a/src/i18n/locales/tr/common.json b/src/i18n/locales/tr/common.json index 64862850228..ce1dd9bd254 100644 --- a/src/i18n/locales/tr/common.json +++ b/src/i18n/locales/tr/common.json @@ -30,7 +30,7 @@ "cancel": "İptal" }, "notice": "Roo Code, Zoo Code'a geçiyor. Roo verilerini silmeden Zoo için kopya tabanlı bir geçiş handoff'u hazırlayabilirsin.", - "zooNotPublished": "Zoo Code henüz doğrulanmış bir Marketplace eklenti id'siyle yayınlanmadı. Eklentiler görünümü Zoo Code aramasıyla açıldı.", + "installUnavailable": "Zoo Code, ZooCodeOrganization.zoo-code olarak mevcut. Otomatik yükleme tamamlanmadı, bu yüzden yapılandırılmış eklenti galerinden yükleyebilmen için Extensions görünümü açıldı.", "preparePrompt": "Yerel bir Zoo Code geçiş handoff'u hazırlansın mı? API anahtarlarını dahil etmek, sağlayıcı secrets değerlerini Zoo'nun içe aktarabilmesi ve içe aktarma sonrası handoff'u silebilmesi için yerel bir dosyaya yazar.", "handoffPrepared": "Zoo Code geçiş handoff'u {{path}} konumunda hazırlandı. Zoo Code'u yükle ve bu handoff'tan içe aktar.", "handoffFailed": "Zoo Code geçiş handoff'u hazırlanamadı: {{error}}" diff --git a/src/i18n/locales/vi/common.json b/src/i18n/locales/vi/common.json index d2913757dfa..a03dc1effa8 100644 --- a/src/i18n/locales/vi/common.json +++ b/src/i18n/locales/vi/common.json @@ -30,7 +30,7 @@ "cancel": "Hủy" }, "notice": "Roo Code đang chuyển sang Zoo Code. Bạn có thể chuẩn bị handoff di chuyển dạng sao chép cho Zoo mà không xóa dữ liệu Roo của mình.", - "zooNotPublished": "Zoo Code chưa được phát hành với id tiện ích Marketplace đã xác nhận. Khung Extensions đã được mở với tìm kiếm Zoo Code.", + "installUnavailable": "Zoo Code có sẵn dưới tên ZooCodeOrganization.zoo-code. Quá trình cài đặt tự động chưa hoàn tất, nên khung Extensions đã được mở để bạn có thể cài đặt từ thư viện tiện ích đã cấu hình.", "preparePrompt": "Chuẩn bị handoff di chuyển Zoo Code cục bộ? Bao gồm khóa API sẽ ghi secrets của nhà cung cấp vào một tệp cục bộ để Zoo có thể nhập chúng, rồi xóa handoff sau khi nhập.", "handoffPrepared": "Handoff di chuyển Zoo Code đã được chuẩn bị tại {{path}}. Cài đặt Zoo Code và nhập từ handoff này.", "handoffFailed": "Không thể chuẩn bị handoff di chuyển Zoo Code: {{error}}" diff --git a/src/i18n/locales/zh-CN/common.json b/src/i18n/locales/zh-CN/common.json index 5e969fa0642..abd1026b405 100644 --- a/src/i18n/locales/zh-CN/common.json +++ b/src/i18n/locales/zh-CN/common.json @@ -30,7 +30,7 @@ "cancel": "取消" }, "notice": "Roo Code 正在迁移到 Zoo Code。你可以为 Zoo 准备基于复制的迁移交接包,而不会删除你的 Roo 数据。", - "zooNotPublished": "Zoo Code 尚未以确认的 Marketplace 扩展 id 发布。已打开扩展视图并搜索 Zoo Code。", + "installUnavailable": "Zoo Code 已以 ZooCodeOrganization.zoo-code 提供。自动安装未完成,因此已打开 Extensions 视图,你可以从已配置的扩展图库中安装它。", "preparePrompt": "要准备本地 Zoo Code 迁移交接包吗?包含 API 密钥会将提供商 secrets 写入本地文件,以便 Zoo 导入,并在导入后删除该交接包。", "handoffPrepared": "Zoo Code 迁移交接包已准备在 {{path}}。请安装 Zoo Code 并从此交接包导入。", "handoffFailed": "无法准备 Zoo Code 迁移交接包:{{error}}" diff --git a/src/i18n/locales/zh-TW/common.json b/src/i18n/locales/zh-TW/common.json index b285f024b16..bcc2af47283 100644 --- a/src/i18n/locales/zh-TW/common.json +++ b/src/i18n/locales/zh-TW/common.json @@ -30,7 +30,7 @@ "cancel": "取消" }, "notice": "Roo Code 正在遷移到 Zoo Code。你可以為 Zoo 準備以複製為基礎的遷移交接包,而不會刪除你的 Roo 資料。", - "zooNotPublished": "Zoo Code 尚未以確認的 Marketplace 擴充功能 id 發布。已開啟擴充功能檢視並搜尋 Zoo Code。", + "installUnavailable": "Zoo Code 已以 ZooCodeOrganization.zoo-code 提供。自動安裝未完成,因此已開啟 Extensions 檢視,你可以從已設定的擴充功能圖庫安裝它。", "preparePrompt": "要準備本機 Zoo Code 遷移交接包嗎?包含 API 金鑰會將供應商 secrets 寫入本機檔案,讓 Zoo 匯入,然後在匯入後刪除交接包。", "handoffPrepared": "Zoo Code 遷移交接包已準備在 {{path}}。請安裝 Zoo Code 並從此交接包匯入。", "handoffFailed": "無法準備 Zoo Code 遷移交接包:{{error}}" diff --git a/src/services/zoo-migration/ZooMigration.ts b/src/services/zoo-migration/ZooMigration.ts index 9ebf2bec2d5..fe18ab7b635 100644 --- a/src/services/zoo-migration/ZooMigration.ts +++ b/src/services/zoo-migration/ZooMigration.ts @@ -17,7 +17,7 @@ const HANDOFF_FILE_NAME = "handoff-v1.json" const ZOO_REPOSITORY_URL = "https://github.com/Zoo-Code-Org/Zoo-Code" const ZOO_ANNOUNCEMENT_URL = "https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/" -const ZOO_EXTENSION_ID = process.env.ZOO_CODE_EXTENSION_ID +const ZOO_EXTENSION_ID = "ZooCodeOrganization.zoo-code" const CONFIGURATION_KEYS = [ "allowedCommands", @@ -66,7 +66,7 @@ export type ZooMigrationHandoff = { zoo: { repositoryUrl: string announcementUrl: string - extensionId?: string + extensionId: string } containsSecrets: boolean globalSettings?: GlobalSettings @@ -200,13 +200,12 @@ export async function showZooMigrationNotice( } export async function installOrShowZooExtension(): Promise { - if (ZOO_EXTENSION_ID) { + try { await vscode.commands.executeCommand("workbench.extensions.installExtension", ZOO_EXTENSION_ID) - return + } catch { + await vscode.commands.executeCommand("workbench.extensions.search", ZOO_EXTENSION_ID) + await vscode.window.showInformationMessage(t("common:zooMigration.installUnavailable")) } - - await vscode.commands.executeCommand("workbench.extensions.search", "Zoo Code") - await vscode.window.showInformationMessage(t("common:zooMigration.zooNotPublished")) } export async function promptAndCreateZooMigrationHandoff(options: { diff --git a/src/services/zoo-migration/__tests__/ZooMigration.spec.ts b/src/services/zoo-migration/__tests__/ZooMigration.spec.ts index 3c34e0e90af..ac5f0e19e44 100644 --- a/src/services/zoo-migration/__tests__/ZooMigration.spec.ts +++ b/src/services/zoo-migration/__tests__/ZooMigration.spec.ts @@ -3,7 +3,8 @@ import * as os from "os" import * as path from "path" import * as vscode from "vscode" -import { createZooMigrationHandoff, showZooMigrationNotice } from "../ZooMigration" +import packageJson from "../../../package.json" +import { createZooMigrationHandoff, installOrShowZooExtension, showZooMigrationNotice } from "../ZooMigration" describe("createZooMigrationHandoff", () => { let tmpDir: string @@ -48,6 +49,8 @@ describe("createZooMigrationHandoff", () => { expect(handoffJson.containsSecrets).toBe(false) expect(handoffJson.providerProfiles).toBeUndefined() expect(handoffJson.globalSettings).toEqual({ mode: "code" }) + expect(handoffJson.zoo.extensionId).toBe("ZooCodeOrganization.zoo-code") + expect(Object.keys(handoffJson.vscodeConfiguration).sort()).toEqual(getContributedRooConfigurationKeys()) expect(handoffJson.copiedData).toEqual({ settings: "data/settings", tasks: "data/tasks", @@ -197,6 +200,41 @@ describe("showZooMigrationNotice", () => { }) }) +describe("installOrShowZooExtension", () => { + afterEach(() => { + vi.restoreAllMocks() + }) + + it("installs the published Zoo Code marketplace extension", async () => { + const executeCommand = vi.spyOn(vscode.commands, "executeCommand").mockResolvedValue(undefined) + + await installOrShowZooExtension() + + expect(executeCommand).toHaveBeenCalledWith( + "workbench.extensions.installExtension", + "ZooCodeOrganization.zoo-code", + ) + }) + + it("falls back to extension search when the configured gallery cannot install Zoo Code yet", async () => { + const executeCommand = vi + .spyOn(vscode.commands, "executeCommand") + .mockRejectedValueOnce(new Error("Extension not found")) + .mockResolvedValueOnce(undefined) + const showInformationMessage = vi.spyOn(vscode.window, "showInformationMessage").mockResolvedValue(undefined) + + await installOrShowZooExtension() + + expect(executeCommand).toHaveBeenNthCalledWith( + 1, + "workbench.extensions.installExtension", + "ZooCodeOrganization.zoo-code", + ) + expect(executeCommand).toHaveBeenNthCalledWith(2, "workbench.extensions.search", "ZooCodeOrganization.zoo-code") + expect(showInformationMessage).toHaveBeenCalled() + }) +}) + function makeContext(globalStoragePath: string): vscode.ExtensionContext { return { globalStorageUri: vscode.Uri.file(globalStoragePath), @@ -206,3 +244,9 @@ function makeContext(globalStoragePath: string): vscode.ExtensionContext { }, } as any } + +function getContributedRooConfigurationKeys(): string[] { + return Object.keys((packageJson as any).contributes.configuration.properties) + .map((key) => key.replace(/^roo-cline\./, "")) + .sort() +} From fdd45bbc29187addc235d5b0da121ca4ff837222 Mon Sep 17 00:00:00 2001 From: Elliott de Launay Date: Sat, 9 May 2026 02:00:12 +0000 Subject: [PATCH 4/6] docs(README): adding final release notes --- README.md | 16 ++++++---------- locales/ca/README.md | 16 ++++++---------- locales/de/README.md | 16 ++++++---------- locales/es/README.md | 16 ++++++---------- locales/fr/README.md | 16 ++++++---------- locales/hi/README.md | 16 ++++++---------- locales/id/README.md | 16 ++++++---------- locales/it/README.md | 16 ++++++---------- locales/ja/README.md | 16 ++++++---------- locales/ko/README.md | 16 ++++++---------- locales/nl/README.md | 16 ++++++---------- locales/pl/README.md | 16 ++++++---------- locales/pt-BR/README.md | 16 ++++++---------- locales/ru/README.md | 16 ++++++---------- locales/tr/README.md | 16 ++++++---------- locales/vi/README.md | 16 ++++++---------- locales/zh-CN/README.md | 16 ++++++---------- locales/zh-TW/README.md | 16 ++++++---------- 18 files changed, 108 insertions(+), 180 deletions(-) diff --git a/README.md b/README.md index 498a847aeb7..391f300bee3 100644 --- a/README.md +++ b/README.md @@ -13,19 +13,15 @@ > Your AI-Powered Dev Team, Right in Your Editor -## What's New in v3.53.0 +## Final Roo Code Update: Move to Zoo Code -> ### The Roo Code plugin is not going away. +> ### Roo is back as Zoo Code. > -> You may have seen the [recent announcement](https://x.com/mattrubens/status/2046636598859559114) that Roo Code hit 3 million installs and the original team is going all-in on Roomote. We know that news was hard for a lot of you. This plugin means a lot to us and to you, and we hear you. +> This final Roo Code update helps you move your local setup to the new community-maintained Zoo Code extension. > -> The good news: **a community team has stepped up to carry Roo Code forward**, and we're working with them on an official handoff so the plugin you rely on keeps getting maintained and improved. +> To migrate, install **Zoo Code** from your extension gallery as `ZooCodeOrganization.zoo-code`, then run **Roo Code: Prepare Zoo Migration** from the command palette. Roo creates a copy-based handoff bundle under its global storage with your settings and task history while leaving your original Roo data untouched. Provider profiles and API keys are included only if you explicitly choose to include them. -**What's new in this release:** - -- Add GPT-5.5 support via the OpenAI Codex provider. -- Add Claude Opus 4.7 support on Vertex AI. -- Add previous checkpoint navigation controls in chat so you can step back through prior checkpoints more easily. +Read the community announcement: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Available languages @@ -49,7 +45,7 @@ - [简体中文](locales/zh-CN/README.md) - [繁體中文](locales/zh-TW/README.md) - ... -
+ --- diff --git a/locales/ca/README.md b/locales/ca/README.md index 0713b0d74b6..221477ba9fb 100644 --- a/locales/ca/README.md +++ b/locales/ca/README.md @@ -13,19 +13,15 @@ > El teu equip de desenvolupament impulsat per IA, directament al teu editor -## Novetats de la v3.53.0 +## Actualització final de Roo Code: passa a Zoo Code -> ### El plugin Roo Code no desapareix. +> ### Roo torna com a Zoo Code. > -> Potser has vist l'[anunci recent](https://x.com/mattrubens/status/2046636598859559114) que Roo Code ha arribat a 3 milions d'instal·lacions i que l'equip original es bolca completament amb Roomote. Sabem que aquesta notícia ha estat dura per a molts de vosaltres. Aquest plugin ens importa molt, tant a nosaltres com a tu, i t'escoltem. +> Aquesta actualització final de Roo Code t'ajuda a moure la configuració local a la nova extensió Zoo Code mantinguda per la comunitat. > -> La bona notícia: **un equip de la comunitat ha donat un pas endavant per portar Roo Code cap endavant**, i estem treballant amb ells en un relleu oficial perquè el plugin en què confies continuï rebent manteniment i millores. +> Per migrar, instal·la **Zoo Code** des de la teva galeria d'extensions com a `ZooCodeOrganization.zoo-code` i després executa **Roo Code: Prepare Zoo Migration** des de la paleta d'ordres. Roo crea un paquet de traspàs basat en còpia dins del seu emmagatzematge global amb la teva configuració i l'historial de tasques, sense tocar les dades originals de Roo. Els perfils de proveïdor i les claus d'API només s'inclouen si tries explícitament incloure'ls. -**Novetats d'aquesta versió:** - -- S'ha afegit suport per a GPT-5.5 mitjançant el proveïdor OpenAI Codex. -- S'ha afegit suport per a Claude Opus 4.7 a Vertex AI. -- S'han afegit controls de navegació per checkpoints anteriors al xat, perquè puguis tornar enrere pels checkpoints previs més fàcilment. +Llegeix l'anunci de la comunitat: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Idiomes disponibles @@ -49,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/de/README.md b/locales/de/README.md index 50ac67ca109..de4ae3ce159 100644 --- a/locales/de/README.md +++ b/locales/de/README.md @@ -13,19 +13,15 @@ > Dein KI-gestütztes Dev-Team – direkt in deinem Editor -## Neu in v3.53.0 +## Letztes Roo Code-Update: Wechsel zu Zoo Code -> ### Das Roo Code-Plugin verschwindet nicht. +> ### Roo ist als Zoo Code zurück. > -> Du hast vielleicht die [neuliche Ankündigung](https://x.com/mattrubens/status/2046636598859559114) gesehen, dass Roo Code 3 Millionen Installationen erreicht hat und das ursprüngliche Team sich voll auf Roomote konzentriert. Wir wissen, dass diese Nachricht für viele von euch schwer war. Dieses Plugin bedeutet uns und dir sehr viel, und wir hören dich. +> Dieses letzte Roo Code-Update hilft dir, deine lokale Einrichtung zur neuen, von der Community gepflegten Zoo Code-Erweiterung zu übertragen. > -> Die gute Nachricht: **ein Community-Team hat sich bereit erklärt, Roo Code weiterzuführen**, und wir arbeiten mit ihnen an einer offiziellen Übergabe, damit das Plugin, auf das du dich verlässt, weiterhin gepflegt und verbessert wird. +> Installiere für die Migration **Zoo Code** aus deiner Erweiterungsgalerie als `ZooCodeOrganization.zoo-code` und führe dann **Roo Code: Prepare Zoo Migration** über die Befehlspalette aus. Roo erstellt in seinem globalen Speicher ein kopiebasiertes Übergabepaket mit deinen Einstellungen und deinem Aufgabenverlauf, ohne deine ursprünglichen Roo-Daten zu verändern. Provider-Profile und API-Schlüssel werden nur eingeschlossen, wenn du das ausdrücklich auswählst. -**Neu in dieser Version:** - -- GPT-5.5-Unterstützung über den OpenAI Codex-Provider hinzugefügt. -- Claude Opus 4.7-Unterstützung auf Vertex AI hinzugefügt. -- Steuerelemente zur Navigation zu vorherigen Checkpoints im Chat hinzugefügt, damit du leichter durch frühere Checkpoints zurückspringen kannst. +Lies die Community-Ankündigung: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Verfügbare Sprachen @@ -49,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/es/README.md b/locales/es/README.md index 06d518e44bc..3565585fcbc 100644 --- a/locales/es/README.md +++ b/locales/es/README.md @@ -13,19 +13,15 @@ > Tu equipo de desarrollo con IA, directamente en tu editor -## Novedades de la v3.53.0 +## Actualización final de Roo Code: pasa a Zoo Code -> ### El plugin de Roo Code no va a desaparecer. +> ### Roo vuelve como Zoo Code. > -> Puede que hayas visto el [anuncio reciente](https://x.com/mattrubens/status/2046636598859559114) de que Roo Code ha llegado a 3 millones de instalaciones y que el equipo original se está volcando por completo en Roomote. Sabemos que esa noticia fue dura para muchos de vosotros. Este plugin significa mucho para nosotros y para ti, y te escuchamos. +> Esta actualización final de Roo Code te ayuda a mover tu configuración local a la nueva extensión Zoo Code mantenida por la comunidad. > -> La buena noticia: **un equipo de la comunidad ha dado un paso adelante para seguir adelante con Roo Code**, y estamos trabajando con ellos en un relevo oficial para que el plugin del que dependes siga recibiendo mantenimiento y mejoras. +> Para migrar, instala **Zoo Code** desde tu galería de extensiones como `ZooCodeOrganization.zoo-code` y luego ejecuta **Roo Code: Prepare Zoo Migration** desde la paleta de comandos. Roo crea un paquete de traspaso basado en copia en su almacenamiento global con tu configuración e historial de tareas, sin tocar tus datos originales de Roo. Los perfiles de proveedor y las claves de API solo se incluyen si eliges incluirlos explícitamente. -**Novedades de esta versión:** - -- Se añadió soporte para GPT-5.5 a través del proveedor OpenAI Codex. -- Se añadió soporte para Claude Opus 4.7 en Vertex AI. -- Se añadieron controles de navegación por checkpoints anteriores en el chat para que puedas retroceder por los checkpoints previos más fácilmente. +Lee el anuncio de la comunidad: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Idiomas disponibles @@ -49,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/fr/README.md b/locales/fr/README.md index 2561ac4f4ff..39d09ef1f31 100644 --- a/locales/fr/README.md +++ b/locales/fr/README.md @@ -13,19 +13,15 @@ > Ton équipe de dev propulsée par l'IA, directement dans ton éditeur -## Nouveautés de la v3.53.0 +## Dernière mise à jour de Roo Code : passer à Zoo Code -> ### L'extension Roo Code ne va pas disparaître. +> ### Roo revient sous le nom Zoo Code. > -> Tu as peut-être vu l'[annonce récente](https://x.com/mattrubens/status/2046636598859559114) : Roo Code a franchi les 3 millions d'installations et l'équipe d'origine se consacre désormais entièrement à Roomote. On sait que cette nouvelle a été difficile pour beaucoup d'entre vous. Cette extension compte énormément pour nous comme pour toi, et on t'entend. +> Cette dernière mise à jour de Roo Code t'aide à déplacer ta configuration locale vers la nouvelle extension Zoo Code maintenue par la communauté. > -> La bonne nouvelle : **une équipe de la communauté a décidé de prendre le relais pour faire avancer Roo Code**, et on travaille avec eux sur une transmission officielle pour que l'extension sur laquelle tu comptes continue d'être maintenue et améliorée. +> Pour migrer, installe **Zoo Code** depuis ta galerie d'extensions sous l'id `ZooCodeOrganization.zoo-code`, puis lance **Roo Code: Prepare Zoo Migration** depuis la palette de commandes. Roo crée dans son stockage global un paquet de transfert basé sur une copie avec tes paramètres et ton historique de tâches, sans modifier tes données Roo d'origine. Les profils de fournisseurs et les clés API ne sont inclus que si tu choisis explicitement de les inclure. -**Nouveautés de cette version :** - -- Ajout du support de GPT-5.5 via le fournisseur OpenAI Codex. -- Ajout du support de Claude Opus 4.7 sur Vertex AI. -- Ajout de contrôles de navigation vers les checkpoints précédents dans le chat pour que tu puisses revenir en arrière plus facilement à travers les checkpoints antérieurs. +Lis l'annonce de la communauté : [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Langues disponibles @@ -49,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/hi/README.md b/locales/hi/README.md index 9b26f2dcbc7..9f02f3307fe 100644 --- a/locales/hi/README.md +++ b/locales/hi/README.md @@ -13,19 +13,15 @@ > तुम्हारी AI-संचालित डेवलपमेंट टीम, सीधे तुम्हारे एडिटर में -## v3.53.0 में नया क्या है +## Roo Code का अंतिम अपडेट: Zoo Code पर जाएँ -> ### Roo Code plugin कहीं नहीं जा रहा है। +> ### Roo, Zoo Code के रूप में वापस आ गया है। > -> आपने शायद [हाल ही की घोषणा](https://x.com/mattrubens/status/2046636598859559114) देखी होगी कि Roo Code ने 30 लाख installs पार कर लिए हैं और मूल टीम पूरी तरह Roomote पर focus कर रही है। हम जानते हैं कि यह खबर आप में से कई के लिए कठिन थी। यह plugin हमारे और आपके लिए बहुत मायने रखता है, और हम आपकी बात सुन रहे हैं। +> Roo Code का यह अंतिम अपडेट आपकी स्थानीय सेटअप को समुदाय द्वारा maintained नई Zoo Code extension में ले जाने में मदद करता है। > -> अच्छी खबर: **एक community team ने Roo Code को आगे ले जाने की ज़िम्मेदारी ली है**, और हम उनके साथ एक आधिकारिक handoff पर काम कर रहे हैं ताकि जिस plugin पर आप भरोसा करते हैं, उसका maintenance और improvement जारी रहे। +> माइग्रेट करने के लिए, अपनी extension gallery से **Zoo Code** को `ZooCodeOrganization.zoo-code` के रूप में इंस्टॉल करें, फिर command palette से **Roo Code: Prepare Zoo Migration** चलाएँ। Roo अपने global storage में आपकी settings और task history के साथ copy-based handoff bundle बनाता है, जबकि आपका मूल Roo data untouched रहता है। Provider profiles और API keys तभी शामिल होते हैं जब आप स्पष्ट रूप से उन्हें शामिल करना चुनते हैं। -**इस रिलीज़ में नया क्या है:** - -- OpenAI Codex provider के माध्यम से GPT-5.5 support जोड़ा गया। -- Vertex AI पर Claude Opus 4.7 support जोड़ा गया। -- चैट में पिछले checkpoint navigation controls जोड़े गए ताकि आप पिछले checkpoints पर आसानी से वापस जा सकें। +समुदाय की घोषणा पढ़ें: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 उपलब्ध भाषाएँ @@ -49,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/id/README.md b/locales/id/README.md index 09b82fe866e..84c85b7ff38 100644 --- a/locales/id/README.md +++ b/locales/id/README.md @@ -13,19 +13,15 @@ > Tim dev bertenaga AI-mu, langsung di editor kamu -## Yang Baru di v3.53.0 +## Pembaruan Terakhir Roo Code: Pindah ke Zoo Code -> ### Plugin Roo Code tidak akan hilang. +> ### Roo kembali sebagai Zoo Code. > -> Kamu mungkin sudah melihat [pengumuman baru-baru ini](https://x.com/mattrubens/status/2046636598859559114) bahwa Roo Code mencapai 3 juta instalasi dan tim aslinya sepenuhnya fokus ke Roomote. Kami tahu berita itu berat bagi banyak dari kalian. Plugin ini sangat berarti bagi kami dan bagi kamu, dan kami mendengarmu. +> Pembaruan terakhir Roo Code ini membantumu memindahkan setup lokal ke ekstensi Zoo Code baru yang dikelola komunitas. > -> Kabar baiknya: **sebuah tim komunitas telah maju untuk melanjutkan Roo Code**, dan kami sedang bekerja sama dengan mereka untuk serah terima resmi agar plugin yang kamu andalkan tetap dirawat dan ditingkatkan. +> Untuk migrasi, instal **Zoo Code** dari galeri ekstensi kamu sebagai `ZooCodeOrganization.zoo-code`, lalu jalankan **Roo Code: Prepare Zoo Migration** dari command palette. Roo membuat handoff bundle berbasis salinan di global storage miliknya berisi pengaturan dan riwayat tugasmu, tanpa mengubah data Roo asli. Profil penyedia dan kunci API hanya disertakan jika kamu secara eksplisit memilih untuk menyertakannya. -**Yang baru di rilis ini:** - -- Menambahkan dukungan GPT-5.5 melalui provider OpenAI Codex. -- Menambahkan dukungan Claude Opus 4.7 di Vertex AI. -- Menambahkan kontrol navigasi checkpoint sebelumnya di chat agar kamu bisa melangkah mundur melalui checkpoint sebelumnya dengan lebih mudah. +Baca pengumuman komunitas: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Bahasa yang tersedia @@ -49,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/it/README.md b/locales/it/README.md index 29b692578a8..f8280b8940a 100644 --- a/locales/it/README.md +++ b/locales/it/README.md @@ -13,19 +13,15 @@ > Il tuo team di sviluppo con IA, direttamente nel tuo editor -## Novità in v3.53.0 +## Ultimo aggiornamento di Roo Code: passa a Zoo Code -> ### Il plugin Roo Code non sta per sparire. +> ### Roo torna come Zoo Code. > -> Potresti aver visto l'[annuncio recente](https://x.com/mattrubens/status/2046636598859559114): Roo Code ha raggiunto 3 milioni di installazioni e il team originale si sta concentrando completamente su Roomote. Sappiamo che questa notizia è stata dura per molti di voi. Questo plugin significa tanto per noi e per te, e ti ascoltiamo. +> Questo ultimo aggiornamento di Roo Code ti aiuta a spostare la configurazione locale nella nuova estensione Zoo Code mantenuta dalla community. > -> La buona notizia: **un team della community si è fatto avanti per portare avanti Roo Code**, e stiamo lavorando con loro a un passaggio di consegne ufficiale, così il plugin su cui conti continuerà a essere mantenuto e migliorato. +> Per migrare, installa **Zoo Code** dalla tua galleria estensioni come `ZooCodeOrganization.zoo-code`, poi esegui **Roo Code: Prepare Zoo Migration** dalla palette dei comandi. Roo crea nel suo storage globale un bundle di handoff basato su copia con le tue impostazioni e la cronologia dei task, senza modificare i dati Roo originali. I profili provider e le chiavi API vengono inclusi solo se scegli esplicitamente di includerli. -**Novità in questa versione:** - -- Aggiunto supporto a GPT-5.5 tramite il provider OpenAI Codex. -- Aggiunto supporto a Claude Opus 4.7 su Vertex AI. -- Aggiunti controlli di navigazione dei checkpoint precedenti nella chat così puoi tornare indietro più facilmente attraverso i checkpoint precedenti. +Leggi l'annuncio della community: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Lingue disponibili @@ -49,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/ja/README.md b/locales/ja/README.md index ba30ad20605..c2a34e90797 100644 --- a/locales/ja/README.md +++ b/locales/ja/README.md @@ -13,19 +13,15 @@ > あなたのエディタの中に、AIで強化された開発チームを -## v3.53.0 の新機能 +## Roo Code 最終アップデート: Zoo Code へ移行 -> ### Roo Code プラグインはなくなりません。 +> ### Roo は Zoo Code として戻ってきました。 > -> Roo Code のインストール数が300万に達し、元のチームが Roomote に全力で取り組むという[先日のお知らせ](https://x.com/mattrubens/status/2046636598859559114)をご覧になったかもしれません。この知らせが多くの方にとって辛いものだったことは承知しています。このプラグインは私たちにとっても、あなたにとっても大切な存在であり、皆さんの声はしっかり届いています。 +> この Roo Code の最終アップデートは、ローカル環境をコミュニティがメンテナンスする新しい Zoo Code 拡張機能へ移行するためのものです。 > -> 良いお知らせです:**コミュニティチームが Roo Code を受け継いで前進させることを引き受けてくれました**。頼りにしているこのプラグインが引き続きメンテナンスと改善を受けられるよう、私たちは彼らと公式な引き継ぎを進めています。 +> 移行するには、拡張機能ギャラリーから **Zoo Code** を `ZooCodeOrganization.zoo-code` としてインストールし、コマンドパレットから **Roo Code: Prepare Zoo Migration** を実行してください。Roo はグローバルストレージ内に、設定とタスク履歴を含むコピー方式のハンドオフバンドルを作成します。元の Roo データは変更されません。プロバイダープロファイルと API キーは、明示的に含めることを選択した場合にのみ含まれます。 -**今回のリリースの新機能:** - -- OpenAI Codex プロバイダー経由で GPT-5.5 のサポートを追加。 -- Vertex AI 上での Claude Opus 4.7 のサポートを追加。 -- 以前のチェックポイントに簡単に戻れるように、チャットに以前のチェックポイントへのナビゲーションコントロールを追加。 +コミュニティのお知らせを読む: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 利用可能な言語 @@ -49,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/ko/README.md b/locales/ko/README.md index 6c7e66b7216..43b709d0e38 100644 --- a/locales/ko/README.md +++ b/locales/ko/README.md @@ -13,19 +13,15 @@ > AI로 강화된 너의 개발 팀, 네 에디터 안에 -## v3.53.0의 새로운 기능 +## Roo Code 마지막 업데이트: Zoo Code로 이동 -> ### Roo Code 플러그인은 사라지지 않아요. +> ### Roo가 Zoo Code로 돌아왔어요. > -> Roo Code가 300만 설치를 돌파했고, 원래 팀이 Roomote에 전념하기로 했다는 [최근 발표](https://x.com/mattrubens/status/2046636598859559114)를 보셨을 거예요. 많은 분들께 이 소식이 힘들게 다가왔다는 걸 알고 있어요. 이 플러그인은 저희와 여러분 모두에게 큰 의미가 있고, 여러분의 목소리를 듣고 있어요. +> 이번 Roo Code 마지막 업데이트는 로컬 설정을 커뮤니티가 유지 관리하는 새 Zoo Code 확장으로 옮길 수 있게 도와줘요. > -> 좋은 소식이 있어요: **커뮤니티 팀이 Roo Code를 계속 이어가기로 나섰어요**. 여러분이 의지하는 이 플러그인이 계속 유지 관리되고 개선될 수 있도록, 저희는 그들과 공식적인 인수인계를 진행하고 있어요. +> 마이그레이션하려면 확장 갤러리에서 **Zoo Code**를 `ZooCodeOrganization.zoo-code`로 설치한 다음, 명령 팔레트에서 **Roo Code: Prepare Zoo Migration**을 실행하세요. Roo는 전역 저장소에 설정과 작업 기록이 담긴 복사 기반 핸드오프 번들을 만들고, 기존 Roo 데이터는 그대로 둡니다. 제공자 프로필과 API 키는 명시적으로 포함하기로 선택한 경우에만 포함됩니다. -**이번 릴리스의 새로운 기능:** - -- OpenAI Codex 제공업체를 통해 GPT-5.5 지원을 추가했어요. -- Vertex AI에서 Claude Opus 4.7 지원을 추가했어요. -- 이전 체크포인트로 더 쉽게 돌아갈 수 있도록 채팅에 이전 체크포인트 탐색 컨트롤을 추가했어요. +커뮤니티 발표 읽기: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 사용 가능한 언어 @@ -49,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/nl/README.md b/locales/nl/README.md index 242bfaade8b..56ee064d8d0 100644 --- a/locales/nl/README.md +++ b/locales/nl/README.md @@ -13,19 +13,15 @@ > Jouw AI-aangedreven dev-team, rechtstreeks in je editor -## Nieuw in v3.53.0 +## Laatste Roo Code-update: overstappen naar Zoo Code -> ### De Roo Code-plugin gaat niet weg. +> ### Roo is terug als Zoo Code. > -> Je hebt misschien de [recente aankondiging](https://x.com/mattrubens/status/2046636598859559114) gezien dat Roo Code 3 miljoen installaties heeft bereikt en het oorspronkelijke team zich volledig richt op Roomote. We weten dat dat nieuws voor velen van jullie moeilijk was. Deze plugin betekent veel voor ons en voor jou, en we horen je. +> Deze laatste Roo Code-update helpt je om je lokale setup naar de nieuwe, door de community onderhouden Zoo Code-extensie te verplaatsen. > -> Het goede nieuws: **een community-team heeft zich aangemeld om Roo Code voort te zetten**, en we werken samen aan een officiële overdracht, zodat de plugin waar je op vertrouwt onderhouden en verbeterd blijft worden. +> Installeer voor de migratie **Zoo Code** vanuit je extensiegalerie als `ZooCodeOrganization.zoo-code` en voer daarna **Roo Code: Prepare Zoo Migration** uit via het opdrachtenpalet. Roo maakt in zijn globale opslag een kopie-gebaseerde handoff-bundel met je instellingen en taakgeschiedenis, terwijl je oorspronkelijke Roo-gegevens ongemoeid blijven. Providerprofielen en API-sleutels worden alleen opgenomen als je daar expliciet voor kiest. -**Wat is er nieuw in deze versie:** - -- GPT-5.5-ondersteuning toegevoegd via de OpenAI Codex-provider. -- Claude Opus 4.7-ondersteuning op Vertex AI toegevoegd. -- Bediening toegevoegd in de chat om terug te navigeren naar eerdere checkpoints, zodat je makkelijker kunt teruggaan door vorige checkpoints. +Lees de community-aankondiging: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Beschikbare talen @@ -49,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/pl/README.md b/locales/pl/README.md index 1f389fb9d22..0a19c7b1e13 100644 --- a/locales/pl/README.md +++ b/locales/pl/README.md @@ -13,19 +13,15 @@ > Twój zespół deweloperski zasilany AI — prosto w edytorze -## Nowości w v3.53.0 +## Ostatnia aktualizacja Roo Code: przejdź na Zoo Code -> ### Wtyczka Roo Code nie znika. +> ### Roo wraca jako Zoo Code. > -> Być może widziałeś [niedawne ogłoszenie](https://x.com/mattrubens/status/2046636598859559114), że Roo Code osiągnął 3 miliony instalacji, a oryginalny zespół całkowicie skupia się na Roomote. Wiemy, że ta wiadomość była trudna dla wielu z was. Ta wtyczka wiele dla nas i dla ciebie znaczy, i słyszymy was. +> Ta ostatnia aktualizacja Roo Code pomaga przenieść lokalną konfigurację do nowego rozszerzenia Zoo Code utrzymywanego przez społeczność. > -> Dobra wiadomość: **zespół społeczności zgłosił się, żeby poprowadzić Roo Code dalej**, i pracujemy z nimi nad oficjalnym przekazaniem, żeby wtyczka, na której polegasz, była nadal utrzymywana i ulepszana. +> Aby przeprowadzić migrację, zainstaluj **Zoo Code** z galerii rozszerzeń jako `ZooCodeOrganization.zoo-code`, a następnie uruchom **Roo Code: Prepare Zoo Migration** z palety poleceń. Roo tworzy w swoim globalnym magazynie pakiet handoff oparty na kopii, zawierający twoje ustawienia i historię zadań, bez zmieniania oryginalnych danych Roo. Profile dostawców i klucze API są dołączane tylko wtedy, gdy wyraźnie wybierzesz ich dołączenie. -**Nowości w tej wersji:** - -- Dodano obsługę GPT-5.5 przez dostawcę OpenAI Codex. -- Dodano obsługę Claude Opus 4.7 w Vertex AI. -- Dodano w czacie kontrolki nawigacji do poprzednich checkpointów, żebyś mógł łatwiej cofać się do wcześniejszych checkpointów. +Przeczytaj ogłoszenie społeczności: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Dostępne języki @@ -49,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/pt-BR/README.md b/locales/pt-BR/README.md index 95c5de5aaff..e0ebdd45377 100644 --- a/locales/pt-BR/README.md +++ b/locales/pt-BR/README.md @@ -13,19 +13,15 @@ > Seu time de desenvolvimento com IA, direto no seu editor -## Novidades na v3.53.0 +## Atualização final do Roo Code: migre para o Zoo Code -> ### O plugin Roo Code não vai acabar. +> ### Roo voltou como Zoo Code. > -> Você pode ter visto o [anúncio recente](https://x.com/mattrubens/status/2046636598859559114) de que o Roo Code atingiu 3 milhões de instalações e a equipe original está se dedicando totalmente ao Roomote. Sabemos que essa notícia foi difícil para muitos de vocês. Esse plugin significa muito para nós e para você, e ouvimos o que você tem a dizer. +> Esta atualização final do Roo Code ajuda você a mover sua configuração local para a nova extensão Zoo Code mantida pela comunidade. > -> A boa notícia: **um time da comunidade assumiu a tarefa de levar o Roo Code adiante**, e estamos trabalhando com eles em uma transição oficial para que o plugin em que você confia continue recebendo manutenção e melhorias. +> Para migrar, instale **Zoo Code** pela sua galeria de extensões como `ZooCodeOrganization.zoo-code` e depois execute **Roo Code: Prepare Zoo Migration** pela paleta de comandos. O Roo cria um pacote de handoff baseado em cópia no armazenamento global dele com suas configurações e histórico de tarefas, sem alterar seus dados originais do Roo. Perfis de provedores e chaves de API só são incluídos se você escolher explicitamente incluí-los. -**Novidades nesta versão:** - -- Adicionado suporte ao GPT-5.5 através do provedor OpenAI Codex. -- Adicionado suporte ao Claude Opus 4.7 no Vertex AI. -- Adicionados controles de navegação por checkpoints anteriores no chat para você voltar por checkpoints anteriores com mais facilidade. +Leia o anúncio da comunidade: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Idiomas disponíveis @@ -49,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/ru/README.md b/locales/ru/README.md index dbfdcf7f64d..0dec9372060 100644 --- a/locales/ru/README.md +++ b/locales/ru/README.md @@ -13,19 +13,15 @@ > Твоя команда разработчиков на ИИ — прямо в редакторе -## Что нового в v3.53.0 +## Финальное обновление Roo Code: переход на Zoo Code -> ### Плагин Roo Code никуда не денется. +> ### Roo возвращается как Zoo Code. > -> Возможно, ты видел [недавнее объявление](https://x.com/mattrubens/status/2046636598859559114) о том, что Roo Code достиг 3 миллионов установок, а оригинальная команда полностью переключается на Roomote. Мы понимаем, что эта новость была непростой для многих из вас. Этот плагин много значит для нас и для тебя, и мы тебя слышим. +> Это финальное обновление Roo Code помогает перенести локальную настройку в новое расширение Zoo Code, поддерживаемое сообществом. > -> Хорошая новость: **команда сообщества взяла на себя задачу продолжать развивать Roo Code**, и мы работаем с ними над официальной передачей, чтобы плагин, на который ты полагаешься, продолжал получать поддержку и улучшения. +> Для миграции установите **Zoo Code** из вашей галереи расширений как `ZooCodeOrganization.zoo-code`, затем запустите **Roo Code: Prepare Zoo Migration** из палитры команд. Roo создаст в своем глобальном хранилище копируемый пакет handoff с вашими настройками и историей задач, не изменяя исходные данные Roo. Профили провайдеров и API-ключи включаются только если вы явно выберете их включение. -**Что нового в этом релизе:** - -- Добавлена поддержка GPT-5.5 через провайдер OpenAI Codex. -- Добавлена поддержка Claude Opus 4.7 в Vertex AI. -- В чат добавлены элементы управления навигацией по предыдущим контрольным точкам, чтобы ты мог легче переходить назад через ранее созданные контрольные точки. +Прочитайте объявление сообщества: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Доступные языки @@ -49,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/tr/README.md b/locales/tr/README.md index 3b662b3b9a1..c4bae664a27 100644 --- a/locales/tr/README.md +++ b/locales/tr/README.md @@ -13,19 +13,15 @@ > AI destekli dev ekibin, doğrudan editörünün içinde -## v3.53.0'daki Yenilikler +## Son Roo Code Güncellemesi: Zoo Code'a geç -> ### Roo Code eklentisi bir yere gitmiyor. +> ### Roo, Zoo Code olarak geri döndü. > -> Roo Code'un 3 milyon kuruluma ulaştığı ve orijinal ekibin tüm enerjisini Roomote'a verdiği [son duyuruyu](https://x.com/mattrubens/status/2046636598859559114) görmüş olabilirsin. Bu haberin birçoğunuz için zor olduğunu biliyoruz. Bu eklenti bizim ve senin için çok şey ifade ediyor ve seni duyuyoruz. +> Bu son Roo Code güncellemesi, yerel kurulumunu topluluk tarafından sürdürülen yeni Zoo Code eklentisine taşımanı sağlar. > -> İyi haber: **bir topluluk ekibi Roo Code'u ileriye taşımak için öne çıktı**, ve güvendiğin eklentinin bakımı ve geliştirilmesinin sürmesi için onlarla resmi bir devir çalışması yürütüyoruz. +> Geçiş yapmak için **Zoo Code**'u eklenti galerinden `ZooCodeOrganization.zoo-code` olarak yükle, ardından komut paletinden **Roo Code: Prepare Zoo Migration** komutunu çalıştır. Roo, global depolamasında ayarların ve görev geçmişinle kopya tabanlı bir handoff paketi oluşturur; orijinal Roo verilerine dokunmaz. Sağlayıcı profilleri ve API anahtarları yalnızca açıkça dahil etmeyi seçersen dahil edilir. -**Bu sürümdeki yenilikler:** - -- OpenAI Codex sağlayıcısı üzerinden GPT-5.5 desteği eklendi. -- Vertex AI'da Claude Opus 4.7 desteği eklendi. -- Önceki checkpoint'ler arasında daha kolay geri adım atabilmen için sohbete önceki checkpoint navigasyon kontrolleri eklendi. +Topluluk duyurusunu oku: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Mevcut diller @@ -49,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/vi/README.md b/locales/vi/README.md index 60dbbb99e04..0c41b375df9 100644 --- a/locales/vi/README.md +++ b/locales/vi/README.md @@ -13,19 +13,15 @@ > Đội ngũ dev dùng AI của bạn, ngay trong trình chỉnh sửa -## Điểm mới trong v3.53.0 +## Bản cập nhật cuối của Roo Code: chuyển sang Zoo Code -> ### Plugin Roo Code sẽ không biến mất. +> ### Roo trở lại dưới tên Zoo Code. > -> Bạn có thể đã thấy [thông báo gần đây](https://x.com/mattrubens/status/2046636598859559114) rằng Roo Code đã đạt 3 triệu lượt cài đặt và đội ngũ ban đầu đang dồn toàn lực cho Roomote. Chúng tôi biết rằng tin này thật khó khăn với nhiều bạn. Plugin này có ý nghĩa rất lớn với chúng tôi và với bạn, và chúng tôi lắng nghe bạn. +> Bản cập nhật cuối này của Roo Code giúp bạn chuyển thiết lập cục bộ sang tiện ích Zoo Code mới do cộng đồng duy trì. > -> Tin tốt: **một đội ngũ từ cộng đồng đã đứng ra tiếp tục đưa Roo Code đi tiếp**, và chúng tôi đang làm việc với họ về việc bàn giao chính thức để plugin mà bạn đang tin cậy tiếp tục được bảo trì và cải thiện. +> Để di chuyển, hãy cài đặt **Zoo Code** từ thư viện tiện ích của bạn với mã `ZooCodeOrganization.zoo-code`, rồi chạy **Roo Code: Prepare Zoo Migration** từ command palette. Roo tạo một handoff bundle dạng sao chép trong global storage của Roo, bao gồm cài đặt và lịch sử tác vụ của bạn, đồng thời giữ nguyên dữ liệu Roo gốc. Hồ sơ nhà cung cấp và khóa API chỉ được bao gồm nếu bạn chủ động chọn đưa chúng vào. -**Điểm mới trong bản phát hành này:** - -- Thêm hỗ trợ GPT-5.5 thông qua nhà cung cấp OpenAI Codex. -- Thêm hỗ trợ Claude Opus 4.7 trên Vertex AI. -- Thêm các điều khiển điều hướng checkpoint trước đó trong chat để bạn có thể quay lại các checkpoint trước dễ dàng hơn. +Đọc thông báo từ cộng đồng: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Các ngôn ngữ có sẵn @@ -49,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/zh-CN/README.md b/locales/zh-CN/README.md index 7d7c9741205..00781546ce4 100644 --- a/locales/zh-CN/README.md +++ b/locales/zh-CN/README.md @@ -13,19 +13,15 @@ > 你的 AI 驱动开发团队,就在你的编辑器里 -## v3.53.0 新增内容 +## Roo Code 最终更新:迁移到 Zoo Code -> ### Roo Code 插件不会消失。 +> ### Roo 以 Zoo Code 的形式回来了。 > -> 你可能已经看到[最近的公告](https://x.com/mattrubens/status/2046636598859559114):Roo Code 已突破 300 万次安装,原团队正全力投入 Roomote。我们知道这个消息让许多人感到难受。这个插件对我们和你都意义重大,你的心声我们听到了。 +> 这次 Roo Code 的最终更新会帮助你把本地设置迁移到由社区维护的新 Zoo Code 扩展。 > -> 好消息是:**一支社区团队已挺身而出,继续推进 Roo Code**,我们正与他们协作进行正式交接,让你所依赖的插件继续得到维护和改进。 +> 要迁移,请从你的扩展图库安装 **Zoo Code**,扩展 ID 为 `ZooCodeOrganization.zoo-code`,然后从命令面板运行 **Roo Code: Prepare Zoo Migration**。Roo 会在其全局存储中创建一个基于复制的交接包,包含你的设置和任务历史,同时保留原始 Roo 数据不变。只有在你明确选择包含时,才会包含提供商配置文件和 API 密钥。 -**本次发布的新增内容:** - -- 通过 OpenAI Codex 提供商新增对 GPT-5.5 的支持。 -- 在 Vertex AI 上新增对 Claude Opus 4.7 的支持。 -- 在聊天中新增了上一存档点导航控件,让你可以更轻松地回退到此前的存档点。 +阅读社区公告:[Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 可用语言 @@ -49,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/zh-TW/README.md b/locales/zh-TW/README.md index 659e515bff4..74a0e7d2a42 100644 --- a/locales/zh-TW/README.md +++ b/locales/zh-TW/README.md @@ -13,19 +13,15 @@ > 您的 AI 驅動開發團隊,就在您的編輯器中 -## v3.53.0 新功能 +## Roo Code 最終更新:遷移到 Zoo Code -> ### Roo Code 外掛不會消失。 +> ### Roo 以 Zoo Code 的形式回來了。 > -> 你可能已經看到[最近的公告](https://x.com/mattrubens/status/2046636598859559114):Roo Code 已突破 300 萬次安裝,原團隊將全心投入 Roomote。我們知道這個消息讓許多人感到難受。這個外掛對我們和你都意義重大,你的心聲我們聽到了。 +> 這次 Roo Code 的最終更新會協助你把本機設定遷移到由社群維護的新 Zoo Code 擴充功能。 > -> 好消息是:**一支社群團隊已挺身而出,繼續推進 Roo Code**,我們正與他們協作進行正式交接,讓你所仰賴的外掛持續受到維護與改進。 +> 若要遷移,請從你的擴充功能圖庫安裝 **Zoo Code**,擴充功能 ID 為 `ZooCodeOrganization.zoo-code`,然後從命令選擇區執行 **Roo Code: Prepare Zoo Migration**。Roo 會在其全域儲存空間中建立以複製為基礎的交接包,包含你的設定和任務歷史,同時保留原始 Roo 資料不變。只有在你明確選擇包含時,才會包含供應商設定檔和 API 金鑰。 -**此版本新增內容:** - -- 透過 OpenAI Codex 供應商新增對 GPT-5.5 的支援。 -- 在 Vertex AI 上新增對 Claude Opus 4.7 的支援。 -- 在聊天中新增了前一個存檔點導覽控制項,讓你可以更輕鬆地回到此前的存檔點。 +閱讀社群公告:[Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 支援語言 @@ -49,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- From e6c668802487a0c98b990709df577f30c0c3d9a9 Mon Sep 17 00:00:00 2001 From: Elliott de Launay Date: Sat, 9 May 2026 13:41:19 +0000 Subject: [PATCH 5/6] docs(README): language --- README.md | 12 +++++----- locales/ca/README.md | 12 +++++----- locales/de/README.md | 12 +++++----- locales/es/README.md | 12 +++++----- locales/fr/README.md | 12 +++++----- locales/hi/README.md | 12 +++++----- locales/id/README.md | 12 +++++----- locales/it/README.md | 12 +++++----- locales/ja/README.md | 12 +++++----- locales/ko/README.md | 12 +++++----- locales/nl/README.md | 12 +++++----- locales/pl/README.md | 12 +++++----- locales/pt-BR/README.md | 12 +++++----- locales/ru/README.md | 12 +++++----- locales/tr/README.md | 12 +++++----- locales/vi/README.md | 12 +++++----- locales/zh-CN/README.md | 12 +++++----- locales/zh-TW/README.md | 12 +++++----- src/i18n/locales/ca/common.json | 10 ++++---- src/i18n/locales/de/common.json | 10 ++++---- src/i18n/locales/en/common.json | 10 ++++---- src/i18n/locales/es/common.json | 10 ++++---- src/i18n/locales/fr/common.json | 10 ++++---- src/i18n/locales/hi/common.json | 10 ++++---- src/i18n/locales/id/common.json | 10 ++++---- src/i18n/locales/it/common.json | 10 ++++---- src/i18n/locales/ja/common.json | 10 ++++---- src/i18n/locales/ko/common.json | 10 ++++---- src/i18n/locales/nl/common.json | 10 ++++---- src/i18n/locales/pl/common.json | 10 ++++---- src/i18n/locales/pt-BR/common.json | 10 ++++---- src/i18n/locales/ru/common.json | 10 ++++---- src/i18n/locales/tr/common.json | 10 ++++---- src/i18n/locales/vi/common.json | 10 ++++---- src/i18n/locales/zh-CN/common.json | 10 ++++---- src/i18n/locales/zh-TW/common.json | 10 ++++---- src/package.nls.ca.json | 2 +- src/package.nls.de.json | 2 +- src/package.nls.es.json | 2 +- src/package.nls.fr.json | 2 +- src/package.nls.hi.json | 2 +- src/package.nls.id.json | 2 +- src/package.nls.it.json | 2 +- src/package.nls.ja.json | 2 +- src/package.nls.json | 2 +- src/package.nls.ko.json | 2 +- src/package.nls.nl.json | 2 +- src/package.nls.pl.json | 2 +- src/package.nls.pt-BR.json | 2 +- src/package.nls.ru.json | 2 +- src/package.nls.tr.json | 2 +- src/package.nls.vi.json | 2 +- src/package.nls.zh-CN.json | 2 +- src/package.nls.zh-TW.json | 2 +- .../chat/__tests__/Announcement.spec.tsx | 24 +++++++++---------- webview-ui/src/i18n/locales/ca/chat.json | 16 ++++++------- webview-ui/src/i18n/locales/de/chat.json | 16 ++++++------- webview-ui/src/i18n/locales/en/chat.json | 16 ++++++------- webview-ui/src/i18n/locales/es/chat.json | 16 ++++++------- webview-ui/src/i18n/locales/fr/chat.json | 16 ++++++------- webview-ui/src/i18n/locales/hi/chat.json | 16 ++++++------- webview-ui/src/i18n/locales/id/chat.json | 16 ++++++------- webview-ui/src/i18n/locales/it/chat.json | 16 ++++++------- webview-ui/src/i18n/locales/ja/chat.json | 16 ++++++------- webview-ui/src/i18n/locales/ko/chat.json | 16 ++++++------- webview-ui/src/i18n/locales/nl/chat.json | 16 ++++++------- webview-ui/src/i18n/locales/pl/chat.json | 16 ++++++------- webview-ui/src/i18n/locales/pt-BR/chat.json | 16 ++++++------- webview-ui/src/i18n/locales/ru/chat.json | 16 ++++++------- webview-ui/src/i18n/locales/tr/chat.json | 16 ++++++------- webview-ui/src/i18n/locales/vi/chat.json | 16 ++++++------- webview-ui/src/i18n/locales/zh-CN/chat.json | 16 ++++++------- webview-ui/src/i18n/locales/zh-TW/chat.json | 16 ++++++------- 73 files changed, 372 insertions(+), 372 deletions(-) diff --git a/README.md b/README.md index 391f300bee3..582ae64c203 100644 --- a/README.md +++ b/README.md @@ -13,15 +13,15 @@ > Your AI-Powered Dev Team, Right in Your Editor -## Final Roo Code Update: Move to Zoo Code +## Final Roo Code Update: Community handoff option -> ### Roo is back as Zoo Code. +> ### Roo Code is winding down. > -> This final Roo Code update helps you move your local setup to the new community-maintained Zoo Code extension. +> This final Roo Code update adds a copy-based handoff for users who want to try Zoo Code, a separate community-maintained extension. > -> To migrate, install **Zoo Code** from your extension gallery as `ZooCodeOrganization.zoo-code`, then run **Roo Code: Prepare Zoo Migration** from the command palette. Roo creates a copy-based handoff bundle under its global storage with your settings and task history while leaving your original Roo data untouched. Provider profiles and API keys are included only if you explicitly choose to include them. +> To try it, install **Zoo Code** from your extension gallery as `ZooCodeOrganization.zoo-code`, then run **Roo Code: Prepare Zoo Code Handoff** from the command palette. Roo creates a local handoff bundle under its global storage with your settings and task history while leaving your original Roo data untouched. Provider profiles and API keys are included only if you explicitly choose to include them. -Read the community announcement: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +Read the [Zoo Code community announcement](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Available languages @@ -45,7 +45,7 @@ Read the community announcement: [Roo is back as Zoo](https://www.reddit.com/r/R - [简体中文](locales/zh-CN/README.md) - [繁體中文](locales/zh-TW/README.md) - ... -
+ --- diff --git a/locales/ca/README.md b/locales/ca/README.md index 221477ba9fb..c90111e2b6c 100644 --- a/locales/ca/README.md +++ b/locales/ca/README.md @@ -13,15 +13,15 @@ > El teu equip de desenvolupament impulsat per IA, directament al teu editor -## Actualització final de Roo Code: passa a Zoo Code +## Actualització final de Roo Code: opció de traspàs comunitària -> ### Roo torna com a Zoo Code. +> ### Roo Code està arribant al final. > -> Aquesta actualització final de Roo Code t'ajuda a moure la configuració local a la nova extensió Zoo Code mantinguda per la comunitat. +> Aquesta darrera actualització de Roo Code afegeix un traspàs basat en còpia per als usuaris que vulguin provar Zoo Code, una extensió separada mantinguda per la comunitat. > -> Per migrar, instal·la **Zoo Code** des de la teva galeria d'extensions com a `ZooCodeOrganization.zoo-code` i després executa **Roo Code: Prepare Zoo Migration** des de la paleta d'ordres. Roo crea un paquet de traspàs basat en còpia dins del seu emmagatzematge global amb la teva configuració i l'historial de tasques, sense tocar les dades originals de Roo. Els perfils de proveïdor i les claus d'API només s'inclouen si tries explícitament incloure'ls. +> Per provar-lo, instal·la **Zoo Code** des de la teva galeria d'extensions com a `ZooCodeOrganization.zoo-code` i després executa **Roo Code: Prepare Zoo Code Handoff** des de la paleta d'ordres. Roo crea un paquet local de traspàs dins del seu emmagatzematge global amb la teva configuració i l'historial de tasques, sense tocar les dades originals de Roo. Els perfils de proveïdor i les claus d'API només s'inclouen si tries explícitament incloure'ls. -Llegeix l'anunci de la comunitat: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +Llegeix l'[anunci de la comunitat de Zoo Code](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Idiomes disponibles @@ -45,7 +45,7 @@ Llegeix l'anunci de la comunitat: [Roo is back as Zoo](https://www.reddit.com/r/ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/de/README.md b/locales/de/README.md index de4ae3ce159..0ba057df7ae 100644 --- a/locales/de/README.md +++ b/locales/de/README.md @@ -13,15 +13,15 @@ > Dein KI-gestütztes Dev-Team – direkt in deinem Editor -## Letztes Roo Code-Update: Wechsel zu Zoo Code +## Letztes Roo Code-Update: Community-Übergabeoption -> ### Roo ist als Zoo Code zurück. +> ### Roo Code läuft aus. > -> Dieses letzte Roo Code-Update hilft dir, deine lokale Einrichtung zur neuen, von der Community gepflegten Zoo Code-Erweiterung zu übertragen. +> Dieses letzte Roo Code-Update fügt eine kopiebasierte Übergabe für Nutzer hinzu, die Zoo Code ausprobieren möchten, eine separate, von der Community gepflegte Erweiterung. > -> Installiere für die Migration **Zoo Code** aus deiner Erweiterungsgalerie als `ZooCodeOrganization.zoo-code` und führe dann **Roo Code: Prepare Zoo Migration** über die Befehlspalette aus. Roo erstellt in seinem globalen Speicher ein kopiebasiertes Übergabepaket mit deinen Einstellungen und deinem Aufgabenverlauf, ohne deine ursprünglichen Roo-Daten zu verändern. Provider-Profile und API-Schlüssel werden nur eingeschlossen, wenn du das ausdrücklich auswählst. +> Um es auszuprobieren, installiere **Zoo Code** aus deiner Erweiterungsgalerie als `ZooCodeOrganization.zoo-code` und führe dann **Roo Code: Prepare Zoo Code Handoff** über die Befehlspalette aus. Roo erstellt in seinem globalen Speicher ein lokales Übergabepaket mit deinen Einstellungen und deinem Aufgabenverlauf, ohne deine ursprünglichen Roo-Daten zu verändern. Provider-Profile und API-Schlüssel werden nur eingeschlossen, wenn du das ausdrücklich auswählst. -Lies die Community-Ankündigung: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +Lies die [Zoo Code-Community-Ankündigung](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Verfügbare Sprachen @@ -45,7 +45,7 @@ Lies die Community-Ankündigung: [Roo is back as Zoo](https://www.reddit.com/r/R - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/es/README.md b/locales/es/README.md index 3565585fcbc..327dde21cde 100644 --- a/locales/es/README.md +++ b/locales/es/README.md @@ -13,15 +13,15 @@ > Tu equipo de desarrollo con IA, directamente en tu editor -## Actualización final de Roo Code: pasa a Zoo Code +## Actualización final de Roo Code: opción de traspaso comunitaria -> ### Roo vuelve como Zoo Code. +> ### Roo Code está llegando a su fin. > -> Esta actualización final de Roo Code te ayuda a mover tu configuración local a la nueva extensión Zoo Code mantenida por la comunidad. +> Esta actualización final de Roo Code añade un traspaso basado en copia para quienes quieran probar Zoo Code, una extensión separada mantenida por la comunidad. > -> Para migrar, instala **Zoo Code** desde tu galería de extensiones como `ZooCodeOrganization.zoo-code` y luego ejecuta **Roo Code: Prepare Zoo Migration** desde la paleta de comandos. Roo crea un paquete de traspaso basado en copia en su almacenamiento global con tu configuración e historial de tareas, sin tocar tus datos originales de Roo. Los perfiles de proveedor y las claves de API solo se incluyen si eliges incluirlos explícitamente. +> Para probarlo, instala **Zoo Code** desde tu galería de extensiones como `ZooCodeOrganization.zoo-code` y luego ejecuta **Roo Code: Prepare Zoo Code Handoff** desde la paleta de comandos. Roo crea un paquete local de traspaso en su almacenamiento global con tu configuración e historial de tareas, sin tocar tus datos originales de Roo. Los perfiles de proveedor y las claves de API solo se incluyen si eliges incluirlos explícitamente. -Lee el anuncio de la comunidad: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +Lee el [anuncio de la comunidad de Zoo Code](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Idiomas disponibles @@ -45,7 +45,7 @@ Lee el anuncio de la comunidad: [Roo is back as Zoo](https://www.reddit.com/r/Ro - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/fr/README.md b/locales/fr/README.md index 39d09ef1f31..4a425f736e3 100644 --- a/locales/fr/README.md +++ b/locales/fr/README.md @@ -13,15 +13,15 @@ > Ton équipe de dev propulsée par l'IA, directement dans ton éditeur -## Dernière mise à jour de Roo Code : passer à Zoo Code +## Dernière mise à jour de Roo Code : option de transfert communautaire -> ### Roo revient sous le nom Zoo Code. +> ### Roo Code arrive à son terme. > -> Cette dernière mise à jour de Roo Code t'aide à déplacer ta configuration locale vers la nouvelle extension Zoo Code maintenue par la communauté. +> Cette dernière mise à jour de Roo Code ajoute un transfert basé sur une copie pour les utilisateurs qui veulent essayer Zoo Code, une extension distincte maintenue par la communauté. > -> Pour migrer, installe **Zoo Code** depuis ta galerie d'extensions sous l'id `ZooCodeOrganization.zoo-code`, puis lance **Roo Code: Prepare Zoo Migration** depuis la palette de commandes. Roo crée dans son stockage global un paquet de transfert basé sur une copie avec tes paramètres et ton historique de tâches, sans modifier tes données Roo d'origine. Les profils de fournisseurs et les clés API ne sont inclus que si tu choisis explicitement de les inclure. +> Pour l'essayer, installe **Zoo Code** depuis ta galerie d'extensions sous l'id `ZooCodeOrganization.zoo-code`, puis lance **Roo Code: Prepare Zoo Code Handoff** depuis la palette de commandes. Roo crée dans son stockage global un paquet de transfert local avec tes paramètres et ton historique de tâches, sans modifier tes données Roo d'origine. Les profils de fournisseurs et les clés API ne sont inclus que si tu choisis explicitement de les inclure. -Lis l'annonce de la communauté : [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +Lis l'[annonce de la communauté Zoo Code](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Langues disponibles @@ -45,7 +45,7 @@ Lis l'annonce de la communauté : [Roo is back as Zoo](https://www.reddit.com/r/ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/hi/README.md b/locales/hi/README.md index 9f02f3307fe..305b6c69301 100644 --- a/locales/hi/README.md +++ b/locales/hi/README.md @@ -13,15 +13,15 @@ > तुम्हारी AI-संचालित डेवलपमेंट टीम, सीधे तुम्हारे एडिटर में -## Roo Code का अंतिम अपडेट: Zoo Code पर जाएँ +## Roo Code का अंतिम अपडेट: community handoff option -> ### Roo, Zoo Code के रूप में वापस आ गया है। +> ### Roo Code अब समाप्ति की ओर है। > -> Roo Code का यह अंतिम अपडेट आपकी स्थानीय सेटअप को समुदाय द्वारा maintained नई Zoo Code extension में ले जाने में मदद करता है। +> यह अंतिम Roo Code अपडेट उन उपयोगकर्ताओं के लिए copy-based handoff जोड़ता है जो Zoo Code आज़माना चाहते हैं, जो community-maintained अलग extension है. > -> माइग्रेट करने के लिए, अपनी extension gallery से **Zoo Code** को `ZooCodeOrganization.zoo-code` के रूप में इंस्टॉल करें, फिर command palette से **Roo Code: Prepare Zoo Migration** चलाएँ। Roo अपने global storage में आपकी settings और task history के साथ copy-based handoff bundle बनाता है, जबकि आपका मूल Roo data untouched रहता है। Provider profiles और API keys तभी शामिल होते हैं जब आप स्पष्ट रूप से उन्हें शामिल करना चुनते हैं। +> इसे आज़माने के लिए, अपनी extension gallery से **Zoo Code** को `ZooCodeOrganization.zoo-code` के रूप में इंस्टॉल करें, फिर command palette से **Roo Code: Prepare Zoo Code Handoff** चलाएँ। Roo अपने global storage में आपकी settings और task history के साथ local handoff bundle बनाता है, जबकि आपका मूल Roo data untouched रहता है। Provider profiles और API keys तभी शामिल होते हैं जब आप स्पष्ट रूप से उन्हें शामिल करना चुनते हैं। -समुदाय की घोषणा पढ़ें: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +[Zoo Code community की घोषणा](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) पढ़ें
🌐 उपलब्ध भाषाएँ @@ -45,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/id/README.md b/locales/id/README.md index 84c85b7ff38..662b8ca32c2 100644 --- a/locales/id/README.md +++ b/locales/id/README.md @@ -13,15 +13,15 @@ > Tim dev bertenaga AI-mu, langsung di editor kamu -## Pembaruan Terakhir Roo Code: Pindah ke Zoo Code +## Pembaruan Terakhir Roo Code: opsi handoff komunitas -> ### Roo kembali sebagai Zoo Code. +> ### Roo Code sedang berakhir. > -> Pembaruan terakhir Roo Code ini membantumu memindahkan setup lokal ke ekstensi Zoo Code baru yang dikelola komunitas. +> Pembaruan terakhir Roo Code ini tidak mengganti nama Roo Code. Pembaruan ini menambahkan handoff berbasis salinan untuk pengguna yang ingin mencoba Zoo Code, ekstensi independen yang dikelola komunitas. > -> Untuk migrasi, instal **Zoo Code** dari galeri ekstensi kamu sebagai `ZooCodeOrganization.zoo-code`, lalu jalankan **Roo Code: Prepare Zoo Migration** dari command palette. Roo membuat handoff bundle berbasis salinan di global storage miliknya berisi pengaturan dan riwayat tugasmu, tanpa mengubah data Roo asli. Profil penyedia dan kunci API hanya disertakan jika kamu secara eksplisit memilih untuk menyertakannya. +> Untuk mencobanya, instal **Zoo Code** dari galeri ekstensi kamu sebagai `ZooCodeOrganization.zoo-code`, lalu jalankan **Roo Code: Prepare Zoo Code Handoff** dari command palette. Roo membuat handoff bundle lokal di global storage miliknya berisi pengaturan dan riwayat tugasmu, tanpa mengubah data Roo asli. Profil penyedia dan kunci API hanya disertakan jika kamu secara eksplisit memilih untuk menyertakannya. -Baca pengumuman komunitas: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +Baca [pengumuman komunitas Zoo Code](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Bahasa yang tersedia @@ -45,7 +45,7 @@ Baca pengumuman komunitas: [Roo is back as Zoo](https://www.reddit.com/r/RooCode - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/it/README.md b/locales/it/README.md index f8280b8940a..114059e119a 100644 --- a/locales/it/README.md +++ b/locales/it/README.md @@ -13,15 +13,15 @@ > Il tuo team di sviluppo con IA, direttamente nel tuo editor -## Ultimo aggiornamento di Roo Code: passa a Zoo Code +## Ultimo aggiornamento di Roo Code: opzione handoff della community -> ### Roo torna come Zoo Code. +> ### Roo Code sta terminando. > -> Questo ultimo aggiornamento di Roo Code ti aiuta a spostare la configurazione locale nella nuova estensione Zoo Code mantenuta dalla community. +> Questo ultimo aggiornamento di Roo Code aggiunge un handoff basato su copia per gli utenti che vogliono provare Zoo Code, un'estensione separata mantenuta dalla community. > -> Per migrare, installa **Zoo Code** dalla tua galleria estensioni come `ZooCodeOrganization.zoo-code`, poi esegui **Roo Code: Prepare Zoo Migration** dalla palette dei comandi. Roo crea nel suo storage globale un bundle di handoff basato su copia con le tue impostazioni e la cronologia dei task, senza modificare i dati Roo originali. I profili provider e le chiavi API vengono inclusi solo se scegli esplicitamente di includerli. +> Per provarla, installa **Zoo Code** dalla tua galleria estensioni come `ZooCodeOrganization.zoo-code`, poi esegui **Roo Code: Prepare Zoo Code Handoff** dalla palette dei comandi. Roo crea nel suo storage globale un bundle locale di handoff con le tue impostazioni e la cronologia dei task, senza modificare i dati Roo originali. I profili provider e le chiavi API vengono inclusi solo se scegli esplicitamente di includerli. -Leggi l'annuncio della community: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +Leggi l'[annuncio della community di Zoo Code](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Lingue disponibili @@ -45,7 +45,7 @@ Leggi l'annuncio della community: [Roo is back as Zoo](https://www.reddit.com/r/ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/ja/README.md b/locales/ja/README.md index c2a34e90797..b5f685da40f 100644 --- a/locales/ja/README.md +++ b/locales/ja/README.md @@ -13,15 +13,15 @@ > あなたのエディタの中に、AIで強化された開発チームを -## Roo Code 最終アップデート: Zoo Code へ移行 +## Roo Code 最終アップデート: コミュニティハンドオフオプション -> ### Roo は Zoo Code として戻ってきました。 +> ### Roo Code は終了に向かっています。 > -> この Roo Code の最終アップデートは、ローカル環境をコミュニティがメンテナンスする新しい Zoo Code 拡張機能へ移行するためのものです。 +> この最後の Roo Code アップデートでは、Zoo Code を試したいユーザー向けにコピー方式のハンドオフを追加します。Zoo Code はコミュニティが保守する別個の拡張機能です。 > -> 移行するには、拡張機能ギャラリーから **Zoo Code** を `ZooCodeOrganization.zoo-code` としてインストールし、コマンドパレットから **Roo Code: Prepare Zoo Migration** を実行してください。Roo はグローバルストレージ内に、設定とタスク履歴を含むコピー方式のハンドオフバンドルを作成します。元の Roo データは変更されません。プロバイダープロファイルと API キーは、明示的に含めることを選択した場合にのみ含まれます。 +> 試すには、拡張機能ギャラリーから **Zoo Code** を `ZooCodeOrganization.zoo-code` としてインストールし、コマンドパレットから **Roo Code: Prepare Zoo Code Handoff** を実行してください。Roo はグローバルストレージ内に、設定とタスク履歴を含むローカルハンドオフバンドルを作成します。元の Roo データは変更されません。プロバイダープロファイルと API キーは、明示的に含めることを選択した場合にのみ含まれます。 -コミュニティのお知らせを読む: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +[Zoo Code コミュニティのお知らせ](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)を読む
🌐 利用可能な言語 @@ -45,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/ko/README.md b/locales/ko/README.md index 43b709d0e38..d844702c6c5 100644 --- a/locales/ko/README.md +++ b/locales/ko/README.md @@ -13,15 +13,15 @@ > AI로 강화된 너의 개발 팀, 네 에디터 안에 -## Roo Code 마지막 업데이트: Zoo Code로 이동 +## Roo Code 마지막 업데이트: 커뮤니티 핸드오프 옵션 -> ### Roo가 Zoo Code로 돌아왔어요. +> ### Roo Code는 종료 단계에 들어갑니다. > -> 이번 Roo Code 마지막 업데이트는 로컬 설정을 커뮤니티가 유지 관리하는 새 Zoo Code 확장으로 옮길 수 있게 도와줘요. +> 이번 Roo Code 마지막 업데이트는 Zoo Code를 사용해 보고 싶은 사용자를 위해 복사 기반 핸드오프를 추가합니다. Zoo Code는 커뮤니티가 유지 관리하는 별도 확장입니다. > -> 마이그레이션하려면 확장 갤러리에서 **Zoo Code**를 `ZooCodeOrganization.zoo-code`로 설치한 다음, 명령 팔레트에서 **Roo Code: Prepare Zoo Migration**을 실행하세요. Roo는 전역 저장소에 설정과 작업 기록이 담긴 복사 기반 핸드오프 번들을 만들고, 기존 Roo 데이터는 그대로 둡니다. 제공자 프로필과 API 키는 명시적으로 포함하기로 선택한 경우에만 포함됩니다. +> 사용해 보려면 확장 갤러리에서 **Zoo Code**를 `ZooCodeOrganization.zoo-code`로 설치한 다음, 명령 팔레트에서 **Roo Code: Prepare Zoo Code Handoff**를 실행하세요. Roo는 전역 저장소에 설정과 작업 기록이 담긴 로컬 핸드오프 번들을 만들고, 기존 Roo 데이터는 그대로 둡니다. 제공자 프로필과 API 키는 명시적으로 포함하기로 선택한 경우에만 포함됩니다. -커뮤니티 발표 읽기: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +[Zoo Code 커뮤니티 발표](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) 읽기
🌐 사용 가능한 언어 @@ -45,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/nl/README.md b/locales/nl/README.md index 56ee064d8d0..449fbfc503a 100644 --- a/locales/nl/README.md +++ b/locales/nl/README.md @@ -13,15 +13,15 @@ > Jouw AI-aangedreven dev-team, rechtstreeks in je editor -## Laatste Roo Code-update: overstappen naar Zoo Code +## Laatste Roo Code-update: community-handoffoptie -> ### Roo is terug als Zoo Code. +> ### Roo Code loopt af. > -> Deze laatste Roo Code-update helpt je om je lokale setup naar de nieuwe, door de community onderhouden Zoo Code-extensie te verplaatsen. +> Deze laatste Roo Code-update voegt een kopie-gebaseerde handoff toe voor gebruikers die Zoo Code willen proberen, een afzonderlijke extensie die door de community wordt onderhouden. > -> Installeer voor de migratie **Zoo Code** vanuit je extensiegalerie als `ZooCodeOrganization.zoo-code` en voer daarna **Roo Code: Prepare Zoo Migration** uit via het opdrachtenpalet. Roo maakt in zijn globale opslag een kopie-gebaseerde handoff-bundel met je instellingen en taakgeschiedenis, terwijl je oorspronkelijke Roo-gegevens ongemoeid blijven. Providerprofielen en API-sleutels worden alleen opgenomen als je daar expliciet voor kiest. +> Installeer om het te proberen **Zoo Code** vanuit je extensiegalerie als `ZooCodeOrganization.zoo-code` en voer daarna **Roo Code: Prepare Zoo Code Handoff** uit via het opdrachtenpalet. Roo maakt in zijn globale opslag een lokale handoff-bundel met je instellingen en taakgeschiedenis, terwijl je oorspronkelijke Roo-gegevens ongemoeid blijven. Providerprofielen en API-sleutels worden alleen opgenomen als je daar expliciet voor kiest. -Lees de community-aankondiging: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +Lees de [Zoo Code-community-aankondiging](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Beschikbare talen @@ -45,7 +45,7 @@ Lees de community-aankondiging: [Roo is back as Zoo](https://www.reddit.com/r/Ro - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/pl/README.md b/locales/pl/README.md index 0a19c7b1e13..ba8730993a9 100644 --- a/locales/pl/README.md +++ b/locales/pl/README.md @@ -13,15 +13,15 @@ > Twój zespół deweloperski zasilany AI — prosto w edytorze -## Ostatnia aktualizacja Roo Code: przejdź na Zoo Code +## Ostatnia aktualizacja Roo Code: opcja handoff społecznościowego -> ### Roo wraca jako Zoo Code. +> ### Roo Code jest wygaszany. > -> Ta ostatnia aktualizacja Roo Code pomaga przenieść lokalną konfigurację do nowego rozszerzenia Zoo Code utrzymywanego przez społeczność. +> Ta ostatnia aktualizacja Roo Code dodaje handoff oparty na kopii dla użytkowników, którzy chcą wypróbować Zoo Code, osobne rozszerzenie utrzymywane przez społeczność. > -> Aby przeprowadzić migrację, zainstaluj **Zoo Code** z galerii rozszerzeń jako `ZooCodeOrganization.zoo-code`, a następnie uruchom **Roo Code: Prepare Zoo Migration** z palety poleceń. Roo tworzy w swoim globalnym magazynie pakiet handoff oparty na kopii, zawierający twoje ustawienia i historię zadań, bez zmieniania oryginalnych danych Roo. Profile dostawców i klucze API są dołączane tylko wtedy, gdy wyraźnie wybierzesz ich dołączenie. +> Aby go wypróbować, zainstaluj **Zoo Code** z galerii rozszerzeń jako `ZooCodeOrganization.zoo-code`, a następnie uruchom **Roo Code: Prepare Zoo Code Handoff** z palety poleceń. Roo tworzy w swoim globalnym magazynie lokalny pakiet handoff z twoimi ustawieniami i historią zadań, bez zmieniania oryginalnych danych Roo. Profile dostawców i klucze API są dołączane tylko wtedy, gdy wyraźnie wybierzesz ich dołączenie. -Przeczytaj ogłoszenie społeczności: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +Przeczytaj [ogłoszenie społeczności Zoo Code](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Dostępne języki @@ -45,7 +45,7 @@ Przeczytaj ogłoszenie społeczności: [Roo is back as Zoo](https://www.reddit.c - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/pt-BR/README.md b/locales/pt-BR/README.md index e0ebdd45377..ab719ab9dc0 100644 --- a/locales/pt-BR/README.md +++ b/locales/pt-BR/README.md @@ -13,15 +13,15 @@ > Seu time de desenvolvimento com IA, direto no seu editor -## Atualização final do Roo Code: migre para o Zoo Code +## Atualização final do Roo Code: opção de handoff da comunidade -> ### Roo voltou como Zoo Code. +> ### O Roo Code está sendo encerrado. > -> Esta atualização final do Roo Code ajuda você a mover sua configuração local para a nova extensão Zoo Code mantida pela comunidade. +> Esta atualização final do Roo Code adiciona um handoff baseado em cópia para usuários que quiserem experimentar o Zoo Code, uma extensão separada mantida pela comunidade. > -> Para migrar, instale **Zoo Code** pela sua galeria de extensões como `ZooCodeOrganization.zoo-code` e depois execute **Roo Code: Prepare Zoo Migration** pela paleta de comandos. O Roo cria um pacote de handoff baseado em cópia no armazenamento global dele com suas configurações e histórico de tarefas, sem alterar seus dados originais do Roo. Perfis de provedores e chaves de API só são incluídos se você escolher explicitamente incluí-los. +> Para experimentar, instale **Zoo Code** pela sua galeria de extensões como `ZooCodeOrganization.zoo-code` e depois execute **Roo Code: Prepare Zoo Code Handoff** pela paleta de comandos. O Roo cria um pacote local de handoff no armazenamento global dele com suas configurações e histórico de tarefas, sem alterar seus dados originais do Roo. Perfis de provedores e chaves de API só são incluídos se você escolher explicitamente incluí-los. -Leia o anúncio da comunidade: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +Leia o [anúncio da comunidade do Zoo Code](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Idiomas disponíveis @@ -45,7 +45,7 @@ Leia o anúncio da comunidade: [Roo is back as Zoo](https://www.reddit.com/r/Roo - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/ru/README.md b/locales/ru/README.md index 0dec9372060..982de23c258 100644 --- a/locales/ru/README.md +++ b/locales/ru/README.md @@ -13,15 +13,15 @@ > Твоя команда разработчиков на ИИ — прямо в редакторе -## Финальное обновление Roo Code: переход на Zoo Code +## Финальное обновление Roo Code: вариант handoff от сообщества -> ### Roo возвращается как Zoo Code. +> ### Roo Code завершает работу. > -> Это финальное обновление Roo Code помогает перенести локальную настройку в новое расширение Zoo Code, поддерживаемое сообществом. +> Это финальное обновление Roo Code добавляет копируемый handoff для пользователей, которые хотят попробовать Zoo Code, отдельное расширение, поддерживаемое сообществом. > -> Для миграции установите **Zoo Code** из вашей галереи расширений как `ZooCodeOrganization.zoo-code`, затем запустите **Roo Code: Prepare Zoo Migration** из палитры команд. Roo создаст в своем глобальном хранилище копируемый пакет handoff с вашими настройками и историей задач, не изменяя исходные данные Roo. Профили провайдеров и API-ключи включаются только если вы явно выберете их включение. +> Чтобы попробовать его, установите **Zoo Code** из вашей галереи расширений как `ZooCodeOrganization.zoo-code`, затем запустите **Roo Code: Prepare Zoo Code Handoff** из палитры команд. Roo создаст в своем глобальном хранилище локальный пакет handoff с вашими настройками и историей задач, не изменяя исходные данные Roo. Профили провайдеров и API-ключи включаются только если вы явно выберете их включение. -Прочитайте объявление сообщества: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +Прочитайте [объявление сообщества Zoo Code](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Доступные языки @@ -45,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/tr/README.md b/locales/tr/README.md index c4bae664a27..57dd09bc50d 100644 --- a/locales/tr/README.md +++ b/locales/tr/README.md @@ -13,15 +13,15 @@ > AI destekli dev ekibin, doğrudan editörünün içinde -## Son Roo Code Güncellemesi: Zoo Code'a geç +## Son Roo Code Güncellemesi: topluluk handoff seçeneği -> ### Roo, Zoo Code olarak geri döndü. +> ### Roo Code sona eriyor. > -> Bu son Roo Code güncellemesi, yerel kurulumunu topluluk tarafından sürdürülen yeni Zoo Code eklentisine taşımanı sağlar. +> Bu son Roo Code güncellemesi, Zoo Code'u denemek isteyen kullanıcılar için kopya tabanlı bir handoff ekler; Zoo Code, topluluk tarafından sürdürülen ayrı bir eklentidir. > -> Geçiş yapmak için **Zoo Code**'u eklenti galerinden `ZooCodeOrganization.zoo-code` olarak yükle, ardından komut paletinden **Roo Code: Prepare Zoo Migration** komutunu çalıştır. Roo, global depolamasında ayarların ve görev geçmişinle kopya tabanlı bir handoff paketi oluşturur; orijinal Roo verilerine dokunmaz. Sağlayıcı profilleri ve API anahtarları yalnızca açıkça dahil etmeyi seçersen dahil edilir. +> Denemek için **Zoo Code**'u eklenti galerinden `ZooCodeOrganization.zoo-code` olarak yükle, ardından komut paletinden **Roo Code: Prepare Zoo Code Handoff** komutunu çalıştır. Roo, global depolamasında ayarların ve görev geçmişinle yerel bir handoff paketi oluşturur; orijinal Roo verilerine dokunmaz. Sağlayıcı profilleri ve API anahtarları yalnızca açıkça dahil etmeyi seçersen dahil edilir. -Topluluk duyurusunu oku: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +[Zoo Code topluluk duyurusunu](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) oku
🌐 Mevcut diller @@ -45,7 +45,7 @@ Topluluk duyurusunu oku: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/c - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/vi/README.md b/locales/vi/README.md index 0c41b375df9..be0228e0343 100644 --- a/locales/vi/README.md +++ b/locales/vi/README.md @@ -13,15 +13,15 @@ > Đội ngũ dev dùng AI của bạn, ngay trong trình chỉnh sửa -## Bản cập nhật cuối của Roo Code: chuyển sang Zoo Code +## Bản cập nhật cuối của Roo Code: tùy chọn handoff từ cộng đồng -> ### Roo trở lại dưới tên Zoo Code. +> ### Roo Code đang kết thúc. > -> Bản cập nhật cuối này của Roo Code giúp bạn chuyển thiết lập cục bộ sang tiện ích Zoo Code mới do cộng đồng duy trì. +> Bản cập nhật cuối này của Roo Code thêm một handoff dạng sao chép cho những người muốn thử Zoo Code, một tiện ích riêng do cộng đồng duy trì. > -> Để di chuyển, hãy cài đặt **Zoo Code** từ thư viện tiện ích của bạn với mã `ZooCodeOrganization.zoo-code`, rồi chạy **Roo Code: Prepare Zoo Migration** từ command palette. Roo tạo một handoff bundle dạng sao chép trong global storage của Roo, bao gồm cài đặt và lịch sử tác vụ của bạn, đồng thời giữ nguyên dữ liệu Roo gốc. Hồ sơ nhà cung cấp và khóa API chỉ được bao gồm nếu bạn chủ động chọn đưa chúng vào. +> Để thử, hãy cài đặt **Zoo Code** từ thư viện tiện ích của bạn với mã `ZooCodeOrganization.zoo-code`, rồi chạy **Roo Code: Prepare Zoo Code Handoff** từ command palette. Roo tạo một handoff bundle cục bộ trong global storage của Roo, bao gồm cài đặt và lịch sử tác vụ của bạn, đồng thời giữ nguyên dữ liệu Roo gốc. Hồ sơ nhà cung cấp và khóa API chỉ được bao gồm nếu bạn chủ động chọn đưa chúng vào. -Đọc thông báo từ cộng đồng: [Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +Đọc [thông báo từ cộng đồng Zoo Code](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 Các ngôn ngữ có sẵn @@ -45,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/zh-CN/README.md b/locales/zh-CN/README.md index 00781546ce4..c7a6e3a6194 100644 --- a/locales/zh-CN/README.md +++ b/locales/zh-CN/README.md @@ -13,15 +13,15 @@ > 你的 AI 驱动开发团队,就在你的编辑器里 -## Roo Code 最终更新:迁移到 Zoo Code +## Roo Code 最终更新:社区交接选项 -> ### Roo 以 Zoo Code 的形式回来了。 +> ### Roo Code 即将停止维护。 > -> 这次 Roo Code 的最终更新会帮助你把本地设置迁移到由社区维护的新 Zoo Code 扩展。 +> 这次最终的 Roo Code 更新为想要尝试 Zoo Code 的用户添加了基于复制的交接;Zoo Code 是一个由社区维护的独立扩展。 > -> 要迁移,请从你的扩展图库安装 **Zoo Code**,扩展 ID 为 `ZooCodeOrganization.zoo-code`,然后从命令面板运行 **Roo Code: Prepare Zoo Migration**。Roo 会在其全局存储中创建一个基于复制的交接包,包含你的设置和任务历史,同时保留原始 Roo 数据不变。只有在你明确选择包含时,才会包含提供商配置文件和 API 密钥。 +> 如果想试用,请从你的扩展图库安装 **Zoo Code**,扩展 ID 为 `ZooCodeOrganization.zoo-code`,然后从命令面板运行 **Roo Code: Prepare Zoo Code Handoff**。Roo 会在其全局存储中创建一个本地交接包,包含你的设置和任务历史,同时保留原始 Roo 数据不变。只有在你明确选择包含时,才会包含提供商配置文件和 API 密钥。 -阅读社区公告:[Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +阅读 [Zoo Code 社区公告](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 可用语言 @@ -45,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/locales/zh-TW/README.md b/locales/zh-TW/README.md index 74a0e7d2a42..fa11e2baedc 100644 --- a/locales/zh-TW/README.md +++ b/locales/zh-TW/README.md @@ -13,15 +13,15 @@ > 您的 AI 驅動開發團隊,就在您的編輯器中 -## Roo Code 最終更新:遷移到 Zoo Code +## Roo Code 最終更新:社群交接選項 -> ### Roo 以 Zoo Code 的形式回來了。 +> ### Roo Code 即將停止維護。 > -> 這次 Roo Code 的最終更新會協助你把本機設定遷移到由社群維護的新 Zoo Code 擴充功能。 +> 這次最後的 Roo Code 更新為想要嘗試 Zoo Code 的使用者加入了以複製為基礎的交接;Zoo Code 是由社群維護的獨立擴充功能。 > -> 若要遷移,請從你的擴充功能圖庫安裝 **Zoo Code**,擴充功能 ID 為 `ZooCodeOrganization.zoo-code`,然後從命令選擇區執行 **Roo Code: Prepare Zoo Migration**。Roo 會在其全域儲存空間中建立以複製為基礎的交接包,包含你的設定和任務歷史,同時保留原始 Roo 資料不變。只有在你明確選擇包含時,才會包含供應商設定檔和 API 金鑰。 +> 若要試用,請從你的擴充功能圖庫安裝 **Zoo Code**,擴充功能 ID 為 `ZooCodeOrganization.zoo-code`,然後從命令選擇區執行 **Roo Code: Prepare Zoo Code Handoff**。Roo 會在其全域儲存空間中建立本機交接包,包含你的設定和任務歷史,同時保留原始 Roo 資料不變。只有在你明確選擇包含時,才會包含供應商設定檔和 API 金鑰。 -閱讀社群公告:[Roo is back as Zoo](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/) +閱讀 [Zoo Code 社群公告](https://www.reddit.com/r/RooCode/comments/1syufn1/roo_is_back_as_zoo/)
🌐 支援語言 @@ -45,7 +45,7 @@ - [简体中文](../zh-CN/README.md) - [繁體中文](../zh-TW/README.md) - ... -
+ --- diff --git a/src/i18n/locales/ca/common.json b/src/i18n/locales/ca/common.json index 9723ea5d568..2cbddd109de 100644 --- a/src/i18n/locales/ca/common.json +++ b/src/i18n/locales/ca/common.json @@ -26,18 +26,18 @@ "zooMigration": { "actions": { "installZoo": "Instal·la Zoo", - "prepareMigration": "Prepara la migració", + "prepareMigration": "Prepara el traspàs", "learnMore": "Més informació", "later": "Més tard", "includeApiKeys": "Inclou les claus d'API", "skipApiKeys": "Omet les claus d'API", "cancel": "Cancel·la" }, - "notice": "Roo Code està passant a Zoo Code. Pots preparar un paquet de migració basat en còpia per a Zoo sense eliminar les teves dades de Roo.", + "notice": "Roo Code està arribant al final. Pots preparar un traspàs basat en còpia per a Zoo Code sense eliminar les teves dades de Roo.", "installUnavailable": "Zoo Code està disponible com a ZooCodeOrganization.zoo-code. La instal·lació automàtica no s'ha completat, així que s'ha obert la vista Extensions perquè el puguis instal·lar des de la galeria d'extensions configurada.", - "preparePrompt": "Vols preparar un paquet de migració local de Zoo Code? Si inclous les claus d'API, els secrets del proveïdor s'escriuran en un fitxer local perquè Zoo els pugui importar i després eliminar el paquet.", - "handoffPrepared": "Paquet de migració de Zoo Code preparat a {{path}}. Instal·la Zoo Code i importa des d'aquest paquet.", - "handoffFailed": "No s'ha pogut preparar el paquet de migració de Zoo Code: {{error}}" + "preparePrompt": "Vols preparar un traspàs local per a Zoo Code? Si inclous les claus d'API, els secrets del proveïdor s'escriuran en un fitxer local perquè Zoo Code els pugui importar i després eliminar el traspàs.", + "handoffPrepared": "Traspàs de Zoo Code preparat a {{path}}. Instal·la Zoo Code i importa des d'aquest traspàs.", + "handoffFailed": "No s'ha pogut preparar el traspàs de Zoo Code: {{error}}" }, "errors": { "invalid_data_uri": "Format d'URI de dades no vàlid", diff --git a/src/i18n/locales/de/common.json b/src/i18n/locales/de/common.json index 85a1a18ec82..4fac807b7bd 100644 --- a/src/i18n/locales/de/common.json +++ b/src/i18n/locales/de/common.json @@ -22,18 +22,18 @@ "zooMigration": { "actions": { "installZoo": "Zoo Installieren", - "prepareMigration": "Migration Vorbereiten", + "prepareMigration": "Übergabe Vorbereiten", "learnMore": "Mehr Erfahren", "later": "Später", "includeApiKeys": "API-Schlüssel Einschließen", "skipApiKeys": "API-Schlüssel Überspringen", "cancel": "Abbrechen" }, - "notice": "Roo Code wechselt zu Zoo Code. Du kannst eine kopierbasierte Migrationsübergabe für Zoo vorbereiten, ohne deine Roo-Daten zu löschen.", + "notice": "Roo Code läuft aus. Du kannst eine kopiebasierte Übergabe für Zoo Code vorbereiten, ohne deine Roo-Daten zu löschen.", "installUnavailable": "Zoo Code ist als ZooCodeOrganization.zoo-code verfügbar. Die automatische Installation wurde nicht abgeschlossen, deshalb wurde die Erweiterungsansicht geöffnet, damit du es aus deiner konfigurierten Erweiterungsgalerie installieren kannst.", - "preparePrompt": "Lokale Zoo Code-Migrationsübergabe vorbereiten? Wenn du API-Schlüssel einschließt, werden Provider-Secrets in eine lokale Datei geschrieben, damit Zoo sie importieren und die Übergabe danach löschen kann.", - "handoffPrepared": "Zoo Code-Migrationsübergabe unter {{path}} vorbereitet. Installiere Zoo Code und importiere aus dieser Übergabe.", - "handoffFailed": "Zoo Code-Migrationsübergabe konnte nicht vorbereitet werden: {{error}}" + "preparePrompt": "Lokale Übergabe für Zoo Code vorbereiten? Wenn du API-Schlüssel einschließt, werden Provider-Secrets in eine lokale Datei geschrieben, damit Zoo Code sie importieren und die Übergabe danach löschen kann.", + "handoffPrepared": "Zoo Code-Übergabe unter {{path}} vorbereitet. Installiere Zoo Code und importiere aus dieser Übergabe.", + "handoffFailed": "Zoo Code-Übergabe konnte nicht vorbereitet werden: {{error}}" }, "errors": { "invalid_data_uri": "Ungültiges Daten-URI-Format", diff --git a/src/i18n/locales/en/common.json b/src/i18n/locales/en/common.json index a418b5ff6d0..775032d6b07 100644 --- a/src/i18n/locales/en/common.json +++ b/src/i18n/locales/en/common.json @@ -22,18 +22,18 @@ "zooMigration": { "actions": { "installZoo": "Install Zoo", - "prepareMigration": "Prepare Migration", + "prepareMigration": "Prepare Handoff", "learnMore": "Learn More", "later": "Later", "includeApiKeys": "Include API keys", "skipApiKeys": "Skip API keys", "cancel": "Cancel" }, - "notice": "Roo Code is transitioning to Zoo Code. You can prepare a copy-based migration handoff for Zoo without deleting your Roo data.", + "notice": "Roo Code is winding down. You can prepare a copy-based handoff for Zoo Code without deleting your Roo data.", "installUnavailable": "Zoo Code is available as ZooCodeOrganization.zoo-code. Automatic install did not complete, so the Extensions view has been opened so you can install it from your configured extension gallery.", - "preparePrompt": "Prepare a local Zoo Code migration handoff? Including API keys writes provider secrets to a local file so Zoo can import them, then delete the handoff after import.", - "handoffPrepared": "Zoo Code migration handoff prepared at {{path}}. Install Zoo Code and import from this handoff.", - "handoffFailed": "Failed to prepare Zoo Code migration handoff: {{error}}" + "preparePrompt": "Prepare a local handoff for Zoo Code? Including API keys writes provider secrets to a local file so Zoo Code can import them, then delete the handoff after import.", + "handoffPrepared": "Zoo Code handoff prepared at {{path}}. Install Zoo Code and import from this handoff.", + "handoffFailed": "Failed to prepare Zoo Code handoff: {{error}}" }, "errors": { "invalid_data_uri": "Invalid data URI format", diff --git a/src/i18n/locales/es/common.json b/src/i18n/locales/es/common.json index 3e5b44e4c71..d8ea0112c3a 100644 --- a/src/i18n/locales/es/common.json +++ b/src/i18n/locales/es/common.json @@ -22,18 +22,18 @@ "zooMigration": { "actions": { "installZoo": "Instalar Zoo", - "prepareMigration": "Preparar Migración", + "prepareMigration": "Preparar Traspaso", "learnMore": "Más Información", "later": "Más Tarde", "includeApiKeys": "Incluir claves de API", "skipApiKeys": "Omitir claves de API", "cancel": "Cancelar" }, - "notice": "Roo Code está pasando a Zoo Code. Puedes preparar una entrega de migración basada en copia para Zoo sin eliminar tus datos de Roo.", + "notice": "Roo Code está llegando a su fin. Puedes preparar un traspaso basado en copia para Zoo Code sin eliminar tus datos de Roo.", "installUnavailable": "Zoo Code está disponible como ZooCodeOrganization.zoo-code. La instalación automática no se completó, así que se abrió la vista de Extensiones para que puedas instalarlo desde tu galería de extensiones configurada.", - "preparePrompt": "¿Preparar una entrega local de migración a Zoo Code? Si incluyes claves de API, los secrets del proveedor se escribirán en un archivo local para que Zoo pueda importarlos y luego eliminar la entrega.", - "handoffPrepared": "Entrega de migración a Zoo Code preparada en {{path}}. Instala Zoo Code e importa desde esta entrega.", - "handoffFailed": "No se pudo preparar la entrega de migración a Zoo Code: {{error}}" + "preparePrompt": "¿Preparar un traspaso local para Zoo Code? Si incluyes claves de API, los secrets del proveedor se escribirán en un archivo local para que Zoo Code pueda importarlos y luego eliminar el traspaso.", + "handoffPrepared": "Traspaso de Zoo Code preparado en {{path}}. Instala Zoo Code e importa desde este traspaso.", + "handoffFailed": "No se pudo preparar el traspaso de Zoo Code: {{error}}" }, "errors": { "invalid_data_uri": "Formato de URI de datos no válido", diff --git a/src/i18n/locales/fr/common.json b/src/i18n/locales/fr/common.json index 97f0c0bc8c1..2dc189f5194 100644 --- a/src/i18n/locales/fr/common.json +++ b/src/i18n/locales/fr/common.json @@ -22,18 +22,18 @@ "zooMigration": { "actions": { "installZoo": "Installer Zoo", - "prepareMigration": "Préparer la Migration", + "prepareMigration": "Préparer le Transfert", "learnMore": "En Savoir Plus", "later": "Plus Tard", "includeApiKeys": "Inclure les clés API", "skipApiKeys": "Ignorer les clés API", "cancel": "Annuler" }, - "notice": "Roo Code passe à Zoo Code. Tu peux préparer un transfert de migration par copie pour Zoo sans supprimer tes données Roo.", + "notice": "Roo Code arrive à son terme. Tu peux préparer un transfert basé sur une copie pour Zoo Code sans supprimer tes données Roo.", "installUnavailable": "Zoo Code est disponible sous l'id ZooCodeOrganization.zoo-code. L'installation automatique ne s'est pas terminée, donc la vue Extensions a été ouverte pour que tu puisses l'installer depuis ta galerie d'extensions configurée.", - "preparePrompt": "Préparer un transfert local de migration Zoo Code ? Inclure les clés API écrit les secrets du fournisseur dans un fichier local afin que Zoo puisse les importer, puis supprimer le transfert après import.", - "handoffPrepared": "Transfert de migration Zoo Code préparé dans {{path}}. Installe Zoo Code et importe depuis ce transfert.", - "handoffFailed": "Échec de la préparation du transfert de migration Zoo Code : {{error}}" + "preparePrompt": "Préparer un transfert local pour Zoo Code ? Inclure les clés API écrit les secrets du fournisseur dans un fichier local afin que Zoo Code puisse les importer, puis supprimer le transfert après import.", + "handoffPrepared": "Transfert Zoo Code préparé dans {{path}}. Installe Zoo Code et importe depuis ce transfert.", + "handoffFailed": "Échec de la préparation du transfert Zoo Code : {{error}}" }, "errors": { "invalid_data_uri": "Format d'URI de données invalide", diff --git a/src/i18n/locales/hi/common.json b/src/i18n/locales/hi/common.json index af6449e00c4..13d94116c8b 100644 --- a/src/i18n/locales/hi/common.json +++ b/src/i18n/locales/hi/common.json @@ -22,18 +22,18 @@ "zooMigration": { "actions": { "installZoo": "Zoo इंस्टॉल करें", - "prepareMigration": "माइग्रेशन तैयार करें", + "prepareMigration": "Handoff तैयार करें", "learnMore": "और जानें", "later": "बाद में", "includeApiKeys": "API कुंजियां शामिल करें", "skipApiKeys": "API कुंजियां छोड़ें", "cancel": "रद्द करें" }, - "notice": "Roo Code, Zoo Code में बदल रहा है। आप Roo डेटा हटाए बिना Zoo के लिए कॉपी-आधारित माइग्रेशन हैंडऑफ तैयार कर सकते हैं।", + "notice": "Roo Code अब समाप्ति की ओर है। आप Roo डेटा हटाए बिना Zoo Code के लिए copy-based handoff तैयार कर सकते हैं।", "installUnavailable": "Zoo Code, ZooCodeOrganization.zoo-code के रूप में उपलब्ध है। स्वचालित इंस्टॉल पूरा नहीं हुआ, इसलिए Extensions दृश्य खोला गया है ताकि आप इसे अपनी कॉन्फ़िगर की गई एक्सटेंशन गैलरी से इंस्टॉल कर सकें।", - "preparePrompt": "स्थानीय Zoo Code माइग्रेशन हैंडऑफ तैयार करें? API कुंजियां शामिल करने से प्रदाता secrets एक स्थानीय फ़ाइल में लिखे जाएंगे ताकि Zoo उन्हें आयात कर सके और फिर आयात के बाद हैंडऑफ हटा सके।", - "handoffPrepared": "Zoo Code माइग्रेशन हैंडऑफ {{path}} पर तैयार है। Zoo Code इंस्टॉल करें और इस हैंडऑफ से आयात करें।", - "handoffFailed": "Zoo Code माइग्रेशन हैंडऑफ तैयार करने में विफल: {{error}}" + "preparePrompt": "Zoo Code के लिए local handoff तैयार करें? API कुंजियां शामिल करने से प्रदाता secrets एक स्थानीय फ़ाइल में लिखे जाएंगे ताकि Zoo Code उन्हें आयात कर सके और फिर आयात के बाद handoff हटा सके।", + "handoffPrepared": "Zoo Code handoff {{path}} पर तैयार है। Zoo Code इंस्टॉल करें और इस handoff से आयात करें।", + "handoffFailed": "Zoo Code handoff तैयार करने में विफल: {{error}}" }, "errors": { "invalid_data_uri": "अमान्य डेटा URI फॉर्मेट", diff --git a/src/i18n/locales/id/common.json b/src/i18n/locales/id/common.json index 8a5a0976a91..bfb13ff3681 100644 --- a/src/i18n/locales/id/common.json +++ b/src/i18n/locales/id/common.json @@ -22,18 +22,18 @@ "zooMigration": { "actions": { "installZoo": "Instal Zoo", - "prepareMigration": "Siapkan Migrasi", + "prepareMigration": "Siapkan Handoff", "learnMore": "Pelajari Selengkapnya", "later": "Nanti", "includeApiKeys": "Sertakan kunci API", "skipApiKeys": "Lewati kunci API", "cancel": "Batal" }, - "notice": "Roo Code sedang beralih ke Zoo Code. Kamu bisa menyiapkan handoff migrasi berbasis salinan untuk Zoo tanpa menghapus data Roo-mu.", + "notice": "Roo Code sedang berakhir. Kamu bisa menyiapkan handoff berbasis salinan untuk Zoo Code tanpa menghapus data Roo-mu.", "installUnavailable": "Zoo Code tersedia sebagai ZooCodeOrganization.zoo-code. Instal otomatis tidak selesai, jadi tampilan Extensions telah dibuka agar kamu bisa menginstalnya dari galeri ekstensi yang dikonfigurasi.", - "preparePrompt": "Siapkan handoff migrasi Zoo Code lokal? Menyertakan kunci API akan menulis secret penyedia ke file lokal agar Zoo bisa mengimpornya, lalu menghapus handoff setelah impor.", - "handoffPrepared": "Handoff migrasi Zoo Code disiapkan di {{path}}. Instal Zoo Code dan impor dari handoff ini.", - "handoffFailed": "Gagal menyiapkan handoff migrasi Zoo Code: {{error}}" + "preparePrompt": "Siapkan handoff lokal untuk Zoo Code? Menyertakan kunci API akan menulis secret penyedia ke file lokal agar Zoo Code bisa mengimpornya, lalu menghapus handoff setelah impor.", + "handoffPrepared": "Handoff Zoo Code disiapkan di {{path}}. Instal Zoo Code dan impor dari handoff ini.", + "handoffFailed": "Gagal menyiapkan handoff Zoo Code: {{error}}" }, "errors": { "invalid_data_uri": "Format data URI tidak valid", diff --git a/src/i18n/locales/it/common.json b/src/i18n/locales/it/common.json index 175d3cc869a..a4e60bed56a 100644 --- a/src/i18n/locales/it/common.json +++ b/src/i18n/locales/it/common.json @@ -22,18 +22,18 @@ "zooMigration": { "actions": { "installZoo": "Installa Zoo", - "prepareMigration": "Prepara Migrazione", + "prepareMigration": "Prepara Handoff", "learnMore": "Scopri di Più", "later": "Più Tardi", "includeApiKeys": "Includi chiavi API", "skipApiKeys": "Salta chiavi API", "cancel": "Annulla" }, - "notice": "Roo Code sta passando a Zoo Code. Puoi preparare un handoff di migrazione basato su copia per Zoo senza eliminare i tuoi dati Roo.", + "notice": "Roo Code sta terminando. Puoi preparare un handoff basato su copia per Zoo Code senza eliminare i tuoi dati Roo.", "installUnavailable": "Zoo Code è disponibile come ZooCodeOrganization.zoo-code. L'installazione automatica non è stata completata, quindi la vista Estensioni è stata aperta per permetterti di installarlo dalla galleria estensioni configurata.", - "preparePrompt": "Preparare un handoff locale di migrazione Zoo Code? Includere le chiavi API scrive i secret dei provider in un file locale, così Zoo può importarli e poi eliminare l'handoff dopo l'importazione.", - "handoffPrepared": "Handoff di migrazione Zoo Code preparato in {{path}}. Installa Zoo Code e importa da questo handoff.", - "handoffFailed": "Impossibile preparare l'handoff di migrazione Zoo Code: {{error}}" + "preparePrompt": "Preparare un handoff locale per Zoo Code? Includere le chiavi API scrive i secret dei provider in un file locale, così Zoo Code può importarli e poi eliminare l'handoff dopo l'importazione.", + "handoffPrepared": "Handoff Zoo Code preparato in {{path}}. Installa Zoo Code e importa da questo handoff.", + "handoffFailed": "Impossibile preparare l'handoff Zoo Code: {{error}}" }, "errors": { "invalid_data_uri": "Formato URI dati non valido", diff --git a/src/i18n/locales/ja/common.json b/src/i18n/locales/ja/common.json index f7df0d053e9..05db2bd0679 100644 --- a/src/i18n/locales/ja/common.json +++ b/src/i18n/locales/ja/common.json @@ -22,18 +22,18 @@ "zooMigration": { "actions": { "installZoo": "Zoo をインストール", - "prepareMigration": "移行を準備", + "prepareMigration": "ハンドオフを準備", "learnMore": "詳しく見る", "later": "後で", "includeApiKeys": "API キーを含める", "skipApiKeys": "API キーをスキップ", "cancel": "キャンセル" }, - "notice": "Roo Code は Zoo Code へ移行しています。Roo のデータを削除せずに、Zoo 用のコピー方式の移行ハンドオフを準備できます。", + "notice": "Roo Code は終了に向かっています。Roo のデータを削除せずに、Zoo Code 用のコピー方式のハンドオフを準備できます。", "installUnavailable": "Zoo Code は ZooCodeOrganization.zoo-code として利用できます。自動インストールが完了しなかったため、設定済みの拡張機能ギャラリーからインストールできるように Extensions ビューを開きました。", - "preparePrompt": "ローカルの Zoo Code 移行ハンドオフを準備しますか?API キーを含めると、Zoo がインポートできるようにプロバイダーの secret がローカルファイルに書き込まれ、インポート後にハンドオフを削除できます。", - "handoffPrepared": "Zoo Code 移行ハンドオフを {{path}} に準備しました。Zoo Code をインストールして、このハンドオフからインポートしてください。", - "handoffFailed": "Zoo Code 移行ハンドオフの準備に失敗しました: {{error}}" + "preparePrompt": "Zoo Code 用のローカルハンドオフを準備しますか?API キーを含めると、Zoo Code がインポートできるようにプロバイダーの secret がローカルファイルに書き込まれ、インポート後にハンドオフを削除できます。", + "handoffPrepared": "Zoo Code ハンドオフを {{path}} に準備しました。Zoo Code をインストールして、このハンドオフからインポートしてください。", + "handoffFailed": "Zoo Code ハンドオフの準備に失敗しました: {{error}}" }, "errors": { "invalid_data_uri": "データURIフォーマットが無効です", diff --git a/src/i18n/locales/ko/common.json b/src/i18n/locales/ko/common.json index d0d00f1723e..df67145960a 100644 --- a/src/i18n/locales/ko/common.json +++ b/src/i18n/locales/ko/common.json @@ -22,18 +22,18 @@ "zooMigration": { "actions": { "installZoo": "Zoo 설치", - "prepareMigration": "마이그레이션 준비", + "prepareMigration": "핸드오프 준비", "learnMore": "자세히 보기", "later": "나중에", "includeApiKeys": "API 키 포함", "skipApiKeys": "API 키 건너뛰기", "cancel": "취소" }, - "notice": "Roo Code가 Zoo Code로 전환됩니다. Roo 데이터를 삭제하지 않고 Zoo용 복사 기반 마이그레이션 핸드오프를 준비할 수 있습니다.", + "notice": "Roo Code는 종료 단계에 들어갑니다. Roo 데이터를 삭제하지 않고 Zoo Code용 복사 기반 핸드오프를 준비할 수 있습니다.", "installUnavailable": "Zoo Code는 ZooCodeOrganization.zoo-code로 제공됩니다. 자동 설치가 완료되지 않아, 구성된 확장 갤러리에서 설치할 수 있도록 Extensions 보기를 열었습니다.", - "preparePrompt": "로컬 Zoo Code 마이그레이션 핸드오프를 준비할까요? API 키를 포함하면 Zoo가 가져올 수 있도록 공급자 secrets가 로컬 파일에 기록되고, 가져온 후 핸드오프를 삭제할 수 있습니다.", - "handoffPrepared": "Zoo Code 마이그레이션 핸드오프가 {{path}}에 준비되었습니다. Zoo Code를 설치하고 이 핸드오프에서 가져오세요.", - "handoffFailed": "Zoo Code 마이그레이션 핸드오프 준비 실패: {{error}}" + "preparePrompt": "Zoo Code용 로컬 핸드오프를 준비할까요? API 키를 포함하면 Zoo Code가 가져올 수 있도록 공급자 secrets가 로컬 파일에 기록되고, 가져온 후 핸드오프를 삭제할 수 있습니다.", + "handoffPrepared": "Zoo Code 핸드오프가 {{path}}에 준비되었습니다. Zoo Code를 설치하고 이 핸드오프에서 가져오세요.", + "handoffFailed": "Zoo Code 핸드오프 준비 실패: {{error}}" }, "errors": { "invalid_data_uri": "잘못된 데이터 URI 형식", diff --git a/src/i18n/locales/nl/common.json b/src/i18n/locales/nl/common.json index 9d63f48e10a..8192dfa7bf1 100644 --- a/src/i18n/locales/nl/common.json +++ b/src/i18n/locales/nl/common.json @@ -22,18 +22,18 @@ "zooMigration": { "actions": { "installZoo": "Zoo Installeren", - "prepareMigration": "Migratie Voorbereiden", + "prepareMigration": "Handoff Voorbereiden", "learnMore": "Meer Informatie", "later": "Later", "includeApiKeys": "API-sleutels Opnemen", "skipApiKeys": "API-sleutels Overslaan", "cancel": "Annuleren" }, - "notice": "Roo Code stapt over naar Zoo Code. Je kunt een kopie-gebaseerde migratiehandoff voor Zoo voorbereiden zonder je Roo-gegevens te verwijderen.", + "notice": "Roo Code loopt af. Je kunt een kopie-gebaseerde handoff voor Zoo Code voorbereiden zonder je Roo-gegevens te verwijderen.", "installUnavailable": "Zoo Code is beschikbaar als ZooCodeOrganization.zoo-code. De automatische installatie is niet voltooid, daarom is de Extensions-weergave geopend zodat je het vanuit je geconfigureerde extensiegalerie kunt installeren.", - "preparePrompt": "Een lokale Zoo Code-migratiehandoff voorbereiden? Als je API-sleutels opneemt, worden provider-secrets naar een lokaal bestand geschreven zodat Zoo ze kan importeren en de handoff daarna kan verwijderen.", - "handoffPrepared": "Zoo Code-migratiehandoff voorbereid op {{path}}. Installeer Zoo Code en importeer vanuit deze handoff.", - "handoffFailed": "Kan Zoo Code-migratiehandoff niet voorbereiden: {{error}}" + "preparePrompt": "Een lokale handoff voor Zoo Code voorbereiden? Als je API-sleutels opneemt, worden provider-secrets naar een lokaal bestand geschreven zodat Zoo Code ze kan importeren en de handoff daarna kan verwijderen.", + "handoffPrepared": "Zoo Code-handoff voorbereid op {{path}}. Installeer Zoo Code en importeer vanuit deze handoff.", + "handoffFailed": "Kan Zoo Code-handoff niet voorbereiden: {{error}}" }, "errors": { "invalid_data_uri": "Ongeldig data-URI-formaat", diff --git a/src/i18n/locales/pl/common.json b/src/i18n/locales/pl/common.json index c132c6774bb..b272a90c5b8 100644 --- a/src/i18n/locales/pl/common.json +++ b/src/i18n/locales/pl/common.json @@ -22,18 +22,18 @@ "zooMigration": { "actions": { "installZoo": "Zainstaluj Zoo", - "prepareMigration": "Przygotuj Migrację", + "prepareMigration": "Przygotuj Handoff", "learnMore": "Dowiedz się Więcej", "later": "Później", "includeApiKeys": "Dołącz klucze API", "skipApiKeys": "Pomiń klucze API", "cancel": "Anuluj" }, - "notice": "Roo Code przechodzi na Zoo Code. Możesz przygotować dla Zoo migrację przez kopię bez usuwania danych Roo.", + "notice": "Roo Code jest wygaszany. Możesz przygotować dla Zoo Code handoff przez kopię bez usuwania danych Roo.", "installUnavailable": "Zoo Code jest dostępny jako ZooCodeOrganization.zoo-code. Automatyczna instalacja nie została ukończona, więc otwarto widok Extensions, aby można było zainstalować go ze skonfigurowanej galerii rozszerzeń.", - "preparePrompt": "Przygotować lokalną migrację Zoo Code? Dołączenie kluczy API zapisze secrets dostawców do lokalnego pliku, aby Zoo mogło je zaimportować, a następnie usunąć plik po imporcie.", - "handoffPrepared": "Migracja Zoo Code została przygotowana w {{path}}. Zainstaluj Zoo Code i zaimportuj dane z tego pliku.", - "handoffFailed": "Nie udało się przygotować migracji Zoo Code: {{error}}" + "preparePrompt": "Przygotować lokalny handoff dla Zoo Code? Dołączenie kluczy API zapisze secrets dostawców do lokalnego pliku, aby Zoo Code mogło je zaimportować, a następnie usunąć handoff po imporcie.", + "handoffPrepared": "Handoff Zoo Code został przygotowany w {{path}}. Zainstaluj Zoo Code i zaimportuj dane z tego handoffu.", + "handoffFailed": "Nie udało się przygotować handoffu Zoo Code: {{error}}" }, "errors": { "invalid_data_uri": "Nieprawidłowy format URI danych", diff --git a/src/i18n/locales/pt-BR/common.json b/src/i18n/locales/pt-BR/common.json index 4f1a7d2b2b1..193f4dd95d4 100644 --- a/src/i18n/locales/pt-BR/common.json +++ b/src/i18n/locales/pt-BR/common.json @@ -26,18 +26,18 @@ "zooMigration": { "actions": { "installZoo": "Instalar Zoo", - "prepareMigration": "Preparar Migração", + "prepareMigration": "Preparar Handoff", "learnMore": "Saiba Mais", "later": "Mais Tarde", "includeApiKeys": "Incluir chaves de API", "skipApiKeys": "Ignorar chaves de API", "cancel": "Cancelar" }, - "notice": "Roo Code está migrando para Zoo Code. Você pode preparar uma entrega de migração baseada em cópia para o Zoo sem excluir seus dados do Roo.", + "notice": "O Roo Code está sendo encerrado. Você pode preparar um handoff baseado em cópia para o Zoo Code sem excluir seus dados do Roo.", "installUnavailable": "Zoo Code está disponível como ZooCodeOrganization.zoo-code. A instalação automática não foi concluída, então a visualização Extensões foi aberta para que você possa instalá-lo pela galeria de extensões configurada.", - "preparePrompt": "Preparar uma entrega local de migração para o Zoo Code? Incluir chaves de API grava os secrets dos provedores em um arquivo local para que o Zoo possa importá-los e depois excluir a entrega após a importação.", - "handoffPrepared": "Entrega de migração do Zoo Code preparada em {{path}}. Instale o Zoo Code e importe a partir desta entrega.", - "handoffFailed": "Falha ao preparar a entrega de migração do Zoo Code: {{error}}" + "preparePrompt": "Preparar um handoff local para o Zoo Code? Incluir chaves de API grava os secrets dos provedores em um arquivo local para que o Zoo Code possa importá-los e depois excluir o handoff após a importação.", + "handoffPrepared": "Handoff do Zoo Code preparado em {{path}}. Instale o Zoo Code e importe a partir deste handoff.", + "handoffFailed": "Falha ao preparar o handoff do Zoo Code: {{error}}" }, "errors": { "invalid_data_uri": "Formato de URI de dados inválido", diff --git a/src/i18n/locales/ru/common.json b/src/i18n/locales/ru/common.json index dd3b7fff812..b226501d097 100644 --- a/src/i18n/locales/ru/common.json +++ b/src/i18n/locales/ru/common.json @@ -22,18 +22,18 @@ "zooMigration": { "actions": { "installZoo": "Установить Zoo", - "prepareMigration": "Подготовить миграцию", + "prepareMigration": "Подготовить Handoff", "learnMore": "Подробнее", "later": "Позже", "includeApiKeys": "Включить API-ключи", "skipApiKeys": "Пропустить API-ключи", "cancel": "Отмена" }, - "notice": "Roo Code переходит на Zoo Code. Вы можете подготовить копируемый пакет миграции для Zoo, не удаляя данные Roo.", + "notice": "Roo Code завершает работу. Вы можете подготовить копируемый handoff для Zoo Code, не удаляя данные Roo.", "installUnavailable": "Zoo Code доступен как ZooCodeOrganization.zoo-code. Автоматическая установка не завершилась, поэтому открыт раздел Extensions, чтобы вы могли установить его из настроенной галереи расширений.", - "preparePrompt": "Подготовить локальный пакет миграции Zoo Code? Если включить API-ключи, secrets провайдеров будут записаны в локальный файл, чтобы Zoo мог импортировать их, а затем удалить пакет после импорта.", - "handoffPrepared": "Пакет миграции Zoo Code подготовлен в {{path}}. Установите Zoo Code и импортируйте данные из этого пакета.", - "handoffFailed": "Не удалось подготовить пакет миграции Zoo Code: {{error}}" + "preparePrompt": "Подготовить локальный handoff для Zoo Code? Если включить API-ключи, secrets провайдеров будут записаны в локальный файл, чтобы Zoo Code мог импортировать их, а затем удалить handoff после импорта.", + "handoffPrepared": "Handoff Zoo Code подготовлен в {{path}}. Установите Zoo Code и импортируйте данные из этого handoff.", + "handoffFailed": "Не удалось подготовить handoff Zoo Code: {{error}}" }, "errors": { "invalid_data_uri": "Неверный формат URI данных", diff --git a/src/i18n/locales/tr/common.json b/src/i18n/locales/tr/common.json index ce1dd9bd254..ab19f266fa2 100644 --- a/src/i18n/locales/tr/common.json +++ b/src/i18n/locales/tr/common.json @@ -22,18 +22,18 @@ "zooMigration": { "actions": { "installZoo": "Zoo'yu Yükle", - "prepareMigration": "Geçişi Hazırla", + "prepareMigration": "Handoff'u Hazırla", "learnMore": "Daha Fazla Bilgi", "later": "Daha Sonra", "includeApiKeys": "API anahtarlarını dahil et", "skipApiKeys": "API anahtarlarını atla", "cancel": "İptal" }, - "notice": "Roo Code, Zoo Code'a geçiyor. Roo verilerini silmeden Zoo için kopya tabanlı bir geçiş handoff'u hazırlayabilirsin.", + "notice": "Roo Code sona eriyor. Roo verilerini silmeden Zoo Code için kopya tabanlı bir handoff hazırlayabilirsin.", "installUnavailable": "Zoo Code, ZooCodeOrganization.zoo-code olarak mevcut. Otomatik yükleme tamamlanmadı, bu yüzden yapılandırılmış eklenti galerinden yükleyebilmen için Extensions görünümü açıldı.", - "preparePrompt": "Yerel bir Zoo Code geçiş handoff'u hazırlansın mı? API anahtarlarını dahil etmek, sağlayıcı secrets değerlerini Zoo'nun içe aktarabilmesi ve içe aktarma sonrası handoff'u silebilmesi için yerel bir dosyaya yazar.", - "handoffPrepared": "Zoo Code geçiş handoff'u {{path}} konumunda hazırlandı. Zoo Code'u yükle ve bu handoff'tan içe aktar.", - "handoffFailed": "Zoo Code geçiş handoff'u hazırlanamadı: {{error}}" + "preparePrompt": "Zoo Code için yerel bir handoff hazırlansın mı? API anahtarlarını dahil etmek, sağlayıcı secrets değerlerini Zoo Code'un içe aktarabilmesi ve içe aktarma sonrası handoff'u silebilmesi için yerel bir dosyaya yazar.", + "handoffPrepared": "Zoo Code handoff'u {{path}} konumunda hazırlandı. Zoo Code'u yükle ve bu handoff'tan içe aktar.", + "handoffFailed": "Zoo Code handoff'u hazırlanamadı: {{error}}" }, "errors": { "invalid_data_uri": "Geçersiz veri URI formatı", diff --git a/src/i18n/locales/vi/common.json b/src/i18n/locales/vi/common.json index a03dc1effa8..d6414507610 100644 --- a/src/i18n/locales/vi/common.json +++ b/src/i18n/locales/vi/common.json @@ -22,18 +22,18 @@ "zooMigration": { "actions": { "installZoo": "Cài đặt Zoo", - "prepareMigration": "Chuẩn bị Di chuyển", + "prepareMigration": "Chuẩn bị Handoff", "learnMore": "Tìm hiểu Thêm", "later": "Để sau", "includeApiKeys": "Bao gồm khóa API", "skipApiKeys": "Bỏ qua khóa API", "cancel": "Hủy" }, - "notice": "Roo Code đang chuyển sang Zoo Code. Bạn có thể chuẩn bị handoff di chuyển dạng sao chép cho Zoo mà không xóa dữ liệu Roo của mình.", + "notice": "Roo Code đang kết thúc. Bạn có thể chuẩn bị handoff dạng sao chép cho Zoo Code mà không xóa dữ liệu Roo của mình.", "installUnavailable": "Zoo Code có sẵn dưới tên ZooCodeOrganization.zoo-code. Quá trình cài đặt tự động chưa hoàn tất, nên khung Extensions đã được mở để bạn có thể cài đặt từ thư viện tiện ích đã cấu hình.", - "preparePrompt": "Chuẩn bị handoff di chuyển Zoo Code cục bộ? Bao gồm khóa API sẽ ghi secrets của nhà cung cấp vào một tệp cục bộ để Zoo có thể nhập chúng, rồi xóa handoff sau khi nhập.", - "handoffPrepared": "Handoff di chuyển Zoo Code đã được chuẩn bị tại {{path}}. Cài đặt Zoo Code và nhập từ handoff này.", - "handoffFailed": "Không thể chuẩn bị handoff di chuyển Zoo Code: {{error}}" + "preparePrompt": "Chuẩn bị handoff cục bộ cho Zoo Code? Bao gồm khóa API sẽ ghi secrets của nhà cung cấp vào một tệp cục bộ để Zoo Code có thể nhập chúng, rồi xóa handoff sau khi nhập.", + "handoffPrepared": "Handoff Zoo Code đã được chuẩn bị tại {{path}}. Cài đặt Zoo Code và nhập từ handoff này.", + "handoffFailed": "Không thể chuẩn bị handoff Zoo Code: {{error}}" }, "errors": { "invalid_data_uri": "Định dạng URI dữ liệu không hợp lệ", diff --git a/src/i18n/locales/zh-CN/common.json b/src/i18n/locales/zh-CN/common.json index abd1026b405..9d54e00e5a8 100644 --- a/src/i18n/locales/zh-CN/common.json +++ b/src/i18n/locales/zh-CN/common.json @@ -22,18 +22,18 @@ "zooMigration": { "actions": { "installZoo": "安装 Zoo", - "prepareMigration": "准备迁移", + "prepareMigration": "准备交接包", "learnMore": "了解更多", "later": "稍后", "includeApiKeys": "包含 API 密钥", "skipApiKeys": "跳过 API 密钥", "cancel": "取消" }, - "notice": "Roo Code 正在迁移到 Zoo Code。你可以为 Zoo 准备基于复制的迁移交接包,而不会删除你的 Roo 数据。", + "notice": "Roo Code 即将停止维护。你可以为 Zoo Code 准备基于复制的交接包,而不会删除你的 Roo 数据。", "installUnavailable": "Zoo Code 已以 ZooCodeOrganization.zoo-code 提供。自动安装未完成,因此已打开 Extensions 视图,你可以从已配置的扩展图库中安装它。", - "preparePrompt": "要准备本地 Zoo Code 迁移交接包吗?包含 API 密钥会将提供商 secrets 写入本地文件,以便 Zoo 导入,并在导入后删除该交接包。", - "handoffPrepared": "Zoo Code 迁移交接包已准备在 {{path}}。请安装 Zoo Code 并从此交接包导入。", - "handoffFailed": "无法准备 Zoo Code 迁移交接包:{{error}}" + "preparePrompt": "要为 Zoo Code 准备本地交接包吗?包含 API 密钥会将提供商 secrets 写入本地文件,以便 Zoo Code 导入,并在导入后删除该交接包。", + "handoffPrepared": "Zoo Code 交接包已准备在 {{path}}。请安装 Zoo Code 并从此交接包导入。", + "handoffFailed": "无法准备 Zoo Code 交接包:{{error}}" }, "errors": { "invalid_mcp_config": "项目MCP配置格式无效", diff --git a/src/i18n/locales/zh-TW/common.json b/src/i18n/locales/zh-TW/common.json index bcc2af47283..52d3913c47e 100644 --- a/src/i18n/locales/zh-TW/common.json +++ b/src/i18n/locales/zh-TW/common.json @@ -22,18 +22,18 @@ "zooMigration": { "actions": { "installZoo": "安裝 Zoo", - "prepareMigration": "準備遷移", + "prepareMigration": "準備交接包", "learnMore": "瞭解更多", "later": "稍後", "includeApiKeys": "包含 API 金鑰", "skipApiKeys": "略過 API 金鑰", "cancel": "取消" }, - "notice": "Roo Code 正在遷移到 Zoo Code。你可以為 Zoo 準備以複製為基礎的遷移交接包,而不會刪除你的 Roo 資料。", + "notice": "Roo Code 即將停止維護。你可以為 Zoo Code 準備以複製為基礎的交接包,而不會刪除你的 Roo 資料。", "installUnavailable": "Zoo Code 已以 ZooCodeOrganization.zoo-code 提供。自動安裝未完成,因此已開啟 Extensions 檢視,你可以從已設定的擴充功能圖庫安裝它。", - "preparePrompt": "要準備本機 Zoo Code 遷移交接包嗎?包含 API 金鑰會將供應商 secrets 寫入本機檔案,讓 Zoo 匯入,然後在匯入後刪除交接包。", - "handoffPrepared": "Zoo Code 遷移交接包已準備在 {{path}}。請安裝 Zoo Code 並從此交接包匯入。", - "handoffFailed": "無法準備 Zoo Code 遷移交接包:{{error}}" + "preparePrompt": "要為 Zoo Code 準備本機交接包嗎?包含 API 金鑰會將供應商 secrets 寫入本機檔案,讓 Zoo Code 匯入,然後在匯入後刪除交接包。", + "handoffPrepared": "Zoo Code 交接包已準備在 {{path}}。請安裝 Zoo Code 並從此交接包匯入。", + "handoffFailed": "無法準備 Zoo Code 交接包:{{error}}" }, "errors": { "invalid_data_uri": "資料 URI 格式無效", diff --git a/src/package.nls.ca.json b/src/package.nls.ca.json index 746e9410240..f6dbd122e8f 100644 --- a/src/package.nls.ca.json +++ b/src/package.nls.ca.json @@ -10,7 +10,7 @@ "command.focusInput.title": "Enfocar Camp d'Entrada", "command.setCustomStoragePath.title": "Establir Ruta d'Emmagatzematge Personalitzada", "command.importSettings.title": "Importar Configuració", - "command.prepareZooMigration.title": "Prepara la migració a Zoo Code", + "command.prepareZooMigration.title": "Prepara el traspàs a Zoo Code", "command.terminal.addToContext.title": "Afegir Contingut del Terminal al Context", "command.terminal.fixCommand.title": "Corregir Aquesta Ordre", "command.terminal.explainCommand.title": "Explicar Aquesta Ordre", diff --git a/src/package.nls.de.json b/src/package.nls.de.json index f30c8b9ed21..cd03fa04912 100644 --- a/src/package.nls.de.json +++ b/src/package.nls.de.json @@ -10,7 +10,7 @@ "command.focusInput.title": "Eingabefeld Fokussieren", "command.setCustomStoragePath.title": "Benutzerdefinierten Speicherpfad Festlegen", "command.importSettings.title": "Einstellungen Importieren", - "command.prepareZooMigration.title": "Zoo Code-Migration Vorbereiten", + "command.prepareZooMigration.title": "Zoo Code-Übergabe Vorbereiten", "command.terminal.addToContext.title": "Terminal-Inhalt zum Kontext Hinzufügen", "command.terminal.fixCommand.title": "Diesen Befehl Reparieren", "command.terminal.explainCommand.title": "Diesen Befehl Erklären", diff --git a/src/package.nls.es.json b/src/package.nls.es.json index 7fe8eeebd61..8657fc0f5ea 100644 --- a/src/package.nls.es.json +++ b/src/package.nls.es.json @@ -10,7 +10,7 @@ "command.focusInput.title": "Enfocar Campo de Entrada", "command.setCustomStoragePath.title": "Establecer Ruta de Almacenamiento Personalizada", "command.importSettings.title": "Importar Configuración", - "command.prepareZooMigration.title": "Preparar Migración a Zoo Code", + "command.prepareZooMigration.title": "Preparar Traspaso a Zoo Code", "command.terminal.addToContext.title": "Añadir Contenido de Terminal al Contexto", "command.terminal.fixCommand.title": "Corregir Este Comando", "command.terminal.explainCommand.title": "Explicar Este Comando", diff --git a/src/package.nls.fr.json b/src/package.nls.fr.json index 495d661da28..8520446c61a 100644 --- a/src/package.nls.fr.json +++ b/src/package.nls.fr.json @@ -10,7 +10,7 @@ "command.focusInput.title": "Focus sur le Champ de Saisie", "command.setCustomStoragePath.title": "Définir le Chemin de Stockage Personnalisé", "command.importSettings.title": "Importer les Paramètres", - "command.prepareZooMigration.title": "Préparer la Migration vers Zoo Code", + "command.prepareZooMigration.title": "Préparer le Transfert vers Zoo Code", "command.terminal.addToContext.title": "Ajouter le Contenu du Terminal au Contexte", "command.terminal.fixCommand.title": "Corriger cette Commande", "command.terminal.explainCommand.title": "Expliquer cette Commande", diff --git a/src/package.nls.hi.json b/src/package.nls.hi.json index 227af866ffa..717c3b37ab6 100644 --- a/src/package.nls.hi.json +++ b/src/package.nls.hi.json @@ -10,7 +10,7 @@ "command.focusInput.title": "इनपुट फ़ील्ड पर फोकस करें", "command.setCustomStoragePath.title": "कस्टम स्टोरेज पाथ सेट करें", "command.importSettings.title": "सेटिंग्स इम्पोर्ट करें", - "command.prepareZooMigration.title": "Zoo Code माइग्रेशन तैयार करें", + "command.prepareZooMigration.title": "Zoo Code Handoff तैयार करें", "command.terminal.addToContext.title": "टर्मिनल सामग्री को संदर्भ में जोड़ें", "command.terminal.fixCommand.title": "यह कमांड ठीक करें", "command.terminal.explainCommand.title": "यह कमांड समझाएं", diff --git a/src/package.nls.id.json b/src/package.nls.id.json index 70c962bf174..fff096bb374 100644 --- a/src/package.nls.id.json +++ b/src/package.nls.id.json @@ -20,7 +20,7 @@ "command.focusInput.title": "Fokus ke Field Input", "command.setCustomStoragePath.title": "Atur Path Penyimpanan Kustom", "command.importSettings.title": "Impor Pengaturan", - "command.prepareZooMigration.title": "Siapkan Migrasi Zoo Code", + "command.prepareZooMigration.title": "Siapkan Handoff Zoo Code", "command.terminal.addToContext.title": "Tambahkan Konten Terminal ke Konteks", "command.terminal.fixCommand.title": "Perbaiki Perintah Ini", "command.terminal.explainCommand.title": "Jelaskan Perintah Ini", diff --git a/src/package.nls.it.json b/src/package.nls.it.json index e7b8aa2b575..7c069fb1aa4 100644 --- a/src/package.nls.it.json +++ b/src/package.nls.it.json @@ -10,7 +10,7 @@ "command.focusInput.title": "Focalizza Campo di Input", "command.setCustomStoragePath.title": "Imposta Percorso di Archiviazione Personalizzato", "command.importSettings.title": "Importa Impostazioni", - "command.prepareZooMigration.title": "Prepara la Migrazione a Zoo Code", + "command.prepareZooMigration.title": "Prepara Handoff per Zoo Code", "command.terminal.addToContext.title": "Aggiungi Contenuto del Terminale al Contesto", "command.terminal.fixCommand.title": "Correggi Questo Comando", "command.terminal.explainCommand.title": "Spiega Questo Comando", diff --git a/src/package.nls.ja.json b/src/package.nls.ja.json index faa42f45cb5..886a4dfa7aa 100644 --- a/src/package.nls.ja.json +++ b/src/package.nls.ja.json @@ -20,7 +20,7 @@ "command.focusInput.title": "入力フィールドにフォーカス", "command.setCustomStoragePath.title": "カスタムストレージパスの設定", "command.importSettings.title": "設定をインポート", - "command.prepareZooMigration.title": "Zoo Code への移行を準備", + "command.prepareZooMigration.title": "Zoo Code ハンドオフを準備", "command.terminal.addToContext.title": "ターミナルの内容をコンテキストに追加", "command.terminal.fixCommand.title": "このコマンドを修正", "command.terminal.explainCommand.title": "このコマンドを説明", diff --git a/src/package.nls.json b/src/package.nls.json index 53828046831..95bf5464be2 100644 --- a/src/package.nls.json +++ b/src/package.nls.json @@ -20,7 +20,7 @@ "command.focusInput.title": "Focus Input Field", "command.setCustomStoragePath.title": "Set Custom Storage Path", "command.importSettings.title": "Import Settings", - "command.prepareZooMigration.title": "Prepare Zoo Code Migration", + "command.prepareZooMigration.title": "Prepare Zoo Code Handoff", "command.terminal.addToContext.title": "Add Terminal Content to Context", "command.terminal.fixCommand.title": "Fix This Command", "command.terminal.explainCommand.title": "Explain This Command", diff --git a/src/package.nls.ko.json b/src/package.nls.ko.json index d760ba9e4c8..49b7d9dbbe1 100644 --- a/src/package.nls.ko.json +++ b/src/package.nls.ko.json @@ -10,7 +10,7 @@ "command.focusInput.title": "입력 필드 포커스", "command.setCustomStoragePath.title": "사용자 지정 저장소 경로 설정", "command.importSettings.title": "설정 가져오기", - "command.prepareZooMigration.title": "Zoo Code 마이그레이션 준비", + "command.prepareZooMigration.title": "Zoo Code 핸드오프 준비", "command.terminal.addToContext.title": "터미널 내용을 컨텍스트에 추가", "command.terminal.fixCommand.title": "이 명령어 수정", "command.terminal.explainCommand.title": "이 명령어 설명", diff --git a/src/package.nls.nl.json b/src/package.nls.nl.json index eb5ee869da1..a50874a5105 100644 --- a/src/package.nls.nl.json +++ b/src/package.nls.nl.json @@ -20,7 +20,7 @@ "command.focusInput.title": "Focus op Invoerveld", "command.setCustomStoragePath.title": "Aangepast Opslagpad Instellen", "command.importSettings.title": "Instellingen Importeren", - "command.prepareZooMigration.title": "Zoo Code-migratie Voorbereiden", + "command.prepareZooMigration.title": "Zoo Code-handoff Voorbereiden", "command.terminal.addToContext.title": "Terminalinhoud aan Context Toevoegen", "command.terminal.fixCommand.title": "Repareer Dit Commando", "command.terminal.explainCommand.title": "Leg Dit Commando Uit", diff --git a/src/package.nls.pl.json b/src/package.nls.pl.json index 1ceeee044fa..7d84508ad52 100644 --- a/src/package.nls.pl.json +++ b/src/package.nls.pl.json @@ -10,7 +10,7 @@ "command.focusInput.title": "Fokus na Pole Wprowadzania", "command.setCustomStoragePath.title": "Ustaw Niestandardową Ścieżkę Przechowywania", "command.importSettings.title": "Importuj Ustawienia", - "command.prepareZooMigration.title": "Przygotuj Migrację do Zoo Code", + "command.prepareZooMigration.title": "Przygotuj Handoff do Zoo Code", "command.terminal.addToContext.title": "Dodaj Zawartość Terminala do Kontekstu", "command.terminal.fixCommand.title": "Napraw tę Komendę", "command.terminal.explainCommand.title": "Wyjaśnij tę Komendę", diff --git a/src/package.nls.pt-BR.json b/src/package.nls.pt-BR.json index dbf82a9e0aa..f46f7b77706 100644 --- a/src/package.nls.pt-BR.json +++ b/src/package.nls.pt-BR.json @@ -10,7 +10,7 @@ "command.focusInput.title": "Focar Campo de Entrada", "command.setCustomStoragePath.title": "Definir Caminho de Armazenamento Personalizado", "command.importSettings.title": "Importar Configurações", - "command.prepareZooMigration.title": "Preparar Migração para o Zoo Code", + "command.prepareZooMigration.title": "Preparar Handoff para o Zoo Code", "command.terminal.addToContext.title": "Adicionar Conteúdo do Terminal ao Contexto", "command.terminal.fixCommand.title": "Corrigir Este Comando", "command.terminal.explainCommand.title": "Explicar Este Comando", diff --git a/src/package.nls.ru.json b/src/package.nls.ru.json index b5938568354..ecaff9bb37f 100644 --- a/src/package.nls.ru.json +++ b/src/package.nls.ru.json @@ -20,7 +20,7 @@ "command.focusInput.title": "Фокус на поле ввода", "command.setCustomStoragePath.title": "Указать путь хранения", "command.importSettings.title": "Импортировать настройки", - "command.prepareZooMigration.title": "Подготовить миграцию в Zoo Code", + "command.prepareZooMigration.title": "Подготовить Handoff для Zoo Code", "command.terminal.addToContext.title": "Добавить содержимое терминала в контекст", "command.terminal.fixCommand.title": "Исправить эту команду", "command.terminal.explainCommand.title": "Объяснить эту команду", diff --git a/src/package.nls.tr.json b/src/package.nls.tr.json index 4b0d4f28b9e..d165da0855d 100644 --- a/src/package.nls.tr.json +++ b/src/package.nls.tr.json @@ -10,7 +10,7 @@ "command.focusInput.title": "Giriş Alanına Odaklan", "command.setCustomStoragePath.title": "Özel Depolama Yolunu Ayarla", "command.importSettings.title": "Ayarları İçe Aktar", - "command.prepareZooMigration.title": "Zoo Code Geçişini Hazırla", + "command.prepareZooMigration.title": "Zoo Code Handoff'unu Hazırla", "command.terminal.addToContext.title": "Terminal İçeriğini Bağlama Ekle", "command.terminal.fixCommand.title": "Bu Komutu Düzelt", "command.terminal.explainCommand.title": "Bu Komutu Açıkla", diff --git a/src/package.nls.vi.json b/src/package.nls.vi.json index 3608c37e33e..3c66dd607c5 100644 --- a/src/package.nls.vi.json +++ b/src/package.nls.vi.json @@ -10,7 +10,7 @@ "command.focusInput.title": "Tập Trung vào Trường Nhập", "command.setCustomStoragePath.title": "Đặt Đường Dẫn Lưu Trữ Tùy Chỉnh", "command.importSettings.title": "Nhập Cài Đặt", - "command.prepareZooMigration.title": "Chuẩn bị Di chuyển sang Zoo Code", + "command.prepareZooMigration.title": "Chuẩn bị Handoff Zoo Code", "command.terminal.addToContext.title": "Thêm Nội Dung Terminal vào Ngữ Cảnh", "command.terminal.fixCommand.title": "Sửa Lệnh Này", "command.terminal.explainCommand.title": "Giải Thích Lệnh Này", diff --git a/src/package.nls.zh-CN.json b/src/package.nls.zh-CN.json index c1343f7b7a4..74739990825 100644 --- a/src/package.nls.zh-CN.json +++ b/src/package.nls.zh-CN.json @@ -10,7 +10,7 @@ "command.focusInput.title": "聚焦输入框", "command.setCustomStoragePath.title": "设置自定义存储路径", "command.importSettings.title": "导入设置", - "command.prepareZooMigration.title": "准备迁移到 Zoo Code", + "command.prepareZooMigration.title": "准备 Zoo Code 交接包", "command.terminal.addToContext.title": "将终端内容添加到上下文", "command.terminal.fixCommand.title": "修复此命令", "command.terminal.explainCommand.title": "解释此命令", diff --git a/src/package.nls.zh-TW.json b/src/package.nls.zh-TW.json index 1cdbfa261a9..40d97e64d4e 100644 --- a/src/package.nls.zh-TW.json +++ b/src/package.nls.zh-TW.json @@ -10,7 +10,7 @@ "command.focusInput.title": "聚焦輸入框", "command.setCustomStoragePath.title": "設定自訂儲存路徑", "command.importSettings.title": "匯入設定", - "command.prepareZooMigration.title": "準備遷移到 Zoo Code", + "command.prepareZooMigration.title": "準備 Zoo Code 交接包", "command.terminal.addToContext.title": "將終端內容新增到上下文", "command.terminal.fixCommand.title": "修復此命令", "command.terminal.explainCommand.title": "解釋此命令", diff --git a/webview-ui/src/components/chat/__tests__/Announcement.spec.tsx b/webview-ui/src/components/chat/__tests__/Announcement.spec.tsx index bcef5937d16..12f9d805a92 100644 --- a/webview-ui/src/components/chat/__tests__/Announcement.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/Announcement.spec.tsx @@ -39,16 +39,16 @@ vi.mock("@src/i18n/TranslationContext", () => ({ useAppTranslation: () => ({ t: (key: string, options?: { version?: string }) => { const translations: Record = { - "chat:announcement.handoff.heading": "Roo is back as Zoo Code.", - "chat:announcement.handoff.readMore": "Read the Zoo announcement", - "chat:announcement.zooMigration.heading": "Prepare your Zoo migration", + "chat:announcement.handoff.heading": "Roo Code is winding down.", + "chat:announcement.handoff.readMore": "Read the Zoo Code announcement", + "chat:announcement.zooMigration.heading": "Prepare a Zoo Code handoff", "chat:announcement.zooMigration.description": - "Create a handoff bundle from Roo's local storage. Roo keeps your original data in place and asks before including API keys.", - "chat:announcement.zooMigration.prepareButton": "Prepare Migration", + "Create a local handoff bundle from Roo's storage. Roo keeps your original data in place and asks before including API keys.", + "chat:announcement.zooMigration.prepareButton": "Prepare Handoff", "chat:announcement.zooMigration.installButton": "Install Zoo", "chat:announcement.zooMigration.detailsHeading": "What this does:", "chat:announcement.zooMigration.copiesData": - "Copies your Roo settings and task history into a Zoo migration folder.", + "Copies your Roo settings and task history into a Zoo handoff folder.", "chat:announcement.zooMigration.keepsOriginals": "Leaves your existing Roo folders untouched so you can verify the handoff first.", "chat:announcement.zooMigration.apiKeysOptIn": @@ -56,7 +56,7 @@ vi.mock("@src/i18n/TranslationContext", () => ({ } if (key === "chat:announcement.title") { - return `Roo Code ${options?.version ?? ""}: Move to Zoo Code` + return `Roo Code ${options?.version ?? ""}: Community handoff option` } return translations[key] ?? key @@ -68,12 +68,12 @@ describe("Announcement", () => { it("renders the v3.53.1 Zoo migration announcement", () => { render() - expect(screen.getByText("Roo Code 3.53.1: Move to Zoo Code")).toBeInTheDocument() - expect(screen.getByText("Roo is back as Zoo Code.")).toBeInTheDocument() - expect(screen.getByText("Prepare your Zoo migration")).toBeInTheDocument() + expect(screen.getByText("Roo Code 3.53.1: Community handoff option")).toBeInTheDocument() + expect(screen.getByText("Roo Code is winding down.")).toBeInTheDocument() + expect(screen.getByText("Prepare a Zoo Code handoff")).toBeInTheDocument() expect( screen.getByText( - "Create a handoff bundle from Roo's local storage. Roo keeps your original data in place and asks before including API keys.", + "Create a local handoff bundle from Roo's storage. Roo keeps your original data in place and asks before including API keys.", ), ).toBeInTheDocument() }) @@ -87,7 +87,7 @@ describe("Announcement", () => { it("posts Zoo migration actions from the announcement", () => { render() - screen.getByRole("button", { name: "Prepare Migration" }).click() + screen.getByRole("button", { name: "Prepare Handoff" }).click() expect(vscode.postMessage).toHaveBeenCalledWith({ type: "prepareZooMigration" }) screen.getByRole("button", { name: "Install Zoo" }).click() diff --git a/webview-ui/src/i18n/locales/ca/chat.json b/webview-ui/src/i18n/locales/ca/chat.json index fa0fc4efe5b..b3e22297bb5 100644 --- a/webview-ui/src/i18n/locales/ca/chat.json +++ b/webview-ui/src/i18n/locales/ca/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "Aprovació automàtica habilitada. Seleccionant en {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}}: passa a Zoo Code", + "title": "Roo Code {{version}}: opció de traspàs comunitària", "support": "Si us plau, dona suport a Roo Code fent una estrella al nostre GitHub.", "stealthModel": { "feature": "Model stealth GRATUÏT per temps limitat - Code Supernova: Ara actualitzat amb una finestra de context d'1M tokens! Un model de codificació agèntica versàtil que suporta entrades d'imatges, disponible a través de Roo Code Cloud.", @@ -348,9 +348,9 @@ "goToSettingsButton": "Anar a Configuració" }, "handoff": { - "heading": "Roo torna com a Zoo Code.", - "description": "Aquesta darrera actualització de Roo Code t’ajuda a moure la configuració local a la nova extensió Zoo Code mantinguda per la comunitat. Roo continua instal·lat prou temps per preparar un paquet de traspàs per a Zoo.", - "readMore": "Llegeix l’anunci de Zoo" + "heading": "Roo Code està arribant al final.", + "description": "Aquesta darrera actualització de Roo Code afegeix un traspàs basat en còpia per als usuaris que vulguin provar Zoo Code, una extensió separada mantinguda per la comunitat.", + "readMore": "Llegeix l'anunci de Zoo Code" }, "release": { "heading": "Què hi ha de nou:", @@ -365,12 +365,12 @@ "tryButton": "Prova els Agents al Núvol" }, "zooMigration": { - "heading": "Prepara la migració a Zoo", - "description": "Crea un paquet de traspàs des de l’emmagatzematge local de Roo. Roo manté les dades originals al seu lloc i et demana permís abans d’incloure claus d’API.", - "prepareButton": "Prepara la migració", + "heading": "Prepara un traspàs per a Zoo Code", + "description": "Crea un paquet local de traspàs des de l'emmagatzematge de Roo. Roo manté les dades originals al seu lloc i pregunta abans d'incloure claus d'API.", + "prepareButton": "Prepara el traspàs", "installButton": "Instal·la Zoo", "detailsHeading": "Què fa això:", - "copiesData": "Copia la configuració de Roo i l’historial de tasques a una carpeta de migració de Zoo.", + "copiesData": "Copia la configuració de Roo i l'historial de tasques a una carpeta de traspàs de Zoo.", "keepsOriginals": "Deixa intactes les carpetes existents de Roo perquè puguis verificar primer el traspàs.", "apiKeysOptIn": "Inclou perfils de proveïdor i claus d’API només si tries explícitament incloure’ls." } diff --git a/webview-ui/src/i18n/locales/de/chat.json b/webview-ui/src/i18n/locales/de/chat.json index 200a8edc6cb..1a0081baba2 100644 --- a/webview-ui/src/i18n/locales/de/chat.json +++ b/webview-ui/src/i18n/locales/de/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "Automatische Genehmigung aktiviert. Wähle in {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}}: Zu Zoo Code wechseln", + "title": "Roo Code {{version}}: Community-Übergabeoption", "support": "Bitte unterstütze Roo Code, indem du uns auf GitHub einen Stern gibst.", "stealthModel": { "feature": "Zeitlich begrenztes KOSTENLOSES Stealth-Modell - Code Supernova: Jetzt mit einem 1M Token Kontextfenster erweitert! Ein vielseitiges agentisches Coding-Modell, das Bildeingaben unterstützt und über Roo Code Cloud zugänglich ist.", @@ -348,9 +348,9 @@ "goToSettingsButton": "Zu den Einstellungen" }, "handoff": { - "heading": "Roo ist als Zoo Code zurück.", - "description": "Dieses letzte Roo Code-Update hilft dir, deine lokale Einrichtung zur neuen, von der Community gepflegten Zoo Code-Erweiterung zu verschieben. Roo bleibt lange genug installiert, um ein Übergabepaket für Zoo vorzubereiten.", - "readMore": "Zoo-Ankündigung lesen" + "heading": "Roo Code läuft aus.", + "description": "Dieses letzte Roo Code-Update fügt eine kopiebasierte Übergabe für Nutzer hinzu, die Zoo Code ausprobieren möchten, eine separate, von der Community gepflegte Erweiterung.", + "readMore": "Zoo Code-Ankündigung lesen" }, "release": { "heading": "Was ist neu:", @@ -365,12 +365,12 @@ "tryButton": "Probiere Cloud-Agenten aus" }, "zooMigration": { - "heading": "Bereite deine Zoo-Migration vor", - "description": "Erstelle ein Übergabepaket aus Roos lokalem Speicher. Roo lässt deine Originaldaten an Ort und Stelle und fragt nach, bevor API-Schlüssel eingeschlossen werden.", - "prepareButton": "Migration vorbereiten", + "heading": "Zoo Code-Übergabe vorbereiten", + "description": "Erstelle ein lokales Übergabepaket aus Roos Speicher. Roo lässt deine ursprünglichen Daten unverändert und fragt nach, bevor API-Schlüssel eingeschlossen werden.", + "prepareButton": "Übergabe Vorbereiten", "installButton": "Zoo installieren", "detailsHeading": "Was dabei passiert:", - "copiesData": "Kopiert deine Roo-Einstellungen und deinen Aufgabenverlauf in einen Zoo-Migrationsordner.", + "copiesData": "Kopiert deine Roo-Einstellungen und deinen Aufgabenverlauf in einen Zoo-Übergabeordner.", "keepsOriginals": "Lässt deine vorhandenen Roo-Ordner unverändert, damit du die Übergabe zuerst prüfen kannst.", "apiKeysOptIn": "Schließt Anbieterprofile und API-Schlüssel nur ein, wenn du dich ausdrücklich dafür entscheidest." } diff --git a/webview-ui/src/i18n/locales/en/chat.json b/webview-ui/src/i18n/locales/en/chat.json index eae7bb0f3ba..78c714d46d7 100644 --- a/webview-ui/src/i18n/locales/en/chat.json +++ b/webview-ui/src/i18n/locales/en/chat.json @@ -357,7 +357,7 @@ "triggerLabelAll": "BRRR" }, "announcement": { - "title": "Roo Code {{version}}: Move to Zoo Code", + "title": "Roo Code {{version}}: Community handoff option", "support": "Please support Roo Code by starring us on GitHub.", "stealthModel": { "feature": "Limited-time FREE stealth model - Code Supernova: Now upgraded with a 1M token context window! A versatile agentic coding model that supports image inputs, accessible through Roo Code Cloud.", @@ -367,9 +367,9 @@ "goToSettingsButton": "Go to Settings" }, "handoff": { - "heading": "Roo is back as Zoo Code.", - "description": "This final Roo Code update helps you move your local setup to the new Zoo Code extension maintained by the community. Roo stays installed long enough to prepare a handoff bundle for Zoo.", - "readMore": "Read the Zoo announcement" + "heading": "Roo Code is winding down.", + "description": "This final Roo Code update adds a copy-based handoff for users who want to try Zoo Code, a separate community-maintained extension.", + "readMore": "Read the Zoo Code announcement" }, "release": { "heading": "What's New:", @@ -384,12 +384,12 @@ "tryButton": "Try Cloud Agents" }, "zooMigration": { - "heading": "Prepare your Zoo migration", - "description": "Create a handoff bundle from Roo's local storage. Roo keeps your original data in place and asks before including API keys.", - "prepareButton": "Prepare Migration", + "heading": "Prepare a Zoo Code handoff", + "description": "Create a local handoff bundle from Roo's storage. Roo keeps your original data in place and asks before including API keys.", + "prepareButton": "Prepare Handoff", "installButton": "Install Zoo", "detailsHeading": "What this does:", - "copiesData": "Copies your Roo settings and task history into a Zoo migration folder.", + "copiesData": "Copies your Roo settings and task history into a Zoo handoff folder.", "keepsOriginals": "Leaves your existing Roo folders untouched so you can verify the handoff first.", "apiKeysOptIn": "Includes provider profiles and API keys only if you explicitly choose to include them." } diff --git a/webview-ui/src/i18n/locales/es/chat.json b/webview-ui/src/i18n/locales/es/chat.json index 95f02394c4c..880fc332850 100644 --- a/webview-ui/src/i18n/locales/es/chat.json +++ b/webview-ui/src/i18n/locales/es/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "Aprobación automática habilitada. Seleccionando en {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}}: pásate a Zoo Code", + "title": "Roo Code {{version}}: opción de traspaso comunitaria", "support": "Por favor, apoya a Roo Code dándonos una estrella en GitHub.", "stealthModel": { "feature": "Modelo stealth GRATUITO por tiempo limitado - Code Supernova: ¡Ahora actualizado con una ventana de contexto de 1M tokens! Un modelo de codificación agéntica versátil que soporta entradas de imágenes, accesible a través de Roo Code Cloud.", @@ -348,9 +348,9 @@ "goToSettingsButton": "Ir a Configuración" }, "handoff": { - "heading": "Roo vuelve como Zoo Code.", - "description": "Esta última actualización de Roo Code te ayuda a mover tu configuración local a la nueva extensión Zoo Code mantenida por la comunidad. Roo seguirá instalado el tiempo suficiente para preparar un paquete de traspaso para Zoo.", - "readMore": "Leer el anuncio de Zoo" + "heading": "Roo Code está llegando a su fin.", + "description": "Esta actualización final de Roo Code añade un traspaso basado en copia para quienes quieran probar Zoo Code, una extensión separada mantenida por la comunidad.", + "readMore": "Leer el anuncio de Zoo Code" }, "release": { "heading": "Qué hay de nuevo:", @@ -365,12 +365,12 @@ "tryButton": "Prueba los Agentes en la Nube" }, "zooMigration": { - "heading": "Prepara tu migración a Zoo", - "description": "Crea un paquete de traspaso desde el almacenamiento local de Roo. Roo mantiene tus datos originales en su sitio y te pregunta antes de incluir claves de API.", - "prepareButton": "Preparar migración", + "heading": "Preparar un traspaso para Zoo Code", + "description": "Crea un paquete local de traspaso desde el almacenamiento de Roo. Roo mantiene tus datos originales en su lugar y pregunta antes de incluir claves de API.", + "prepareButton": "Preparar Traspaso", "installButton": "Instalar Zoo", "detailsHeading": "Qué hace esto:", - "copiesData": "Copia tu configuración de Roo y el historial de tareas en una carpeta de migración de Zoo.", + "copiesData": "Copia tu configuración de Roo y el historial de tareas en una carpeta de traspaso de Zoo.", "keepsOriginals": "Deja intactas tus carpetas actuales de Roo para que puedas verificar primero el traspaso.", "apiKeysOptIn": "Incluye perfiles de proveedor y claves de API solo si eliges incluirlos explícitamente." } diff --git a/webview-ui/src/i18n/locales/fr/chat.json b/webview-ui/src/i18n/locales/fr/chat.json index 87d466355a8..07c0641e231 100644 --- a/webview-ui/src/i18n/locales/fr/chat.json +++ b/webview-ui/src/i18n/locales/fr/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "Approbation automatique activée. Sélection dans {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}} : passer à Zoo Code", + "title": "Roo Code {{version}} : option de transfert communautaire", "support": "Soutiens Roo Code en nous donnant une étoile sur GitHub.", "stealthModel": { "feature": "Modèle stealth GRATUIT pour une durée limitée - Code Supernova : Maintenant amélioré avec une fenêtre de contexte de 1M tokens ! Un modèle de codage agentique polyvalent qui prend en charge les entrées d'images, accessible via Roo Code Cloud.", @@ -348,9 +348,9 @@ "goToSettingsButton": "Aller aux Paramètres" }, "handoff": { - "heading": "Roo revient sous le nom Zoo Code.", - "description": "Cette dernière mise à jour de Roo Code t’aide à déplacer ta configuration locale vers la nouvelle extension Zoo Code maintenue par la communauté. Roo reste installé assez longtemps pour préparer un paquet de transfert pour Zoo.", - "readMore": "Lire l’annonce de Zoo" + "heading": "Roo Code arrive à son terme.", + "description": "Cette dernière mise à jour de Roo Code ajoute un transfert basé sur une copie pour les utilisateurs qui veulent essayer Zoo Code, une extension distincte maintenue par la communauté.", + "readMore": "Lire l'annonce de Zoo Code" }, "release": { "heading": "Quoi de neuf :", @@ -365,12 +365,12 @@ "tryButton": "Essayer les Agents Cloud" }, "zooMigration": { - "heading": "Prépare ta migration vers Zoo", - "description": "Crée un paquet de transfert depuis le stockage local de Roo. Roo laisse tes données d’origine en place et te demande confirmation avant d’inclure les clés API.", - "prepareButton": "Préparer la migration", + "heading": "Préparer un transfert pour Zoo Code", + "description": "Crée un paquet de transfert local depuis le stockage de Roo. Roo laisse tes données d'origine en place et te demande confirmation avant d'inclure les clés API.", + "prepareButton": "Préparer le Transfert", "installButton": "Installer Zoo", "detailsHeading": "Ce que cela fait :", - "copiesData": "Copie tes paramètres Roo et ton historique de tâches dans un dossier de migration Zoo.", + "copiesData": "Copie tes paramètres Roo et ton historique de tâches dans un dossier de transfert Zoo.", "keepsOriginals": "Laisse tes dossiers Roo existants intacts pour que tu puisses vérifier le transfert d’abord.", "apiKeysOptIn": "Inclut les profils de fournisseurs et les clés API uniquement si tu choisis explicitement de les inclure." } diff --git a/webview-ui/src/i18n/locales/hi/chat.json b/webview-ui/src/i18n/locales/hi/chat.json index f303d0ebd2d..ba6e9563069 100644 --- a/webview-ui/src/i18n/locales/hi/chat.json +++ b/webview-ui/src/i18n/locales/hi/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "ऑटो-अनुमोदन सक्षम है। {{seconds}}s में चयन किया जा रहा है…" }, "announcement": { - "title": "Roo Code {{version}}: Zoo Code पर जाएँ", + "title": "Roo Code {{version}}: community handoff option", "support": "कृपया GitHub पर हमें स्टार देकर Roo Code का समर्थन करें।", "stealthModel": { "feature": "सीमित समय के लिए मुफ़्त स्टेल्थ मॉडल - Code Supernova: अब 1M Token संदर्भ विंडो के साथ अपग्रेड हुआ! एक बहुमुखी एजेंटिक कोडिंग मॉडल जो छवि इनपुट का समर्थन करता है, Roo Code Cloud के माध्यम से उपलब्ध।", @@ -348,9 +348,9 @@ "goToSettingsButton": "सेटिंग्स पर जाएं" }, "handoff": { - "heading": "Roo अब Zoo Code के रूप में वापस है।", - "description": "यह अंतिम Roo Code अपडेट आपके स्थानीय सेटअप को समुदाय द्वारा मेंटेन किए जा रहे नए Zoo Code एक्सटेंशन में ले जाने में मदद करता है। Roo इतना समय इंस्टॉल रहेगा कि Zoo के लिए handoff bundle तैयार कर सके।", - "readMore": "Zoo घोषणा पढ़ें" + "heading": "Roo Code अब समाप्ति की ओर है।", + "description": "यह अंतिम Roo Code अपडेट उन उपयोगकर्ताओं के लिए copy-based handoff जोड़ता है जो Zoo Code आज़माना चाहते हैं, जो community-maintained अलग extension है.", + "readMore": "Zoo Code घोषणा पढ़ें" }, "release": { "heading": "नया क्या है:", @@ -365,12 +365,12 @@ "tryButton": "क्लाउड एजेंट आज़माएं" }, "zooMigration": { - "heading": "अपना Zoo migration तैयार करें", - "description": "Roo के local storage से handoff bundle बनाएँ। Roo आपका मूल डेटा वहीं रखता है और API keys शामिल करने से पहले पूछता है।", - "prepareButton": "Migration तैयार करें", + "heading": "Zoo Code handoff तैयार करें", + "description": "Roo के storage से local handoff bundle बनाएँ। Roo आपका मूल data वहीं रखता है और API keys शामिल करने से पहले पूछता है।", + "prepareButton": "Handoff तैयार करें", "installButton": "Zoo इंस्टॉल करें", "detailsHeading": "यह क्या करता है:", - "copiesData": "आपकी Roo settings और task history को Zoo migration folder में कॉपी करता है।", + "copiesData": "आपकी Roo settings और task history को Zoo handoff folder में कॉपी करता है।", "keepsOriginals": "आपके मौजूदा Roo folders को बिना बदले छोड़ता है ताकि आप पहले handoff जाँच सकें।", "apiKeysOptIn": "Provider profiles और API keys तभी शामिल करता है जब आप साफ़ तौर पर उन्हें शामिल करना चुनते हैं।" } diff --git a/webview-ui/src/i18n/locales/id/chat.json b/webview-ui/src/i18n/locales/id/chat.json index ac9250f212d..d3055c2d8a9 100644 --- a/webview-ui/src/i18n/locales/id/chat.json +++ b/webview-ui/src/i18n/locales/id/chat.json @@ -367,7 +367,7 @@ "triggerLabelAll": "BRRR" }, "announcement": { - "title": "Roo Code {{version}}: pindah ke Zoo Code", + "title": "Roo Code {{version}}: opsi handoff komunitas", "support": "Dukung Roo Code dengan memberi kami bintang di GitHub.", "stealthModel": { "feature": "Model stealth GRATIS waktu terbatas - Code Supernova: Sekarang diupgrade dengan jendela konteks 1M token! Model coding agentik serbaguna yang mendukung input gambar, tersedia melalui Roo Code Cloud.", @@ -377,9 +377,9 @@ "goToSettingsButton": "Pergi ke Pengaturan" }, "handoff": { - "heading": "Roo kembali sebagai Zoo Code.", - "description": "Update terakhir Roo Code ini membantumu memindahkan setup lokal ke ekstensi Zoo Code baru yang dikelola komunitas. Roo tetap terpasang cukup lama untuk menyiapkan paket handoff bagi Zoo.", - "readMore": "Baca pengumuman Zoo" + "heading": "Roo Code sedang berakhir.", + "description": "Pembaruan final Roo Code ini menambahkan handoff berbasis salinan bagi pengguna yang ingin mencoba Zoo Code, ekstensi terpisah yang dikelola komunitas.", + "readMore": "Baca pengumuman Zoo Code" }, "release": { "heading": "Yang Baru:", @@ -394,12 +394,12 @@ "tryButton": "Coba Agen Cloud" }, "zooMigration": { - "heading": "Siapkan migrasi Zoo kamu", - "description": "Buat paket handoff dari penyimpanan lokal Roo. Roo mempertahankan data asli di tempatnya dan meminta izin sebelum menyertakan API key.", - "prepareButton": "Siapkan Migrasi", + "heading": "Siapkan handoff Zoo Code", + "description": "Buat handoff bundle lokal dari storage Roo. Roo membiarkan data aslimu tetap di tempat dan bertanya sebelum menyertakan kunci API.", + "prepareButton": "Siapkan Handoff", "installButton": "Instal Zoo", "detailsHeading": "Yang dilakukan:", - "copiesData": "Menyalin pengaturan Roo dan riwayat tugas ke folder migrasi Zoo.", + "copiesData": "Menyalin pengaturan Roo dan riwayat tugas ke folder handoff Zoo.", "keepsOriginals": "Membiarkan folder Roo yang ada tetap utuh agar kamu bisa memeriksa handoff terlebih dulu.", "apiKeysOptIn": "Menyertakan profil provider dan API key hanya jika kamu secara eksplisit memilih untuk menyertakannya." } diff --git a/webview-ui/src/i18n/locales/it/chat.json b/webview-ui/src/i18n/locales/it/chat.json index c3a998120f9..dfe4fe03b60 100644 --- a/webview-ui/src/i18n/locales/it/chat.json +++ b/webview-ui/src/i18n/locales/it/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "Approvazione automatica abilitata. Selezione tra {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}}: passa a Zoo Code", + "title": "Roo Code {{version}}: opzione handoff della community", "support": "Sostieni Roo Code lasciandoci una stella su GitHub.", "stealthModel": { "feature": "Modello stealth GRATUITO per tempo limitato - Code Supernova: Ora potenziato con una finestra di contesto da 1M token! Un modello di codificazione agentiva versatile che supporta input di immagini, accessibile tramite Roo Code Cloud.", @@ -348,9 +348,9 @@ "goToSettingsButton": "Vai alle Impostazioni" }, "handoff": { - "heading": "Roo torna come Zoo Code.", - "description": "Questo ultimo aggiornamento di Roo Code ti aiuta a spostare la configurazione locale nella nuova estensione Zoo Code mantenuta dalla community. Roo resta installato il tempo necessario per preparare un pacchetto di handoff per Zoo.", - "readMore": "Leggi l’annuncio di Zoo" + "heading": "Roo Code sta terminando.", + "description": "Questo ultimo aggiornamento di Roo Code aggiunge un handoff basato su copia per gli utenti che vogliono provare Zoo Code, un'estensione separata mantenuta dalla community.", + "readMore": "Leggi l'annuncio di Zoo Code" }, "release": { "heading": "Novità:", @@ -365,12 +365,12 @@ "tryButton": "Prova gli Agenti Cloud" }, "zooMigration": { - "heading": "Prepara la migrazione a Zoo", - "description": "Crea un pacchetto di handoff dallo storage locale di Roo. Roo lascia i dati originali al loro posto e chiede conferma prima di includere le chiavi API.", - "prepareButton": "Prepara migrazione", + "heading": "Prepara un handoff per Zoo Code", + "description": "Crea un bundle locale di handoff dallo storage di Roo. Roo lascia i dati originali al loro posto e chiede conferma prima di includere le chiavi API.", + "prepareButton": "Prepara Handoff", "installButton": "Installa Zoo", "detailsHeading": "Cosa fa:", - "copiesData": "Copia le impostazioni di Roo e la cronologia delle attività in una cartella di migrazione Zoo.", + "copiesData": "Copia le impostazioni di Roo e la cronologia dei task in una cartella handoff Zoo.", "keepsOriginals": "Lascia intatte le cartelle Roo esistenti così puoi verificare prima l’handoff.", "apiKeysOptIn": "Include profili provider e chiavi API solo se scegli esplicitamente di includerli." } diff --git a/webview-ui/src/i18n/locales/ja/chat.json b/webview-ui/src/i18n/locales/ja/chat.json index d3040872829..b76a53d856c 100644 --- a/webview-ui/src/i18n/locales/ja/chat.json +++ b/webview-ui/src/i18n/locales/ja/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "自動承認が有効です。{{seconds}}秒後に選択中…" }, "announcement": { - "title": "Roo Code {{version}}: Zoo Code へ移行", + "title": "Roo Code {{version}}: コミュニティハンドオフオプション", "support": "GitHubでスターを付けてRoo Codeを応援してください。", "stealthModel": { "feature": "期間限定無料ステルスモデル - Code Supernova:1Mトークンコンテキストウィンドウにアップグレード!画像入力をサポートする多目的エージェントコーディングモデル、Roo Code Cloud 経由で利用可能。", @@ -348,9 +348,9 @@ "goToSettingsButton": "設定に移動" }, "handoff": { - "heading": "Roo は Zoo Code として戻ってきました。", - "description": "この最後の Roo Code アップデートは、ローカル設定をコミュニティがメンテナンスする新しい Zoo Code 拡張機能へ移すためのものです。Roo は Zoo 向けのハンドオフバンドルを準備できるよう、しばらくインストールされたままになります。", - "readMore": "Zoo の発表を読む" + "heading": "Roo Code は終了に向かっています。", + "description": "この最後の Roo Code アップデートでは、Zoo Code を試したいユーザー向けにコピー方式のハンドオフを追加します。Zoo Code はコミュニティが保守する別個の拡張機能です。", + "readMore": "Zoo Code のお知らせを読む" }, "release": { "heading": "新機能:", @@ -365,12 +365,12 @@ "tryButton": "クラウドエージェントを試す" }, "zooMigration": { - "heading": "Zoo への移行を準備", - "description": "Roo のローカルストレージからハンドオフバンドルを作成します。Roo は元データをそのまま残し、API キーを含める前に確認します。", - "prepareButton": "移行を準備", + "heading": "Zoo Code ハンドオフを準備", + "description": "Roo のストレージからローカルハンドオフバンドルを作成します。Roo は元のデータをそのまま残し、API キーを含める前に確認します。", + "prepareButton": "ハンドオフを準備", "installButton": "Zoo をインストール", "detailsHeading": "実行されること:", - "copiesData": "Roo の設定とタスク履歴を Zoo 移行フォルダーにコピーします。", + "copiesData": "Roo の設定とタスク履歴を Zoo ハンドオフフォルダーにコピーします。", "keepsOriginals": "既存の Roo フォルダーは変更せず、先にハンドオフ内容を確認できます。", "apiKeysOptIn": "プロバイダープロファイルと API キーは、明示的に選択した場合にのみ含めます。" } diff --git a/webview-ui/src/i18n/locales/ko/chat.json b/webview-ui/src/i18n/locales/ko/chat.json index 535d6fbeb88..b655f29e463 100644 --- a/webview-ui/src/i18n/locales/ko/chat.json +++ b/webview-ui/src/i18n/locales/ko/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "자동 승인 활성화됨. {{seconds}}초 후 선택 중…" }, "announcement": { - "title": "Roo Code {{version}}: Zoo Code로 이동", + "title": "Roo Code {{version}}: 커뮤니티 핸드오프 옵션", "support": "GitHub에서 별표를 눌러 Roo Code를 응원해 주세요.", "stealthModel": { "feature": "기간 한정 무료 스텔스 모델 - Code Supernova: 이제 1M 토큰 컨텍스트 윈도우로 업그레이드되었습니다! 이미지 입력을 지원하는 다목적 에이전틱 코딩 모델, Roo Code Cloud를 통해 이용 가능.", @@ -348,9 +348,9 @@ "goToSettingsButton": "설정으로 이동" }, "handoff": { - "heading": "Roo가 Zoo Code로 돌아왔습니다.", - "description": "이번 마지막 Roo Code 업데이트는 로컬 설정을 커뮤니티가 유지 관리하는 새 Zoo Code 확장으로 옮길 수 있게 도와줍니다. Roo는 Zoo용 handoff bundle을 준비할 수 있도록 충분한 기간 동안 설치된 상태로 남습니다.", - "readMore": "Zoo 공지 읽기" + "heading": "Roo Code는 종료 단계에 들어갑니다.", + "description": "이번 Roo Code 마지막 업데이트는 Zoo Code를 사용해 보고 싶은 사용자를 위해 복사 기반 핸드오프를 추가합니다. Zoo Code는 커뮤니티가 유지 관리하는 별도 확장입니다.", + "readMore": "Zoo Code 발표 읽기" }, "release": { "heading": "새로운 기능:", @@ -365,12 +365,12 @@ "tryButton": "클라우드 에이전트 사용해보기" }, "zooMigration": { - "heading": "Zoo migration 준비", - "description": "Roo의 local storage에서 handoff bundle을 만듭니다. Roo는 원본 데이터를 그대로 두고 API key를 포함하기 전에 확인합니다.", - "prepareButton": "Migration 준비", + "heading": "Zoo Code 핸드오프 준비", + "description": "Roo 저장소에서 로컬 핸드오프 번들을 만듭니다. Roo는 기존 데이터를 그대로 두고 API 키를 포함하기 전에 확인합니다.", + "prepareButton": "핸드오프 준비", "installButton": "Zoo 설치", "detailsHeading": "수행되는 작업:", - "copiesData": "Roo 설정과 작업 기록을 Zoo migration folder로 복사합니다.", + "copiesData": "Roo 설정과 작업 기록을 Zoo 핸드오프 폴더로 복사합니다.", "keepsOriginals": "기존 Roo 폴더는 그대로 두어 먼저 handoff를 확인할 수 있습니다.", "apiKeysOptIn": "Provider profile과 API key는 명시적으로 포함을 선택한 경우에만 포함합니다." } diff --git a/webview-ui/src/i18n/locales/nl/chat.json b/webview-ui/src/i18n/locales/nl/chat.json index 0c010e05706..3fb4b3f8399 100644 --- a/webview-ui/src/i18n/locales/nl/chat.json +++ b/webview-ui/src/i18n/locales/nl/chat.json @@ -311,7 +311,7 @@ "triggerLabelAll": "BRRR" }, "announcement": { - "title": "Roo Code {{version}}: stap over naar Zoo Code", + "title": "Roo Code {{version}}: community-handoffoptie", "support": "Steun Roo Code door ons een ster te geven op GitHub.", "stealthModel": { "feature": "Beperkt tijd GRATIS stealth model - Code Supernova: Nu geüpgraded met een 1M token contextvenster! Een veelzijdig agentisch codeermodel dat beeldinvoer ondersteunt, beschikbaar via Roo Code Cloud.", @@ -321,9 +321,9 @@ "goToSettingsButton": "Ga naar Instellingen" }, "handoff": { - "heading": "Roo is terug als Zoo Code.", - "description": "Deze laatste Roo Code-update helpt je je lokale setup te verplaatsen naar de nieuwe Zoo Code-extensie die door de community wordt onderhouden. Roo blijft lang genoeg geïnstalleerd om een overdrachtspakket voor Zoo klaar te zetten.", - "readMore": "Lees de Zoo-aankondiging" + "heading": "Roo Code loopt af.", + "description": "Deze laatste Roo Code-update voegt een kopie-gebaseerde handoff toe voor gebruikers die Zoo Code willen proberen, een afzonderlijke extensie die door de community wordt onderhouden.", + "readMore": "Lees de Zoo Code-aankondiging" }, "release": { "heading": "Wat is er nieuw:", @@ -338,12 +338,12 @@ "tryButton": "Probeer Cloud-agents" }, "zooMigration": { - "heading": "Bereid je Zoo-migratie voor", - "description": "Maak een overdrachtspakket vanuit Roo’s lokale opslag. Roo laat je oorspronkelijke data staan en vraagt toestemming voordat API-sleutels worden meegenomen.", - "prepareButton": "Migratie voorbereiden", + "heading": "Bereid een Zoo Code-handoff voor", + "description": "Maak een lokale handoff-bundel vanuit Roo's opslag. Roo laat je oorspronkelijke gegevens staan en vraagt toestemming voordat API-sleutels worden opgenomen.", + "prepareButton": "Handoff Voorbereiden", "installButton": "Zoo installeren", "detailsHeading": "Wat dit doet:", - "copiesData": "Kopieert je Roo-instellingen en taakgeschiedenis naar een Zoo-migratiemap.", + "copiesData": "Kopieert je Roo-instellingen en taakgeschiedenis naar een Zoo-handoffmap.", "keepsOriginals": "Laat je bestaande Roo-mappen ongemoeid zodat je de overdracht eerst kunt controleren.", "apiKeysOptIn": "Neemt providerprofielen en API-sleutels alleen mee als je daar expliciet voor kiest." } diff --git a/webview-ui/src/i18n/locales/pl/chat.json b/webview-ui/src/i18n/locales/pl/chat.json index ca8ecee268a..bce624d5bc6 100644 --- a/webview-ui/src/i18n/locales/pl/chat.json +++ b/webview-ui/src/i18n/locales/pl/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "Automatyczne zatwierdzanie włączone. Zaznaczanie za {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}}: przejdź na Zoo Code", + "title": "Roo Code {{version}}: opcja handoff społecznościowego", "support": "Wesprzyj Roo Code, dając nam gwiazdkę na GitHub.", "stealthModel": { "feature": "Darmowy model stealth na ograniczony czas - Code Supernova: Teraz ulepszony z oknem kontekstu 1M tokenów! Wszechstronny model kodowania agentowego, który obsługuje wprowadzanie obrazów, dostępny przez Roo Code Cloud.", @@ -348,9 +348,9 @@ "goToSettingsButton": "Przejdź do Ustawień" }, "handoff": { - "heading": "Roo wraca jako Zoo Code.", - "description": "Ta ostatnia aktualizacja Roo Code pomaga przenieść lokalną konfigurację do nowego rozszerzenia Zoo Code utrzymywanego przez społeczność. Roo pozostaje zainstalowane wystarczająco długo, aby przygotować pakiet przekazania dla Zoo.", - "readMore": "Przeczytaj ogłoszenie Zoo" + "heading": "Roo Code jest wygaszany.", + "description": "Ta ostatnia aktualizacja Roo Code dodaje handoff oparty na kopii dla użytkowników, którzy chcą wypróbować Zoo Code, osobne rozszerzenie utrzymywane przez społeczność.", + "readMore": "Przeczytaj ogłoszenie Zoo Code" }, "release": { "heading": "Co nowego:", @@ -365,12 +365,12 @@ "tryButton": "Wypróbuj agentów chmurowych" }, "zooMigration": { - "heading": "Przygotuj migrację do Zoo", - "description": "Utwórz pakiet przekazania z lokalnego magazynu Roo. Roo zostawia oryginalne dane na miejscu i pyta przed dołączeniem kluczy API.", - "prepareButton": "Przygotuj migrację", + "heading": "Przygotuj handoff dla Zoo Code", + "description": "Utwórz lokalny pakiet handoff z magazynu Roo. Roo pozostawia oryginalne dane na miejscu i pyta przed dołączeniem kluczy API.", + "prepareButton": "Przygotuj Handoff", "installButton": "Zainstaluj Zoo", "detailsHeading": "Co to robi:", - "copiesData": "Kopiuje ustawienia Roo i historię zadań do folderu migracji Zoo.", + "copiesData": "Kopiuje ustawienia Roo i historię zadań do folderu handoff Zoo.", "keepsOriginals": "Pozostawia istniejące foldery Roo bez zmian, aby można było najpierw sprawdzić przekazanie.", "apiKeysOptIn": "Dołącza profile dostawców i klucze API tylko wtedy, gdy wyraźnie wybierzesz ich dołączenie." } diff --git a/webview-ui/src/i18n/locales/pt-BR/chat.json b/webview-ui/src/i18n/locales/pt-BR/chat.json index 07694cfbb5e..3c216722d58 100644 --- a/webview-ui/src/i18n/locales/pt-BR/chat.json +++ b/webview-ui/src/i18n/locales/pt-BR/chat.json @@ -338,7 +338,7 @@ "timerPrefix": "Aprovação automática ativada. Selecionando em {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}}: migre para o Zoo Code", + "title": "Roo Code {{version}}: opção de handoff da comunidade", "support": "Apoie o Roo Code nos dando uma estrela no GitHub.", "stealthModel": { "feature": "Modelo stealth GRATUITO por tempo limitado - Code Supernova: Agora atualizado com uma janela de contexto de 1M tokens! Um modelo de codificação agêntica versátil que suporta entradas de imagem, acessível através do Roo Code Cloud.", @@ -348,9 +348,9 @@ "goToSettingsButton": "Ir para Configurações" }, "handoff": { - "heading": "O Roo voltou como Zoo Code.", - "description": "Esta última atualização do Roo Code ajuda você a mover sua configuração local para a nova extensão Zoo Code mantida pela comunidade. O Roo continua instalado tempo suficiente para preparar um pacote de transferência para o Zoo.", - "readMore": "Ler o anúncio do Zoo" + "heading": "O Roo Code está sendo encerrado.", + "description": "Esta atualização final do Roo Code adiciona um handoff baseado em cópia para usuários que quiserem experimentar o Zoo Code, uma extensão separada mantida pela comunidade.", + "readMore": "Ler o anúncio do Zoo Code" }, "release": { "heading": "Novidades:", @@ -365,12 +365,12 @@ "tryButton": "Experimentar Agentes em Nuvem" }, "zooMigration": { - "heading": "Prepare sua migração para o Zoo", - "description": "Crie um pacote de transferência a partir do armazenamento local do Roo. O Roo mantém seus dados originais no lugar e pergunta antes de incluir chaves de API.", - "prepareButton": "Preparar migração", + "heading": "Preparar um handoff para o Zoo Code", + "description": "Crie um pacote local de handoff a partir do armazenamento do Roo. O Roo mantém seus dados originais no lugar e pergunta antes de incluir chaves de API.", + "prepareButton": "Preparar Handoff", "installButton": "Instalar Zoo", "detailsHeading": "O que isso faz:", - "copiesData": "Copia suas configurações do Roo e o histórico de tarefas para uma pasta de migração do Zoo.", + "copiesData": "Copia suas configurações do Roo e o histórico de tarefas para uma pasta de handoff do Zoo.", "keepsOriginals": "Mantém suas pastas atuais do Roo intactas para você verificar a transferência primeiro.", "apiKeysOptIn": "Inclui perfis de provedores e chaves de API somente se você escolher explicitamente incluí-los." } diff --git a/webview-ui/src/i18n/locales/ru/chat.json b/webview-ui/src/i18n/locales/ru/chat.json index ee6e85deddf..0c3280e0a18 100644 --- a/webview-ui/src/i18n/locales/ru/chat.json +++ b/webview-ui/src/i18n/locales/ru/chat.json @@ -312,7 +312,7 @@ "triggerLabelAll": "BRRR" }, "announcement": { - "title": "Roo Code {{version}}: переход на Zoo Code", + "title": "Roo Code {{version}}: вариант handoff от сообщества", "support": "Поддержите Roo Code, поставив нам звезду на GitHub.", "stealthModel": { "feature": "Бесплатная скрытая модель на ограниченное время - Code Supernova: Теперь обновлена до контекстного окна 1M токенов! Универсальная модель агентного программирования, поддерживающая ввод изображений, доступная через Roo Code Cloud.", @@ -322,9 +322,9 @@ "goToSettingsButton": "Перейти к Настройкам" }, "handoff": { - "heading": "Roo возвращается как Zoo Code.", - "description": "Это последнее обновление Roo Code помогает перенести локальную настройку в новое расширение Zoo Code, которое поддерживает сообщество. Roo останется установленным достаточно долго, чтобы подготовить пакет передачи для Zoo.", - "readMore": "Прочитать объявление Zoo" + "heading": "Roo Code завершает работу.", + "description": "Это финальное обновление Roo Code добавляет копируемый handoff для пользователей, которые хотят попробовать Zoo Code, отдельное расширение, поддерживаемое сообществом.", + "readMore": "Прочитать объявление Zoo Code" }, "release": { "heading": "Что нового:", @@ -339,12 +339,12 @@ "tryButton": "Попробовать облачных агентов" }, "zooMigration": { - "heading": "Подготовь миграцию в Zoo", - "description": "Создай пакет передачи из локального хранилища Roo. Roo оставляет исходные данные на месте и спрашивает перед включением API-ключей.", - "prepareButton": "Подготовить миграцию", + "heading": "Подготовить handoff для Zoo Code", + "description": "Создайте локальный пакет handoff из хранилища Roo. Roo оставляет исходные данные на месте и спрашивает перед включением API-ключей.", + "prepareButton": "Подготовить Handoff", "installButton": "Установить Zoo", "detailsHeading": "Что это делает:", - "copiesData": "Копирует настройки Roo и историю задач в папку миграции Zoo.", + "copiesData": "Копирует настройки Roo и историю задач в папку handoff Zoo.", "keepsOriginals": "Оставляет существующие папки Roo без изменений, чтобы ты сначала мог проверить передачу.", "apiKeysOptIn": "Включает профили провайдеров и API-ключи только если ты явно выберешь их включение." } diff --git a/webview-ui/src/i18n/locales/tr/chat.json b/webview-ui/src/i18n/locales/tr/chat.json index 6711c6f83e0..77797cbf759 100644 --- a/webview-ui/src/i18n/locales/tr/chat.json +++ b/webview-ui/src/i18n/locales/tr/chat.json @@ -339,7 +339,7 @@ "timerPrefix": "Otomatik onay etkinleştirildi. {{seconds}}s içinde seçim yapılıyor…" }, "announcement": { - "title": "Roo Code {{version}}: Zoo Code’a geç", + "title": "Roo Code {{version}}: topluluk handoff seçeneği", "support": "GitHub'da yıldız vererek Roo Code'u destekle.", "stealthModel": { "feature": "Sınırlı süre ÜCRETSİZ gizli model - Code Supernova: Artık 1M token bağlam penceresi ile yükseltildi! Görüntü girişlerini destekleyen çok amaçlı acentik kodlama modeli, Roo Code Cloud üzerinden kullanılabilir.", @@ -349,9 +349,9 @@ "goToSettingsButton": "Ayarlar'a Git" }, "handoff": { - "heading": "Roo, Zoo Code olarak geri döndü.", - "description": "Bu son Roo Code güncellemesi, yerel kurulumunu topluluk tarafından sürdürülen yeni Zoo Code uzantısına taşıman için yardımcı olur. Roo, Zoo için bir handoff paketi hazırlayacak kadar kurulu kalır.", - "readMore": "Zoo duyurusunu oku" + "heading": "Roo Code sona eriyor.", + "description": "Bu son Roo Code güncellemesi, Zoo Code'u denemek isteyen kullanıcılar için kopya tabanlı bir handoff ekler; Zoo Code, topluluk tarafından sürdürülen ayrı bir eklentidir.", + "readMore": "Zoo Code duyurusunu oku" }, "release": { "heading": "Yenilikler:", @@ -366,12 +366,12 @@ "tryButton": "Bulut Ajanlarını Dene" }, "zooMigration": { - "heading": "Zoo migration hazırlığını yap", - "description": "Roo’nun local storage alanından bir handoff paketi oluştur. Roo özgün verilerini yerinde bırakır ve API key eklemeden önce sorar.", - "prepareButton": "Migration hazırla", + "heading": "Zoo Code handoff'u hazırla", + "description": "Roo'nun depolamasından yerel bir handoff paketi oluştur. Roo orijinal verilerini yerinde tutar ve API anahtarlarını dahil etmeden önce sorar.", + "prepareButton": "Handoff'u Hazırla", "installButton": "Zoo yükle", "detailsHeading": "Bu ne yapar:", - "copiesData": "Roo ayarlarını ve görev geçmişini bir Zoo migration klasörüne kopyalar.", + "copiesData": "Roo ayarlarını ve görev geçmişini bir Zoo handoff klasörüne kopyalar.", "keepsOriginals": "Handoff’u önce doğrulayabilmen için mevcut Roo klasörlerini olduğu gibi bırakır.", "apiKeysOptIn": "Provider profillerini ve API key’leri yalnızca açıkça dahil etmeyi seçersen ekler." } diff --git a/webview-ui/src/i18n/locales/vi/chat.json b/webview-ui/src/i18n/locales/vi/chat.json index 494b3d93ac7..371a784b458 100644 --- a/webview-ui/src/i18n/locales/vi/chat.json +++ b/webview-ui/src/i18n/locales/vi/chat.json @@ -339,7 +339,7 @@ "timerPrefix": "Phê duyệt tự động được bật. Chọn trong {{seconds}}s…" }, "announcement": { - "title": "Roo Code {{version}}: chuyển sang Zoo Code", + "title": "Roo Code {{version}}: tùy chọn handoff từ cộng đồng", "support": "Hãy ủng hộ Roo Code bằng cách gắn sao cho chúng tôi trên GitHub.", "stealthModel": { "feature": "Mô hình stealth MIỄN PHÍ có thời hạn - Code Supernova: Hiện đã được nâng cấp với cửa sổ ngữ cảnh 1M token! Một mô hình lập trình agentic đa năng hỗ trợ đầu vào hình ảnh, có sẵn qua Roo Code Cloud.", @@ -349,9 +349,9 @@ "goToSettingsButton": "Đi tới Cài đặt" }, "handoff": { - "heading": "Roo trở lại với tên Zoo Code.", - "description": "Bản cập nhật Roo Code cuối cùng này giúp bạn chuyển thiết lập cục bộ sang extension Zoo Code mới do cộng đồng duy trì. Roo vẫn được cài đủ lâu để chuẩn bị gói handoff cho Zoo.", - "readMore": "Đọc thông báo về Zoo" + "heading": "Roo Code đang kết thúc.", + "description": "Bản cập nhật cuối này của Roo Code thêm một handoff dạng sao chép cho những người muốn thử Zoo Code, một tiện ích riêng do cộng đồng duy trì.", + "readMore": "Đọc thông báo về Zoo Code" }, "release": { "heading": "Tính năng mới:", @@ -366,12 +366,12 @@ "tryButton": "Dùng thử Agents trên Cloud" }, "zooMigration": { - "heading": "Chuẩn bị migration sang Zoo", - "description": "Tạo gói handoff từ bộ nhớ cục bộ của Roo. Roo giữ nguyên dữ liệu gốc và hỏi trước khi bao gồm API key.", - "prepareButton": "Chuẩn bị migration", + "heading": "Chuẩn bị handoff Zoo Code", + "description": "Tạo một handoff bundle cục bộ từ storage của Roo. Roo giữ nguyên dữ liệu gốc của bạn và hỏi trước khi bao gồm khóa API.", + "prepareButton": "Chuẩn bị Handoff", "installButton": "Cài Zoo", "detailsHeading": "Việc này sẽ:", - "copiesData": "Sao chép cài đặt Roo và lịch sử tác vụ vào thư mục migration của Zoo.", + "copiesData": "Sao chép cài đặt Roo và lịch sử tác vụ vào thư mục handoff của Zoo.", "keepsOriginals": "Giữ nguyên các thư mục Roo hiện có để bạn kiểm tra handoff trước.", "apiKeysOptIn": "Chỉ bao gồm provider profile và API key nếu bạn chủ động chọn đưa chúng vào." } diff --git a/webview-ui/src/i18n/locales/zh-CN/chat.json b/webview-ui/src/i18n/locales/zh-CN/chat.json index 44e3c669092..203c58703dc 100644 --- a/webview-ui/src/i18n/locales/zh-CN/chat.json +++ b/webview-ui/src/i18n/locales/zh-CN/chat.json @@ -339,7 +339,7 @@ "timerPrefix": "自动批准已启用。{{seconds}}秒后选择中…" }, "announcement": { - "title": "Roo Code {{version}}:迁移到 Zoo Code", + "title": "Roo Code {{version}}:社区交接选项", "support": "请在 GitHub 上为我们点星支持 Roo Code。", "stealthModel": { "feature": "限时免费隐形模型 - Code Supernova:现已升级为 1M Token 上下文窗口!一个支持图像输入的多功能代理编程模型,通过 Roo Code Cloud 提供。", @@ -349,9 +349,9 @@ "goToSettingsButton": "前往设置" }, "handoff": { - "heading": "Roo 以 Zoo Code 的形式回来了。", - "description": "这次 Roo Code 的最后更新会帮助你把本地配置迁移到由社区维护的新 Zoo Code 扩展。Roo 会保留安装足够久,以便为 Zoo 准备 handoff bundle。", - "readMore": "阅读 Zoo 公告" + "heading": "Roo Code 即将停止维护。", + "description": "这次最终的 Roo Code 更新为想要尝试 Zoo Code 的用户添加了基于复制的交接;Zoo Code 是一个由社区维护的独立扩展。", + "readMore": "阅读 Zoo Code 公告" }, "release": { "heading": "新增功能:", @@ -366,12 +366,12 @@ "tryButton": "试用云代理" }, "zooMigration": { - "heading": "准备 Zoo 迁移", - "description": "从 Roo 的本地存储创建 handoff bundle。Roo 会保留原始数据,并且在包含 API key 之前先征求你的同意。", - "prepareButton": "准备迁移", + "heading": "准备 Zoo Code 交接包", + "description": "从 Roo 的存储中创建本地交接包。Roo 会保留你的原始数据,并在包含 API 密钥前询问你。", + "prepareButton": "准备交接包", "installButton": "安装 Zoo", "detailsHeading": "这会执行:", - "copiesData": "将你的 Roo 设置和任务历史复制到 Zoo 迁移文件夹。", + "copiesData": "将你的 Roo 设置和任务历史复制到 Zoo 交接文件夹中。", "keepsOriginals": "保持现有 Roo 文件夹不变,方便你先验证 handoff。", "apiKeysOptIn": "只有在你明确选择包含时,才会加入 provider profile 和 API key。" } diff --git a/webview-ui/src/i18n/locales/zh-TW/chat.json b/webview-ui/src/i18n/locales/zh-TW/chat.json index 3defe7b68eb..029b2d2a7db 100644 --- a/webview-ui/src/i18n/locales/zh-TW/chat.json +++ b/webview-ui/src/i18n/locales/zh-TW/chat.json @@ -360,7 +360,7 @@ "triggerLabelAll": "BRRR" }, "announcement": { - "title": "Roo Code {{version}}:移轉到 Zoo Code", + "title": "Roo Code {{version}}:社群交接選項", "support": "請在 GitHub 上給 Roo Code 星星支持我們。", "stealthModel": { "feature": "限時免費隱形模型 - Code Supernova:現已升級為 1M Token 上下文視窗!一個支援影像輸入的多功能代理程式設計模型,透過 Roo Code Cloud 提供。", @@ -370,9 +370,9 @@ "goToSettingsButton": "前往設定" }, "handoff": { - "heading": "Roo 以 Zoo Code 的形式回來了。", - "description": "這次 Roo Code 的最後更新會協助你把本機設定移轉到由社群維護的新 Zoo Code 擴充功能。Roo 會保留安裝足夠久,以便為 Zoo 準備 handoff bundle。", - "readMore": "閱讀 Zoo 公告" + "heading": "Roo Code 即將停止維護。", + "description": "這次最後的 Roo Code 更新為想要嘗試 Zoo Code 的使用者加入了以複製為基礎的交接;Zoo Code 是由社群維護的獨立擴充功能。", + "readMore": "閱讀 Zoo Code 公告" }, "release": { "heading": "新增功能:", @@ -387,12 +387,12 @@ "tryButton": "試用雲端代理" }, "zooMigration": { - "heading": "準備 Zoo 移轉", - "description": "從 Roo 的本機儲存建立 handoff bundle。Roo 會保留原始資料,並在包含 API key 前先詢問你。", - "prepareButton": "準備移轉", + "heading": "準備 Zoo Code 交接包", + "description": "從 Roo 的儲存空間建立本機交接包。Roo 會保留你的原始資料,並在包含 API 金鑰前詢問你。", + "prepareButton": "準備交接包", "installButton": "安裝 Zoo", "detailsHeading": "這會執行:", - "copiesData": "將你的 Roo 設定和任務歷史複製到 Zoo 移轉資料夾。", + "copiesData": "將你的 Roo 設定和任務歷史複製到 Zoo 交接資料夾中。", "keepsOriginals": "保持現有 Roo 資料夾不變,讓你可以先驗證 handoff。", "apiKeysOptIn": "只有在你明確選擇包含時,才會加入 provider profile 和 API key。" } From 1be8a40884ffb0a16766ad7871e198446d949107 Mon Sep 17 00:00:00 2001 From: Elliott de Launay Date: Sat, 9 May 2026 13:46:09 +0000 Subject: [PATCH 6/6] feat(ZooMigration): add test for extension already installed --- src/services/zoo-migration/ZooMigration.ts | 11 +++++++---- .../__tests__/ZooMigration.spec.ts | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/services/zoo-migration/ZooMigration.ts b/src/services/zoo-migration/ZooMigration.ts index fe18ab7b635..13b23f4321e 100644 --- a/src/services/zoo-migration/ZooMigration.ts +++ b/src/services/zoo-migration/ZooMigration.ts @@ -202,10 +202,13 @@ export async function showZooMigrationNotice( export async function installOrShowZooExtension(): Promise { try { await vscode.commands.executeCommand("workbench.extensions.installExtension", ZOO_EXTENSION_ID) - } catch { - await vscode.commands.executeCommand("workbench.extensions.search", ZOO_EXTENSION_ID) - await vscode.window.showInformationMessage(t("common:zooMigration.installUnavailable")) - } + if (vscode.extensions.getExtension(ZOO_EXTENSION_ID)) { + return + } + } catch {} + + await vscode.commands.executeCommand("workbench.extensions.search", ZOO_EXTENSION_ID) + await vscode.window.showInformationMessage(t("common:zooMigration.installUnavailable")) } export async function promptAndCreateZooMigrationHandoff(options: { diff --git a/src/services/zoo-migration/__tests__/ZooMigration.spec.ts b/src/services/zoo-migration/__tests__/ZooMigration.spec.ts index ac5f0e19e44..f81cf84dcfa 100644 --- a/src/services/zoo-migration/__tests__/ZooMigration.spec.ts +++ b/src/services/zoo-migration/__tests__/ZooMigration.spec.ts @@ -207,6 +207,7 @@ describe("installOrShowZooExtension", () => { it("installs the published Zoo Code marketplace extension", async () => { const executeCommand = vi.spyOn(vscode.commands, "executeCommand").mockResolvedValue(undefined) + vi.spyOn(vscode.extensions, "getExtension").mockReturnValue({} as any) await installOrShowZooExtension() @@ -214,6 +215,7 @@ describe("installOrShowZooExtension", () => { "workbench.extensions.installExtension", "ZooCodeOrganization.zoo-code", ) + expect(executeCommand).toHaveBeenCalledTimes(1) }) it("falls back to extension search when the configured gallery cannot install Zoo Code yet", async () => { @@ -233,6 +235,23 @@ describe("installOrShowZooExtension", () => { expect(executeCommand).toHaveBeenNthCalledWith(2, "workbench.extensions.search", "ZooCodeOrganization.zoo-code") expect(showInformationMessage).toHaveBeenCalled() }) + + it("falls back to extension search when install resolves without installing Zoo Code", async () => { + const executeCommand = vi.spyOn(vscode.commands, "executeCommand").mockResolvedValue(undefined) + vi.spyOn(vscode.extensions, "getExtension").mockReturnValue(undefined) + const showInformationMessage = vi.spyOn(vscode.window, "showInformationMessage").mockResolvedValue(undefined) + + await installOrShowZooExtension() + + expect(executeCommand).toHaveBeenNthCalledWith( + 1, + "workbench.extensions.installExtension", + "ZooCodeOrganization.zoo-code", + ) + expect(vscode.extensions.getExtension).toHaveBeenCalledWith("ZooCodeOrganization.zoo-code") + expect(executeCommand).toHaveBeenNthCalledWith(2, "workbench.extensions.search", "ZooCodeOrganization.zoo-code") + expect(showInformationMessage).toHaveBeenCalled() + }) }) function makeContext(globalStoragePath: string): vscode.ExtensionContext {