diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 328bb5c1b2..9dce1a12fd 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -68,7 +68,7 @@ further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported by contacting the project team at support@roocode.com. All complaints
+reported by contacting the project team at https://github.com/RooCodeInc/Roo-Code/security/advisories/new. All complaints
will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
diff --git a/PRIVACY.md b/PRIVACY.md
index 02e8e15103..ebe24c227a 100644
--- a/PRIVACY.md
+++ b/PRIVACY.md
@@ -31,7 +31,7 @@ We take reasonable measures to secure your data, but no system is 100% secure. I
### **Contact Us**
-For any privacy-related questions, reach out to us at support@roocode.com.
+For privacy-related security concerns, use GitHub Security Advisories at https://github.com/RooCodeInc/Roo-Code/security/advisories/new. For other privacy-related questions, open a GitHub Discussion at https://github.com/RooCodeInc/Roo-Code/discussions.
---
diff --git a/apps/web-roo-code/src/app/terms/terms.md b/apps/web-roo-code/src/app/terms/terms.md
index d61b96ef3d..778be03eb7 100644
--- a/apps/web-roo-code/src/app/terms/terms.md
+++ b/apps/web-roo-code/src/app/terms/terms.md
@@ -185,7 +185,7 @@ The parties to this Agreement are independent, and no agency, partnership franch
### 14.2 Notices
-Except as otherwise set forth in this Agreement, all notices to a party shall be in writing and sent to, for Roo Code: [support@roocode.com](mailto:support@roocode.com), and for User the applicable address or email address associated with User's account (which addresses may be updated by such party from time to time by written notice). Notice shall be deemed to have been duly given when received, if personally delivered; when receipt is electronically confirmed, if transmitted by email; the day after it is sent, if sent for next day delivery by recognized overnight delivery service; and upon receipt, if sent by certified or registered mail, return receipt requested. Any notices to User may be sent by email to the email address associated with User's account or may be posted in the Software, and any such notices shall be effective when delivered in accordance with the foregoing. User hereby consents to receiving notices and communications from Roo Code electronically.
+Except as otherwise set forth in this Agreement, all notices to a party shall be in writing and sent to, for Roo Code: the GitHub Issues page at [https://github.com/RooCodeInc/Roo-Code/issues](https://github.com/RooCodeInc/Roo-Code/issues), and for User the applicable address or email address associated with User's account (which addresses may be updated by such party from time to time by written notice). Notice shall be deemed to have been duly given when received, if personally delivered; when receipt is electronically confirmed, if transmitted by email; the day after it is sent, if sent for next day delivery by recognized overnight delivery service; and upon receipt, if sent by certified or registered mail, return receipt requested. Any notices to User may be sent by email to the email address associated with User's account or may be posted in the Software, and any such notices shall be effective when delivered in accordance with the foregoing. User hereby consents to receiving notices and communications from Roo Code electronically.
### 14.3 Assignment
diff --git a/apps/web-roo-code/src/components/chromes/footer.tsx b/apps/web-roo-code/src/components/chromes/footer.tsx
index 69d68e46f8..3b3c4d8a92 100644
--- a/apps/web-roo-code/src/components/chromes/footer.tsx
+++ b/apps/web-roo-code/src/components/chromes/footer.tsx
@@ -137,9 +137,11 @@ export function Footer() {
diff --git a/apps/web-roo-code/src/lib/constants.ts b/apps/web-roo-code/src/lib/constants.ts
index 9ce9e07dee..99afcc9f05 100644
--- a/apps/web-roo-code/src/lib/constants.ts
+++ b/apps/web-roo-code/src/lib/constants.ts
@@ -30,7 +30,7 @@ export const EXTERNAL_LINKS = {
CLOUD_APP_SIGNUP_HOME: "https://app.roocode.com/sign-up?redirect_url=/cloud-agents/setup",
CLOUD_APP_SIGNUP_PRO: "https://app.roocode.com/sign-up?redirect_url=/cloud-agents/setup",
CLOUD_APP_TEAM_TRIAL: "https://app.roocode.com/checkout/team",
- SUPPORT: "mailto:support@roocode.com",
+ SUPPORT: "https://github.com/RooCodeInc/Roo-Code/issues/new/choose",
}
export const INTERNAL_LINKS = {
diff --git a/locales/ca/CODE_OF_CONDUCT.md b/locales/ca/CODE_OF_CONDUCT.md
index 05033ff04a..2eb6c66218 100644
--- a/locales/ca/CODE_OF_CONDUCT.md
+++ b/locales/ca/CODE_OF_CONDUCT.md
@@ -68,7 +68,7 @@ definida i clarificada addicionalment pels mantenidors del projecte.
## Aplicació
Els casos de comportament abusiu, assetjador o altrament inacceptable poden ser
-reportats contactant amb l'equip del projecte a support@roocode.com. Totes les queixes
+reportats contactant amb l'equip del projecte a https://github.com/RooCodeInc/Roo-Code/security/advisories/new. Totes les queixes
seran revisades i investigades i resultaran en una resposta que
es consideri necessària i adequada a les circumstàncies. L'equip del projecte està
obligat a mantenir la confidencialitat respecte al reportador d'un incident.
diff --git a/locales/de/CODE_OF_CONDUCT.md b/locales/de/CODE_OF_CONDUCT.md
index 84bbe9630c..631f486424 100644
--- a/locales/de/CODE_OF_CONDUCT.md
+++ b/locales/de/CODE_OF_CONDUCT.md
@@ -67,7 +67,7 @@ von den Projektbetreuern weiter definiert und geklärt werden.
## Durchsetzung
Fälle von missbräuchlichem, belästigendem oder anderweitig inakzeptablem Verhalten können
-dem Projektteam unter support@roocode.com gemeldet werden. Alle
+dem Projektteam unter https://github.com/RooCodeInc/Roo-Code/security/advisories/new gemeldet werden. Alle
Beschwerden werden überprüft und untersucht und führen zu einer Reaktion, die
als notwendig und angemessen für die Umstände erachtet wird. Das Projektteam ist
verpflichtet, die Vertraulichkeit in Bezug auf den Melder eines Vorfalls zu wahren.
diff --git a/locales/es/CODE_OF_CONDUCT.md b/locales/es/CODE_OF_CONDUCT.md
index 149fbdb779..e2393ae0d0 100644
--- a/locales/es/CODE_OF_CONDUCT.md
+++ b/locales/es/CODE_OF_CONDUCT.md
@@ -67,7 +67,7 @@ definida y aclarada aún más por los mantenedores del proyecto.
## Aplicación
Los casos de comportamiento abusivo, acosador o de otro modo inaceptable pueden ser
-reportados contactando al equipo del proyecto en support@roocode.com. Todas las quejas
+reportados contactando al equipo del proyecto en https://github.com/RooCodeInc/Roo-Code/security/advisories/new. Todas las quejas
serán revisadas e investigadas y resultarán en una respuesta que
se considera necesaria y apropiada a las circunstancias. El equipo del proyecto está
obligado a mantener la confidencialidad con respecto al informante de un incidente.
diff --git a/locales/fr/CODE_OF_CONDUCT.md b/locales/fr/CODE_OF_CONDUCT.md
index 04df05a481..0803ae3136 100644
--- a/locales/fr/CODE_OF_CONDUCT.md
+++ b/locales/fr/CODE_OF_CONDUCT.md
@@ -68,7 +68,7 @@ La représentation d'un projet peut être définie et clarifiée davantage par l
## Application
Les cas de comportement abusif, harcelant ou autrement inacceptable peuvent être
-signalés en contactant l'équipe du projet à support@roocode.com. Toutes les plaintes
+signalés en contactant l'équipe du projet à https://github.com/RooCodeInc/Roo-Code/security/advisories/new. Toutes les plaintes
seront examinées et étudiées et donneront lieu à une réponse qui
est jugée nécessaire et appropriée aux circonstances. L'équipe du projet est
obligée de maintenir la confidentialité concernant la personne qui signale un incident.
diff --git a/locales/hi/CODE_OF_CONDUCT.md b/locales/hi/CODE_OF_CONDUCT.md
index 8c44070adf..2e73ddf21b 100644
--- a/locales/hi/CODE_OF_CONDUCT.md
+++ b/locales/hi/CODE_OF_CONDUCT.md
@@ -66,7 +66,7 @@
## प्रवर्तन
दुर्व्यवहार, उत्पीड़न, या अन्यथा अस्वीकार्य व्यवहार के उदाहरणों की
-रिपोर्ट support@roocode.com पर प्रोजेक्ट टीम से संपर्क करके की जा सकती है। सभी शिकायतें
+रिपोर्ट https://github.com/RooCodeInc/Roo-Code/security/advisories/new पर प्रोजेक्ट टीम से संपर्क करके की जा सकती है। सभी शिकायतें
समीक्षा की जाएंगी और जांच की जाएगी और इसके परिणामस्वरूप एक प्रतिक्रिया होगी जो
परिस्थितियों के अनुसार आवश्यक और उचित मानी जाती है। प्रोजेक्ट टीम
एक घटना के रिपोर्टर के संबंध में गोपनीयता बनाए रखने के लिए बाध्य है।
diff --git a/locales/id/CODE_OF_CONDUCT.md b/locales/id/CODE_OF_CONDUCT.md
index 27c616628c..317c11be31 100644
--- a/locales/id/CODE_OF_CONDUCT.md
+++ b/locales/id/CODE_OF_CONDUCT.md
@@ -47,7 +47,7 @@ Kode Etik ini berlaku baik di dalam ruang proyek maupun di ruang publik ketika s
## Penegakan
-Contoh perilaku kasar, melecehkan, atau perilaku lain yang tidak dapat diterima dapat dilaporkan dengan menghubungi tim proyek di support@roocode.com. Semua keluhan akan ditinjau dan diselidiki dan akan menghasilkan respons yang dianggap perlu dan sesuai dengan keadaan. Tim proyek wajib menjaga kerahasiaan sehubungan dengan pelapor insiden. Detail lebih lanjut tentang kebijakan penegakan spesifik dapat diposting secara terpisah.
+Contoh perilaku kasar, melecehkan, atau perilaku lain yang tidak dapat diterima dapat dilaporkan dengan menghubungi tim proyek di https://github.com/RooCodeInc/Roo-Code/security/advisories/new. Semua keluhan akan ditinjau dan diselidiki dan akan menghasilkan respons yang dianggap perlu dan sesuai dengan keadaan. Tim proyek wajib menjaga kerahasiaan sehubungan dengan pelapor insiden. Detail lebih lanjut tentang kebijakan penegakan spesifik dapat diposting secara terpisah.
Maintainer proyek yang tidak mengikuti atau menegakkan Kode Etik dengan itikad baik dapat menghadapi dampak sementara atau permanen sebagaimana ditentukan oleh anggota lain dari kepemimpinan proyek.
diff --git a/locales/it/CODE_OF_CONDUCT.md b/locales/it/CODE_OF_CONDUCT.md
index 42adbffaaa..04f5ddd3d6 100644
--- a/locales/it/CODE_OF_CONDUCT.md
+++ b/locales/it/CODE_OF_CONDUCT.md
@@ -68,7 +68,7 @@ ulteriormente definita e chiarita dai manutentori del progetto.
## Applicazione
Casi di comportamento abusivo, molesto o altrimenti inaccettabile possono essere
-segnalati contattando il team del progetto all'indirizzo support@roocode.com. Tutti i reclami
+segnalati contattando il team del progetto all'indirizzo https://github.com/RooCodeInc/Roo-Code/security/advisories/new. Tutti i reclami
saranno esaminati e indagati e risulteranno in una risposta che
è ritenuta necessaria e appropriata alle circostanze. Il team del progetto è
obbligato a mantenere la riservatezza nei confronti di chi segnala un incidente.
diff --git a/locales/ja/CODE_OF_CONDUCT.md b/locales/ja/CODE_OF_CONDUCT.md
index 08290123b9..64d1014826 100644
--- a/locales/ja/CODE_OF_CONDUCT.md
+++ b/locales/ja/CODE_OF_CONDUCT.md
@@ -69,7 +69,7 @@
## 施行
虐待的、嫌がらせ、またはその他容認できない行動の事例は、
-support@roocode.com でプロジェクトチームに連絡することで報告することができます。
+https://github.com/RooCodeInc/Roo-Code/security/advisories/new でプロジェクトチームに連絡することで報告することができます。
すべての苦情は審査・調査され、状況に応じて必要かつ適切と
判断される対応がとられます。プロジェクトチームは
インシデント報告者に関する守秘義務を守る義務があります。
diff --git a/locales/ko/CODE_OF_CONDUCT.md b/locales/ko/CODE_OF_CONDUCT.md
index 87a481c064..f7e35121d3 100644
--- a/locales/ko/CODE_OF_CONDUCT.md
+++ b/locales/ko/CODE_OF_CONDUCT.md
@@ -62,7 +62,7 @@
## 시행
학대, 괴롭힘 또는 기타 용납할 수 없는 행동의 사례는
-support@roocode.com으로 프로젝트 팀에 연락하여 보고할 수 있습니다. 모든 불만 사항은
+https://github.com/RooCodeInc/Roo-Code/security/advisories/new으로 프로젝트 팀에 연락하여 보고할 수 있습니다. 모든 불만 사항은
검토되고 조사되며 상황에 필요하고 적절하다고 판단되는 대응으로 이어질 것입니다. 프로젝트 팀은
사건의 보고자와 관련하여 기밀을 유지할 의무가 있습니다.
특정 시행 정책의 추가 세부 사항은 별도로 게시될 수 있습니다.
diff --git a/locales/nl/CODE_OF_CONDUCT.md b/locales/nl/CODE_OF_CONDUCT.md
index 82a2e48ddd..9de569bf74 100644
--- a/locales/nl/CODE_OF_CONDUCT.md
+++ b/locales/nl/CODE_OF_CONDUCT.md
@@ -47,7 +47,7 @@ Deze Gedragscode is van toepassing binnen projectruimtes en in openbare ruimtes
## Handhaving
-Voorvallen van beledigend, intimiderend of anderszins onacceptabel gedrag kunnen worden gemeld door contact op te nemen met het projectteam via support@roocode.com. Alle klachten zullen worden beoordeeld en onderzocht en zullen resulteren in een reactie die passend wordt geacht voor de omstandigheden. Het projectteam is verplicht vertrouwelijkheid te bewaren met betrekking tot de melder van het incident. Verdere details over specifiek handhavingsbeleid kunnen afzonderlijk worden gepubliceerd.
+Voorvallen van beledigend, intimiderend of anderszins onacceptabel gedrag kunnen worden gemeld door contact op te nemen met het projectteam via https://github.com/RooCodeInc/Roo-Code/security/advisories/new. Alle klachten zullen worden beoordeeld en onderzocht en zullen resulteren in een reactie die passend wordt geacht voor de omstandigheden. Het projectteam is verplicht vertrouwelijkheid te bewaren met betrekking tot de melder van het incident. Verdere details over specifiek handhavingsbeleid kunnen afzonderlijk worden gepubliceerd.
Projectbeheerders die de Gedragscode niet te goeder trouw volgen of handhaven, kunnen tijdelijke of permanente gevolgen ondervinden zoals bepaald door andere leden van het leiderschap van het project.
diff --git a/locales/pl/CODE_OF_CONDUCT.md b/locales/pl/CODE_OF_CONDUCT.md
index 70d0eb8648..58849b361d 100644
--- a/locales/pl/CODE_OF_CONDUCT.md
+++ b/locales/pl/CODE_OF_CONDUCT.md
@@ -68,7 +68,7 @@ dalej definiowana i wyjaśniana przez opiekunów projektu.
## Egzekwowanie
Przypadki obraźliwego, nękającego lub w inny sposób niedopuszczalnego zachowania mogą być
-zgłaszane poprzez kontakt z zespołem projektu pod adresem support@roocode.com. Wszystkie skargi
+zgłaszane poprzez kontakt z zespołem projektu pod adresem https://github.com/RooCodeInc/Roo-Code/security/advisories/new. Wszystkie skargi
zostaną przejrzane i zbadane, co zaowocuje odpowiedzią, która
zostanie uznana za niezbędną i odpowiednią do okoliczności. Zespół projektu jest
zobowiązany do zachowania poufności w odniesieniu do zgłaszającego incydent.
diff --git a/locales/pt-BR/CODE_OF_CONDUCT.md b/locales/pt-BR/CODE_OF_CONDUCT.md
index 1f33fb0152..3ba40fb09a 100644
--- a/locales/pt-BR/CODE_OF_CONDUCT.md
+++ b/locales/pt-BR/CODE_OF_CONDUCT.md
@@ -68,7 +68,7 @@ definida e esclarecida posteriormente pelos mantenedores do projeto.
## Aplicação
Instâncias de comportamento abusivo, de assédio ou de outra forma inaceitável podem ser
-relatadas entrando em contato com a equipe do projeto em support@roocode.com. Todas as reclamações
+relatadas entrando em contato com a equipe do projeto em https://github.com/RooCodeInc/Roo-Code/security/advisories/new. Todas as reclamações
serão revisadas e investigadas e resultarão em uma resposta que
é considerada necessária e apropriada às circunstâncias. A equipe do projeto é
obrigada a manter confidencialidade em relação ao relator de um incidente.
diff --git a/locales/ru/CODE_OF_CONDUCT.md b/locales/ru/CODE_OF_CONDUCT.md
index 3063aa7060..b14ec02525 100644
--- a/locales/ru/CODE_OF_CONDUCT.md
+++ b/locales/ru/CODE_OF_CONDUCT.md
@@ -62,7 +62,7 @@
## Правоприменение
О случаях оскорбительного, притесняющего или иного неприемлемого поведения можно
-сообщить, связавшись с командой проекта по адресу support@roocode.com. Все жалобы
+сообщить, связавшись с командой проекта по адресу https://github.com/RooCodeInc/Roo-Code/security/advisories/new. Все жалобы
будут рассмотрены и расследованы, что приведет к ответу, который
будет считаться необходимым и соответствующим обстоятельствам. Команда проекта
обязана сохранять конфиденциальность в отношении лица, сообщившего об инциденте.
diff --git a/locales/tr/CODE_OF_CONDUCT.md b/locales/tr/CODE_OF_CONDUCT.md
index 1e995d9cc4..9fcc83b6e6 100644
--- a/locales/tr/CODE_OF_CONDUCT.md
+++ b/locales/tr/CODE_OF_CONDUCT.md
@@ -64,7 +64,7 @@ tanımlanabilir ve netleştirilebilir.
## Uygulama
Taciz edici veya başka türlü kabul edilemez davranış örnekleri,
-support@roocode.com adresinden proje ekibiyle iletişime geçilerek bildirilebilir. Tüm şikayetler
+https://github.com/RooCodeInc/Roo-Code/security/advisories/new adresinden proje ekibiyle iletişime geçilerek bildirilebilir. Tüm şikayetler
incelenecek ve araştırılacak ve koşullara
göre gerekli ve uygun görülen bir yanıtla sonuçlanacaktır. Proje ekibi,
bir olayı bildiren kişiye ilişkin gizliliği korumakla yükümlüdür.
diff --git a/locales/vi/CODE_OF_CONDUCT.md b/locales/vi/CODE_OF_CONDUCT.md
index 04c8a40e80..9f4db336b3 100644
--- a/locales/vi/CODE_OF_CONDUCT.md
+++ b/locales/vi/CODE_OF_CONDUCT.md
@@ -68,7 +68,7 @@ tại một sự kiện trực tuyến hoặc ngoại tuyến. Đại diện c
## Thực Thi
Các trường hợp hành vi lạm dụng, quấy rối, hoặc không thể chấp nhận khác có thể được
-báo cáo bằng cách liên hệ với nhóm dự án tại support@roocode.com. Tất cả khiếu nại
+báo cáo bằng cách liên hệ với nhóm dự án tại https://github.com/RooCodeInc/Roo-Code/security/advisories/new. Tất cả khiếu nại
sẽ được xem xét và điều tra và sẽ dẫn đến phản hồi được
cho là cần thiết và phù hợp với hoàn cảnh. Nhóm dự án có
nghĩa vụ duy trì tính bảo mật đối với người báo cáo về một sự cố.
diff --git a/locales/zh-CN/CODE_OF_CONDUCT.md b/locales/zh-CN/CODE_OF_CONDUCT.md
index 573874c2aa..88ec4075fe 100644
--- a/locales/zh-CN/CODE_OF_CONDUCT.md
+++ b/locales/zh-CN/CODE_OF_CONDUCT.md
@@ -63,7 +63,7 @@
## 执行
-可能通过联系项目团队(support@roocode.com)
+可能通过联系项目团队(https://github.com/RooCodeInc/Roo-Code/security/advisories/new)
来报告辱骂、骚扰或其他不可接受的行为的情况。所有
投诉将被审查和调查,并将导致被认为
必要且适合情况的回应。项目团队有
diff --git a/locales/zh-TW/CODE_OF_CONDUCT.md b/locales/zh-TW/CODE_OF_CONDUCT.md
index 30f79a875b..e337c82f77 100644
--- a/locales/zh-TW/CODE_OF_CONDUCT.md
+++ b/locales/zh-TW/CODE_OF_CONDUCT.md
@@ -47,7 +47,7 @@
## 執行
-如發生辱罵、騷擾或其他不可接受的行為,請透過 support@roocode.com 聯絡專案團隊回報。所有申訴都將被審查和調查,並做出必要且合適的回應。專案團隊有義務為事件回報者保密。具體執行政策的更多細節可能另行公佈。
+如發生辱罵、騷擾或其他不可接受的行為,請透過 https://github.com/RooCodeInc/Roo-Code/security/advisories/new 聯絡專案團隊回報。所有申訴都將被審查和調查,並做出必要且合適的回應。專案團隊有義務為事件回報者保密。具體執行政策的更多細節可能另行公佈。
未遵守或未切實執行本行為準則的專案維護者,可能會面臨由專案領導團隊其他成員所決定的暫時或永久處分。
diff --git a/packages/evals/src/cli/utils.ts b/packages/evals/src/cli/utils.ts
index 5f2db9f9bd..af036775fe 100644
--- a/packages/evals/src/cli/utils.ts
+++ b/packages/evals/src/cli/utils.ts
@@ -25,7 +25,7 @@ export const isDockerContainer = () => {
export const resetEvalsRepo = async ({ run, cwd }: { run: Run; cwd: string }) => {
await execa({ cwd })`git config user.name "Roo Code"`
- await execa({ cwd })`git config user.email "support@roocode.com"`
+ await execa({ cwd })`git config user.email "noreply@example.com"`
await execa({ cwd })`git checkout -f`
await execa({ cwd })`git clean -fd`
await execa({ cwd })`git checkout -b runs/${run.id}-${crypto.randomUUID().slice(0, 8)} main`
diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts
index 1106d34005..09eff71df6 100644
--- a/src/core/webview/ClineProvider.ts
+++ b/src/core/webview/ClineProvider.ts
@@ -1968,6 +1968,11 @@ export class ClineProvider
async postStateToWebview() {
const state = await this.getStateToPostToWebview()
+ await vscode.commands.executeCommand(
+ "setContext",
+ "roo-cline.cloudIsAuthenticated",
+ state.cloudIsAuthenticated === true,
+ )
this.clineMessagesSeq++
state.clineMessagesSeq = this.clineMessagesSeq
this.postMessageToWebview({ type: "state", state })
@@ -1989,6 +1994,11 @@ export class ClineProvider
*/
async postStateToWebviewWithoutTaskHistory(): Promise {
const state = await this.getStateToPostToWebview()
+ await vscode.commands.executeCommand(
+ "setContext",
+ "roo-cline.cloudIsAuthenticated",
+ state.cloudIsAuthenticated === true,
+ )
this.clineMessagesSeq++
state.clineMessagesSeq = this.clineMessagesSeq
const { taskHistory: _omit, ...rest } = state
@@ -2013,6 +2023,11 @@ export class ClineProvider
*/
async postStateToWebviewWithoutClineMessages(): Promise {
const state = await this.getStateToPostToWebview()
+ await vscode.commands.executeCommand(
+ "setContext",
+ "roo-cline.cloudIsAuthenticated",
+ state.cloudIsAuthenticated === true,
+ )
const { clineMessages: _omitMessages, taskHistory: _omitHistory, ...rest } = state
this.postMessageToWebview({ type: "state", state: rest })
diff --git a/src/core/webview/__tests__/diagnosticsHandler.spec.ts b/src/core/webview/__tests__/diagnosticsHandler.spec.ts
index 27593b56bf..c5b16ced54 100644
--- a/src/core/webview/__tests__/diagnosticsHandler.spec.ts
+++ b/src/core/webview/__tests__/diagnosticsHandler.spec.ts
@@ -85,7 +85,7 @@ describe("generateErrorDiagnostics", () => {
// taskId.slice(0, 8) = "test-tas" from "test-task-id"
expect(String(writtenPath)).toContain("roo-diagnostics-test-tas")
expect(String(writtenContent)).toContain(
- "// Please share this file with Roo Code Support (support@roocode.com) to diagnose the issue faster",
+ "// If you open a GitHub issue, you can attach this file to help diagnose the issue faster.",
)
expect(String(writtenContent)).toContain('"error":')
expect(String(writtenContent)).toContain('"history":')
diff --git a/src/core/webview/diagnosticsHandler.ts b/src/core/webview/diagnosticsHandler.ts
index 212ddbc5de..7bb869ca07 100644
--- a/src/core/webview/diagnosticsHandler.ts
+++ b/src/core/webview/diagnosticsHandler.ts
@@ -65,8 +65,8 @@ export async function generateErrorDiagnostics(params: GenerateDiagnosticsParams
// Prepend human-readable guidance comments before the JSON payload
const headerComment =
- "// Please share this file with Roo Code Support (support@roocode.com) to diagnose the issue faster\n" +
- "// Just make sure you're OK sharing the contents of the conversation below.\n\n"
+ "// If you open a GitHub issue, you can attach this file to help diagnose the issue faster.\n" +
+ "// Only share it if you're OK sharing the contents of the conversation below.\n\n"
const jsonContent = JSON.stringify(diagnostics, null, 2)
const fullContent = headerComment + jsonContent
diff --git a/src/package.json b/src/package.json
index cb3b93d160..64b00632d1 100644
--- a/src/package.json
+++ b/src/package.json
@@ -226,7 +226,7 @@
{
"command": "roo-cline.cloudButtonClicked",
"group": "navigation@3",
- "when": "view == roo-cline.SidebarProvider"
+ "when": "view == roo-cline.SidebarProvider && roo-cline.cloudIsAuthenticated"
},
{
"command": "roo-cline.marketplaceButtonClicked",
@@ -258,7 +258,7 @@
{
"command": "roo-cline.cloudButtonClicked",
"group": "navigation@3",
- "when": "activeWebviewPanelId == roo-cline.TabPanelProvider"
+ "when": "activeWebviewPanelId == roo-cline.TabPanelProvider && roo-cline.cloudIsAuthenticated"
},
{
"command": "roo-cline.marketplaceButtonClicked",
diff --git a/src/services/checkpoints/__tests__/ShadowCheckpointService.spec.ts b/src/services/checkpoints/__tests__/ShadowCheckpointService.spec.ts
index 5bc43d54ce..df22bfb0fa 100644
--- a/src/services/checkpoints/__tests__/ShadowCheckpointService.spec.ts
+++ b/src/services/checkpoints/__tests__/ShadowCheckpointService.spec.ts
@@ -17,7 +17,7 @@ const tmpDir = path.join(os.tmpdir(), "CheckpointService")
const initWorkspaceRepo = async ({
workspaceDir,
userName = "Roo Code",
- userEmail = "support@roocode.com",
+ userEmail = "noreply@example.com",
testFileName = "test.txt",
textFileContent = "Hello, world!",
}: {
@@ -389,7 +389,7 @@ describe.each([[RepoPerTaskCheckpointService, "RepoPerTaskCheckpointService"]])(
const mainGit = simpleGit(workspaceDir)
await mainGit.init()
await mainGit.addConfig("user.name", "Roo Code")
- await mainGit.addConfig("user.email", "support@roocode.com")
+ await mainGit.addConfig("user.email", "noreply@example.com")
// Create a nested repo inside the workspace.
const nestedRepoPath = path.join(workspaceDir, "nested-project")
@@ -397,7 +397,7 @@ describe.each([[RepoPerTaskCheckpointService, "RepoPerTaskCheckpointService"]])(
const nestedGit = simpleGit(nestedRepoPath)
await nestedGit.init()
await nestedGit.addConfig("user.name", "Roo Code")
- await nestedGit.addConfig("user.email", "support@roocode.com")
+ await nestedGit.addConfig("user.email", "noreply@example.com")
// Add a file to the nested repo.
const nestedFile = path.join(nestedRepoPath, "nested-file.txt")
@@ -459,7 +459,7 @@ describe.each([[RepoPerTaskCheckpointService, "RepoPerTaskCheckpointService"]])(
const mainGit = simpleGit(workspaceDir)
await mainGit.init()
await mainGit.addConfig("user.name", "Roo Code")
- await mainGit.addConfig("user.email", "support@roocode.com")
+ await mainGit.addConfig("user.email", "noreply@example.com")
// Create a test file in the main workspace.
const mainFile = path.join(workspaceDir, "main-file.txt")
@@ -975,7 +975,7 @@ describe("worktree path comparison", () => {
const mainGit = simpleGit(workspaceDir)
await mainGit.init()
await mainGit.addConfig("user.name", "Roo Code")
- await mainGit.addConfig("user.email", "support@roocode.com")
+ await mainGit.addConfig("user.email", "noreply@example.com")
await fs.writeFile(path.join(workspaceDir, "main.txt"), "main content")
await mainGit.add("main.txt")
@@ -1010,7 +1010,7 @@ describe("worktree path comparison", () => {
const mainGit = simpleGit(workspaceDir)
await mainGit.init()
await mainGit.addConfig("user.name", "Roo Code")
- await mainGit.addConfig("user.email", "support@roocode.com")
+ await mainGit.addConfig("user.email", "noreply@example.com")
await fs.writeFile(path.join(workspaceDir, "main.txt"), "main content")
await mainGit.add("main.txt")
diff --git a/webview-ui/src/App.tsx b/webview-ui/src/App.tsx
index cccb0422ca..b5819ea93d 100644
--- a/webview-ui/src/App.tsx
+++ b/webview-ui/src/App.tsx
@@ -93,6 +93,10 @@ const App = () => {
const switchTab = useCallback(
(newTab: Tab) => {
+ if (newTab === "cloud" && !cloudIsAuthenticated && mdmCompliant !== false) {
+ return
+ }
+
// Only check MDM compliance if mdmCompliant is explicitly false (meaning there's an MDM policy and user is non-compliant)
// If mdmCompliant is undefined or true, allow tab switching
if (mdmCompliant === false && newTab !== "cloud") {
@@ -110,7 +114,7 @@ const App = () => {
setTab(newTab)
}
},
- [mdmCompliant],
+ [cloudIsAuthenticated, mdmCompliant],
)
const [currentSection, setCurrentSection] = useState(undefined)
@@ -177,6 +181,12 @@ const App = () => {
}
}, [shouldShowAnnouncement, tab])
+ useEffect(() => {
+ if (tab === "cloud" && !cloudIsAuthenticated && mdmCompliant !== false) {
+ setTab("chat")
+ }
+ }, [cloudIsAuthenticated, mdmCompliant, tab])
+
useEffect(() => {
if (didHydrateState) {
telemetryClient.updateTelemetryState(telemetrySetting, telemetryKey, machineId)
@@ -237,7 +247,7 @@ const App = () => {
targetTab={currentMarketplaceTab as "mcp" | "mode" | undefined}
/>
)}
- {tab === "cloud" && (
+ {tab === "cloud" && (cloudIsAuthenticated || mdmCompliant === false) && (
{
expect(chatView.getAttribute("data-hidden")).toBe("false")
expect(screen.queryByTestId("marketplace-view")).not.toBeInTheDocument()
})
+
+ it("ignores cloud navigation when unauthenticated", async () => {
+ render()
+
+ act(() => {
+ triggerMessage("cloudButtonClicked")
+ })
+
+ expect(screen.queryByTestId("cloud-view")).not.toBeInTheDocument()
+ expect(screen.getByTestId("chat-view").getAttribute("data-hidden")).toBe("false")
+ })
+
+ it("switches to cloud view when authenticated", async () => {
+ mockUseExtensionState.mockReturnValue({
+ didHydrateState: true,
+ showWelcome: false,
+ shouldShowAnnouncement: false,
+ experiments: {},
+ language: "en",
+ telemetrySetting: "enabled",
+ cloudIsAuthenticated: true,
+ })
+
+ render()
+
+ act(() => {
+ triggerMessage("cloudButtonClicked")
+ })
+
+ expect(await screen.findByTestId("cloud-view")).toBeInTheDocument()
+ expect(screen.getByTestId("chat-view").getAttribute("data-hidden")).toBe("true")
+ })
})
diff --git a/webview-ui/src/components/chat/ChatRow.tsx b/webview-ui/src/components/chat/ChatRow.tsx
index 33c9acb2df..1544b1d451 100644
--- a/webview-ui/src/components/chat/ChatRow.tsx
+++ b/webview-ui/src/components/chat/ChatRow.tsx
@@ -1117,8 +1117,7 @@ export const ChatRowContent = ({
} else {
// Non-HTTP-status-code error message - store full text as errorDetails
body = t("chat:apiRequest.errorMessage.unknown")
- docsURL =
- "mailto:support@roocode.com?subject=Unknown API Error&body=[Please include full error details]"
+ docsURL = "https://github.com/RooCodeInc/Roo-Code/issues/new/choose"
}
}
diff --git a/webview-ui/src/components/chat/TaskHeader.tsx b/webview-ui/src/components/chat/TaskHeader.tsx
index 52833ed335..8479f90906 100644
--- a/webview-ui/src/components/chat/TaskHeader.tsx
+++ b/webview-ui/src/components/chat/TaskHeader.tsx
@@ -1,15 +1,11 @@
-import { memo, useEffect, useRef, useState, useMemo } from "react"
+import { memo, useRef, useState, useMemo } from "react"
import { useTranslation } from "react-i18next"
-import { useCloudUpsell } from "@src/hooks/useCloudUpsell"
-import { CloudUpsellDialog } from "@src/components/cloud/CloudUpsellDialog"
-import DismissibleUpsell from "@src/components/common/DismissibleUpsell"
import { ChevronUp, ChevronDown, HardDriveDownload, HardDriveUpload, FoldVertical, ArrowLeft } from "lucide-react"
import prettyBytes from "pretty-bytes"
import type { ClineMessage } from "@roo-code/types"
import { getModelMaxOutputTokens } from "@roo/api"
-import { findLastIndex } from "@roo/array"
import { formatLargeNumber } from "@src/utils/format"
import { cn } from "@src/lib/utils"
@@ -60,37 +56,9 @@ const TaskHeader = ({
todos,
}: TaskHeaderProps) => {
const { t } = useTranslation()
- const { apiConfiguration, currentTaskItem, clineMessages } = useExtensionState()
+ const { apiConfiguration, currentTaskItem } = useExtensionState()
const { id: modelId, info: model } = useSelectedModel(apiConfiguration)
const [isTaskExpanded, setIsTaskExpanded] = useState(false)
- const [showLongRunningTaskMessage, setShowLongRunningTaskMessage] = useState(false)
- const { isOpen, openUpsell, closeUpsell, handleConnect } = useCloudUpsell({
- autoOpenOnAuth: false,
- })
-
- // Check if the task is complete by looking at the last relevant message (skipping resume messages)
- const isTaskComplete =
- clineMessages && clineMessages.length > 0
- ? (() => {
- const lastRelevantIndex = findLastIndex(
- clineMessages,
- (m) => !(m.ask === "resume_task" || m.ask === "resume_completed_task"),
- )
- return lastRelevantIndex !== -1
- ? clineMessages[lastRelevantIndex]?.ask === "completion_result"
- : false
- })()
- : false
-
- useEffect(() => {
- const timer = setTimeout(() => {
- if (currentTaskItem && !isTaskComplete) {
- setShowLongRunningTaskMessage(true)
- }
- }, 120_000) // Show upsell after 2 minutes
-
- return () => clearTimeout(timer)
- }, [currentTaskItem, isTaskComplete])
const textContainerRef = useRef(null)
const textRef = useRef(null)
@@ -144,15 +112,6 @@ const TaskHeader = ({
)}
- {showLongRunningTaskMessage && !isTaskComplete && (
- openUpsell()}
- dismissOnClick={false}
- variant="banner">
- {t("cloud:upsell.longRunningTask")}
-
- )}
}
-
)
}
diff --git a/webview-ui/src/components/chat/__tests__/TaskHeader.spec.tsx b/webview-ui/src/components/chat/__tests__/TaskHeader.spec.tsx
index c4ebe06973..fca87fc64c 100644
--- a/webview-ui/src/components/chat/__tests__/TaskHeader.spec.tsx
+++ b/webview-ui/src/components/chat/__tests__/TaskHeader.spec.tsx
@@ -36,7 +36,7 @@ vi.mock("@vscode/webview-ui-toolkit/react", () => ({
}))
// Create a variable to hold the mock state
-let mockExtensionState: {
+const mockExtensionState: {
apiConfiguration: ProviderSettings
currentTaskItem: { id: string } | null
clineMessages: any[]
@@ -55,42 +55,6 @@ vi.mock("@src/context/ExtensionStateContext", () => ({
useExtensionState: () => mockExtensionState,
}))
-// Mock the useCloudUpsell hook
-vi.mock("@src/hooks/useCloudUpsell", () => ({
- useCloudUpsell: () => ({
- isOpen: false,
- openUpsell: vi.fn(),
- closeUpsell: vi.fn(),
- handleConnect: vi.fn(),
- }),
-}))
-
-// Mock DismissibleUpsell component
-vi.mock("@src/components/common/DismissibleUpsell", () => ({
- default: ({ children, ...props }: any) => (
-
- {children}
-
- ),
-}))
-
-// Mock CloudUpsellDialog component
-vi.mock("@src/components/cloud/CloudUpsellDialog", () => ({
- CloudUpsellDialog: () => null,
-}))
-
-// Mock findLastIndex from @roo/array
-vi.mock("@roo/array", () => ({
- findLastIndex: (array: any[], predicate: (item: any) => boolean) => {
- for (let i = array.length - 1; i >= 0; i--) {
- if (predicate(array[i])) {
- return i
- }
- }
- return -1
- },
-}))
-
// Create a variable to hold the mock model info for useSelectedModel
let mockModelInfo: { contextWindow: number; maxTokens: number } | undefined = undefined
@@ -203,184 +167,6 @@ describe("TaskHeader", () => {
expect(handleCondenseContext).not.toHaveBeenCalled()
})
- describe("DismissibleUpsell behavior", () => {
- beforeEach(() => {
- vi.useFakeTimers()
- // Reset the mock state before each test
- mockExtensionState = {
- apiConfiguration: {
- apiProvider: "anthropic",
- apiKey: "test-api-key",
- apiModelId: "claude-3-opus-20240229",
- } as ProviderSettings,
- currentTaskItem: { id: "test-task-id" },
- clineMessages: [],
- }
- })
-
- afterEach(() => {
- vi.useRealTimers()
- })
-
- it("should show DismissibleUpsell after 2 minutes when task is not complete", async () => {
- renderTaskHeader()
-
- // Initially, the upsell should not be visible
- expect(screen.queryByTestId("dismissible-upsell")).not.toBeInTheDocument()
-
- // Fast-forward time by 2 minutes to match component timeout
- await vi.advanceTimersByTimeAsync(120_000)
-
- // The upsell should now be visible
- expect(screen.getByTestId("dismissible-upsell")).toBeInTheDocument()
- expect(screen.getByText("cloud:upsell.longRunningTask")).toBeInTheDocument()
- })
-
- it("should not show DismissibleUpsell when task is complete", async () => {
- // Set up mock state with a completion_result message
- mockExtensionState = {
- ...mockExtensionState,
- clineMessages: [
- {
- type: "ask",
- ask: "completion_result",
- ts: Date.now(),
- text: "Task completed!",
- },
- ],
- }
-
- renderTaskHeader()
-
- // Fast-forward time by more than 2 minutes
- await vi.advanceTimersByTimeAsync(130_000)
-
- // The upsell should not appear
- expect(screen.queryByTestId("dismissible-upsell")).not.toBeInTheDocument()
- })
-
- it("should not show DismissibleUpsell when currentTaskItem is null", async () => {
- // Update the mock state to have null currentTaskItem
- mockExtensionState = {
- ...mockExtensionState,
- currentTaskItem: null,
- }
-
- renderTaskHeader()
-
- // Fast-forward time by more than 2 minutes
- await vi.advanceTimersByTimeAsync(130_000)
-
- // The upsell should not appear
- expect(screen.queryByTestId("dismissible-upsell")).not.toBeInTheDocument()
- })
-
- it("should not show DismissibleUpsell when task has completion_result in clineMessages", async () => {
- // Set up mock state with a completion_result message from the start
- mockExtensionState = {
- ...mockExtensionState,
- clineMessages: [
- {
- type: "say",
- say: "text",
- ts: Date.now() - 1000,
- text: "Working on task...",
- },
- {
- type: "ask",
- ask: "completion_result",
- ts: Date.now(),
- text: "Task completed!",
- },
- ],
- }
-
- renderTaskHeader()
-
- // Fast-forward time by more than 2 minutes
- await vi.advanceTimersByTimeAsync(130_000)
-
- // The upsell should not appear because the task is complete
- expect(screen.queryByTestId("dismissible-upsell")).not.toBeInTheDocument()
- })
-
- it("should not show DismissibleUpsell when task has completion_result followed by resume messages", async () => {
- // Set up mock state with a completion_result message followed by resume messages
- mockExtensionState = {
- ...mockExtensionState,
- clineMessages: [
- {
- type: "say",
- say: "text",
- ts: Date.now() - 3000,
- text: "Working on task...",
- },
- {
- type: "ask",
- ask: "completion_result",
- ts: Date.now() - 2000,
- text: "Task completed!",
- },
- {
- type: "ask",
- ask: "resume_completed_task",
- ts: Date.now() - 1000,
- text: "Resume completed task?",
- },
- {
- type: "ask",
- ask: "resume_task",
- ts: Date.now(),
- text: "Resume task?",
- },
- ],
- }
-
- renderTaskHeader()
-
- // Fast-forward time by more than 2 minutes
- await vi.advanceTimersByTimeAsync(130_000)
-
- // The upsell should not appear because the last relevant message (skipping resume messages) is completion_result
- expect(screen.queryByTestId("dismissible-upsell")).not.toBeInTheDocument()
- })
-
- it("should show DismissibleUpsell when task has non-completion message followed by resume messages", async () => {
- // Set up mock state with a non-completion message followed by resume messages
- mockExtensionState = {
- ...mockExtensionState,
- clineMessages: [
- {
- type: "say",
- say: "text",
- ts: Date.now() - 3000,
- text: "Working on task...",
- },
- {
- type: "ask",
- ask: "tool",
- ts: Date.now() - 2000,
- text: "Need permission to use tool",
- },
- {
- type: "ask",
- ask: "resume_task",
- ts: Date.now() - 1000,
- text: "Resume task?",
- },
- ],
- }
-
- renderTaskHeader()
-
- // Fast-forward time by 2 minutes to trigger the upsell
- await vi.advanceTimersByTimeAsync(120_000)
-
- // The upsell should appear because the last relevant message (skipping resume messages) is not completion_result
- expect(screen.getByTestId("dismissible-upsell")).toBeInTheDocument()
- })
- })
-
describe("Back to parent task button", () => {
beforeEach(() => {
mockPostMessage.mockClear()
diff --git a/webview-ui/src/components/settings/providers/Roo.tsx b/webview-ui/src/components/settings/providers/Roo.tsx
index b272d8b2f2..5264ace040 100644
--- a/webview-ui/src/components/settings/providers/Roo.tsx
+++ b/webview-ui/src/components/settings/providers/Roo.tsx
@@ -6,8 +6,6 @@ import {
} from "@roo-code/types"
import { useAppTranslation } from "@src/i18n/TranslationContext"
-import { vscode } from "@src/utils/vscode"
-import { Button } from "@src/components/ui"
import { ModelPicker } from "../ModelPicker"
@@ -34,21 +32,12 @@ export const Roo = ({
return (
<>
- {cloudIsAuthenticated ? (
+ {cloudIsAuthenticated && (
)}
Més informació.",
- "longRunningTask": "Això pot trigar una estona. Continua des de qualsevol lloc amb Cloud."
- }
+ "switchAccount": "Canviar Compte de Roo Code Cloud"
}
diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json
index 9d4be59b28..6301e85da5 100644
--- a/webview-ui/src/i18n/locales/ca/settings.json
+++ b/webview-ui/src/i18n/locales/ca/settings.json
@@ -469,8 +469,7 @@
"warning": "Nota: Roo Code utilitza prompts complexos i funciona millor amb models Claude. Els models menys capaços poden no funcionar com s'espera."
},
"roo": {
- "authenticatedMessage": "Autenticat de forma segura a través del teu compte de Roo Code Cloud.",
- "connectButton": "Connecta amb Roo Code Cloud"
+ "authenticatedMessage": "Autenticat de forma segura a través del teu compte de Roo Code Cloud."
},
"openRouter": {
"providerRouting": {
diff --git a/webview-ui/src/i18n/locales/de/cloud.json b/webview-ui/src/i18n/locales/de/cloud.json
index dbb6218868..ec777e6121 100644
--- a/webview-ui/src/i18n/locales/de/cloud.json
+++ b/webview-ui/src/i18n/locales/de/cloud.json
@@ -24,9 +24,5 @@
"personalAccount": "Persönliches Konto",
"switchAccount": "Roo Code Cloud Konto wechseln",
"createTeamAccount": "Team-Konto erstellen",
- "cloudUrlPillLabel": "Roo Code Cloud URL",
- "upsell": {
- "autoApprovePowerUser": "Roo etwas Unabhängigkeit geben? Kontrolliere es von überall mit Roo Code Cloud. Mehr erfahren.",
- "longRunningTask": "Das könnte eine Weile dauern. Mit Cloud von überall weitermachen."
- }
+ "cloudUrlPillLabel": "Roo Code Cloud URL"
}
diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json
index 6cb1ebc377..8c2d18d723 100644
--- a/webview-ui/src/i18n/locales/de/settings.json
+++ b/webview-ui/src/i18n/locales/de/settings.json
@@ -469,8 +469,7 @@
"warning": "Hinweis: Roo Code verwendet komplexe Prompts und funktioniert am besten mit Claude-Modellen. Weniger leistungsfähige Modelle funktionieren möglicherweise nicht wie erwartet."
},
"roo": {
- "authenticatedMessage": "Sicher authentifiziert über dein Roo Code Cloud-Konto.",
- "connectButton": "Mit Roo Code Cloud verbinden"
+ "authenticatedMessage": "Sicher authentifiziert über dein Roo Code Cloud-Konto."
},
"openRouter": {
"providerRouting": {
diff --git a/webview-ui/src/i18n/locales/en/cloud.json b/webview-ui/src/i18n/locales/en/cloud.json
index 6fa3170479..314a0fe82c 100644
--- a/webview-ui/src/i18n/locales/en/cloud.json
+++ b/webview-ui/src/i18n/locales/en/cloud.json
@@ -24,9 +24,5 @@
"startOver": "Start over",
"personalAccount": "Personal Account",
"switchAccount": "Switch Roo Code Cloud Account",
- "createTeamAccount": "Create Team Account",
- "upsell": {
- "autoApprovePowerUser": "Giving Roo some independence? Control it from anywhere with Roo Code Cloud. Learn more.",
- "longRunningTask": "This might take a while. Continue from anywhere with Cloud."
- }
+ "createTeamAccount": "Create Team Account"
}
diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json
index 8ec42367f1..2234a81e9e 100644
--- a/webview-ui/src/i18n/locales/en/settings.json
+++ b/webview-ui/src/i18n/locales/en/settings.json
@@ -532,8 +532,7 @@
"warning": "Note: Roo Code uses complex prompts and works best with Claude models. Less capable models may not work as expected."
},
"roo": {
- "authenticatedMessage": "Securely authenticated through your Roo Code Cloud account.",
- "connectButton": "Connect to Roo Code Cloud"
+ "authenticatedMessage": "Securely authenticated through your Roo Code Cloud account."
},
"openRouter": {
"providerRouting": {
diff --git a/webview-ui/src/i18n/locales/es/cloud.json b/webview-ui/src/i18n/locales/es/cloud.json
index 4b944c76d6..c94881ebb0 100644
--- a/webview-ui/src/i18n/locales/es/cloud.json
+++ b/webview-ui/src/i18n/locales/es/cloud.json
@@ -24,9 +24,5 @@
"personalAccount": "Cuenta Personal",
"switchAccount": "Cambiar Cuenta de Roo Code Cloud",
"createTeamAccount": "Crear Cuenta de Equipo",
- "cloudUrlPillLabel": "URL de Roo Code Cloud",
- "upsell": {
- "autoApprovePowerUser": "¿Dándole a Roo un poco de independencia? Contrólalo desde cualquier lugar con Roo Code Cloud. Saber más.",
- "longRunningTask": "Esto podría tardar un poco. Continúa desde cualquier lugar con la Nube."
- }
+ "cloudUrlPillLabel": "URL de Roo Code Cloud"
}
diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json
index a26b789de4..28180624ec 100644
--- a/webview-ui/src/i18n/locales/es/settings.json
+++ b/webview-ui/src/i18n/locales/es/settings.json
@@ -469,8 +469,7 @@
"warning": "Nota: Roo Code utiliza prompts complejos y funciona mejor con modelos Claude. Los modelos menos capaces pueden no funcionar como se espera."
},
"roo": {
- "authenticatedMessage": "Autenticado de forma segura a través de tu cuenta de Roo Code Cloud.",
- "connectButton": "Conectar a Roo Code Cloud"
+ "authenticatedMessage": "Autenticado de forma segura a través de tu cuenta de Roo Code Cloud."
},
"openRouter": {
"providerRouting": {
diff --git a/webview-ui/src/i18n/locales/fr/cloud.json b/webview-ui/src/i18n/locales/fr/cloud.json
index 1ca71e20ee..92646e08e4 100644
--- a/webview-ui/src/i18n/locales/fr/cloud.json
+++ b/webview-ui/src/i18n/locales/fr/cloud.json
@@ -24,9 +24,5 @@
"personalAccount": "Compte Personnel",
"switchAccount": "Changer de Compte Roo Code Cloud",
"createTeamAccount": "Créer un Compte d'Équipe",
- "cloudUrlPillLabel": "URL de Roo Code Cloud",
- "upsell": {
- "autoApprovePowerUser": "Donner à Roo un peu d'indépendance ? Contrôlez-le de n'importe où avec Roo Code Cloud. En savoir plus.",
- "longRunningTask": "Cela peut prendre un certain temps. Continuez de n'importe où avec le Cloud."
- }
+ "cloudUrlPillLabel": "URL de Roo Code Cloud"
}
diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json
index b8e4da391f..20e85f547a 100644
--- a/webview-ui/src/i18n/locales/fr/settings.json
+++ b/webview-ui/src/i18n/locales/fr/settings.json
@@ -469,8 +469,7 @@
"warning": "Remarque : Roo Code utilise des prompts complexes et fonctionne mieux avec les modèles Claude. Les modèles moins performants peuvent ne pas fonctionner comme prévu."
},
"roo": {
- "authenticatedMessage": "Authentifié de manière sécurisée via ton compte Roo Code Cloud.",
- "connectButton": "Se connecter à Roo Code Cloud"
+ "authenticatedMessage": "Authentifié de manière sécurisée via ton compte Roo Code Cloud."
},
"openRouter": {
"providerRouting": {
diff --git a/webview-ui/src/i18n/locales/hi/cloud.json b/webview-ui/src/i18n/locales/hi/cloud.json
index 4bef19d34a..c4193dff37 100644
--- a/webview-ui/src/i18n/locales/hi/cloud.json
+++ b/webview-ui/src/i18n/locales/hi/cloud.json
@@ -24,9 +24,5 @@
"personalAccount": "व्यक्तिगत खाता",
"switchAccount": "Roo Code Cloud खाता बदलें",
"createTeamAccount": "टीम खाता बनाएं",
- "cloudUrlPillLabel": "Roo Code Cloud URL",
- "upsell": {
- "autoApprovePowerUser": "रू को थोड़ी स्वतंत्रता दे रहे हैं? रू कोड क्लाउड के साथ इसे कहीं से भी नियंत्रित करें। और जानें।",
- "longRunningTask": "इसमें थोड़ा समय लग सकता है। क्लाउड के साथ कहीं से भी जारी रखें।"
- }
+ "cloudUrlPillLabel": "Roo Code Cloud URL"
}
diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json
index 6c602e6441..1bd32fda62 100644
--- a/webview-ui/src/i18n/locales/hi/settings.json
+++ b/webview-ui/src/i18n/locales/hi/settings.json
@@ -469,8 +469,7 @@
"warning": "नोट: Roo Code जटिल प्रॉम्प्ट्स का उपयोग करता है और Claude मॉडल के साथ सबसे अच्छा काम करता है। कम क्षमता वाले मॉडल अपेक्षित रूप से काम नहीं कर सकते हैं।"
},
"roo": {
- "authenticatedMessage": "आपके Roo Code Cloud खाते के माध्यम से सुरक्षित रूप से प्रमाणित।",
- "connectButton": "Roo Code Cloud से कनेक्ट करें"
+ "authenticatedMessage": "आपके Roo Code Cloud खाते के माध्यम से सुरक्षित रूप से प्रमाणित।"
},
"openRouter": {
"providerRouting": {
diff --git a/webview-ui/src/i18n/locales/id/cloud.json b/webview-ui/src/i18n/locales/id/cloud.json
index 6c7dd53b68..9338b3ff73 100644
--- a/webview-ui/src/i18n/locales/id/cloud.json
+++ b/webview-ui/src/i18n/locales/id/cloud.json
@@ -24,9 +24,5 @@
"personalAccount": "Akun Pribadi",
"switchAccount": "Ganti Akun Roo Code Cloud",
"createTeamAccount": "Buat Akun Tim",
- "cloudUrlPillLabel": "URL Roo Code Cloud",
- "upsell": {
- "autoApprovePowerUser": "Memberi Roo sedikit kebebasan? Kendalikan dari mana saja dengan Roo Code Cloud. Pelajari lebih lanjut.",
- "longRunningTask": "Ini mungkin akan memakan waktu cukup lama. Lanjutkan dari mana saja dengan Cloud."
- }
+ "cloudUrlPillLabel": "URL Roo Code Cloud"
}
diff --git a/webview-ui/src/i18n/locales/id/settings.json b/webview-ui/src/i18n/locales/id/settings.json
index bc12a0da48..0743f4d5cb 100644
--- a/webview-ui/src/i18n/locales/id/settings.json
+++ b/webview-ui/src/i18n/locales/id/settings.json
@@ -469,8 +469,7 @@
"warning": "Catatan: Roo Code menggunakan prompt kompleks dan bekerja terbaik dengan model Claude. Model yang kurang mampu mungkin tidak bekerja seperti yang diharapkan."
},
"roo": {
- "authenticatedMessage": "Terautentikasi dengan aman melalui akun Roo Code Cloud Anda.",
- "connectButton": "Hubungkan ke Roo Code Cloud"
+ "authenticatedMessage": "Terautentikasi dengan aman melalui akun Roo Code Cloud Anda."
},
"openRouter": {
"providerRouting": {
diff --git a/webview-ui/src/i18n/locales/it/cloud.json b/webview-ui/src/i18n/locales/it/cloud.json
index 7b5a03d1fa..1442f4901c 100644
--- a/webview-ui/src/i18n/locales/it/cloud.json
+++ b/webview-ui/src/i18n/locales/it/cloud.json
@@ -24,9 +24,5 @@
"personalAccount": "Account Personale",
"switchAccount": "Cambia Account Roo Code Cloud",
"createTeamAccount": "Crea Account del Team",
- "cloudUrlPillLabel": "URL di Roo Code Cloud",
- "upsell": {
- "autoApprovePowerUser": "Vuoi dare un po' di indipendenza a Roo? Controllalo da qualsiasi luogo con Roo Code Cloud. Scopri di più.",
- "longRunningTask": "Potrebbe volerci un po' di tempo. Continua da qualsiasi luogo con il Cloud."
- }
+ "cloudUrlPillLabel": "URL di Roo Code Cloud"
}
diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json
index 877032cda9..44b396cf35 100644
--- a/webview-ui/src/i18n/locales/it/settings.json
+++ b/webview-ui/src/i18n/locales/it/settings.json
@@ -469,8 +469,7 @@
"warning": "Nota: Roo Code utiliza prompt complessi e funziona meglio con i modelli Claude. I modelli con capacità inferiori potrebbero non funzionare come previsto."
},
"roo": {
- "authenticatedMessage": "Autenticato in modo sicuro tramite il tuo account Roo Code Cloud.",
- "connectButton": "Connetti a Roo Code Cloud"
+ "authenticatedMessage": "Autenticato in modo sicuro tramite il tuo account Roo Code Cloud."
},
"openRouter": {
"providerRouting": {
diff --git a/webview-ui/src/i18n/locales/ja/cloud.json b/webview-ui/src/i18n/locales/ja/cloud.json
index 8b50fa16d8..c69ac81045 100644
--- a/webview-ui/src/i18n/locales/ja/cloud.json
+++ b/webview-ui/src/i18n/locales/ja/cloud.json
@@ -24,9 +24,5 @@
"personalAccount": "個人アカウント",
"switchAccount": "Roo Code Cloud アカウントを切り替え",
"createTeamAccount": "チームアカウントを作成",
- "cloudUrlPillLabel": "Roo Code Cloud URL",
- "upsell": {
- "autoApprovePowerUser": "Rooに少し独立性を与えませんか?Roo Code Cloudでどこからでもコントロールできます。詳細。",
- "longRunningTask": "これには時間がかかるかもしれません。Cloudを使えばどこからでも続けられます。"
- }
+ "cloudUrlPillLabel": "Roo Code Cloud URL"
}
diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json
index 7f31d34939..d5af7518ce 100644
--- a/webview-ui/src/i18n/locales/ja/settings.json
+++ b/webview-ui/src/i18n/locales/ja/settings.json
@@ -469,8 +469,7 @@
"warning": "注意:Roo Codeは複雑なプロンプトを使用し、Claudeモデルで最適に動作します。能力の低いモデルは期待通りに動作しない場合があります。"
},
"roo": {
- "authenticatedMessage": "Roo Code Cloudアカウントを通じて安全に認証されています。",
- "connectButton": "Roo Code Cloudに接続"
+ "authenticatedMessage": "Roo Code Cloudアカウントを通じて安全に認証されています。"
},
"openRouter": {
"providerRouting": {
diff --git a/webview-ui/src/i18n/locales/ko/cloud.json b/webview-ui/src/i18n/locales/ko/cloud.json
index bbecfd075d..1ad8c7f57f 100644
--- a/webview-ui/src/i18n/locales/ko/cloud.json
+++ b/webview-ui/src/i18n/locales/ko/cloud.json
@@ -24,9 +24,5 @@
"personalAccount": "개인 계정",
"switchAccount": "Roo Code Cloud 계정 전환",
"createTeamAccount": "팀 계정 만들기",
- "cloudUrlPillLabel": "Roo Code Cloud URL",
- "upsell": {
- "autoApprovePowerUser": "Roo에게 약간의 독립성을 부여하시겠습니까? Roo Code Cloud로 어디서든 제어하세요. 더 알아보기.",
- "longRunningTask": "시간이 좀 걸릴 수 있습니다. Cloud로 어디서든 계속하세요."
- }
+ "cloudUrlPillLabel": "Roo Code Cloud URL"
}
diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json
index 707719609c..aaeb7b60e2 100644
--- a/webview-ui/src/i18n/locales/ko/settings.json
+++ b/webview-ui/src/i18n/locales/ko/settings.json
@@ -469,8 +469,7 @@
"warning": "참고: Roo Code는 복잡한 프롬프트를 사용하며 Claude 모델에서 가장 잘 작동합니다. 덜 강력한 모델은 예상대로 작동하지 않을 수 있습니다."
},
"roo": {
- "authenticatedMessage": "Roo Code Cloud 계정을 통해 안전하게 인증되었습니다.",
- "connectButton": "Roo Code Cloud에 연결"
+ "authenticatedMessage": "Roo Code Cloud 계정을 통해 안전하게 인증되었습니다."
},
"openRouter": {
"providerRouting": {
diff --git a/webview-ui/src/i18n/locales/nl/cloud.json b/webview-ui/src/i18n/locales/nl/cloud.json
index 8500fae348..20a0ea631d 100644
--- a/webview-ui/src/i18n/locales/nl/cloud.json
+++ b/webview-ui/src/i18n/locales/nl/cloud.json
@@ -24,9 +24,5 @@
"personalAccount": "Persoonlijk Account",
"switchAccount": "Wissel van Roo Code Cloud Account",
"createTeamAccount": "Teamaccount aanmaken",
- "cloudUrlPillLabel": "Roo Code Cloud URL",
- "upsell": {
- "autoApprovePowerUser": "Roo wat onafhankelijkheid geven? Bedien het overal met Roo Code Cloud. Meer informatie.",
- "longRunningTask": "Dit kan even duren. Ga overal verder met de Cloud."
- }
+ "cloudUrlPillLabel": "Roo Code Cloud URL"
}
diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json
index e54277ade4..53507d50f9 100644
--- a/webview-ui/src/i18n/locales/nl/settings.json
+++ b/webview-ui/src/i18n/locales/nl/settings.json
@@ -469,8 +469,7 @@
"warning": "Let op: Roo Code gebruikt complexe prompts en werkt het beste met Claude-modellen. Minder krachtige modellen werken mogelijk niet zoals verwacht."
},
"roo": {
- "authenticatedMessage": "Veilig geauthenticeerd via je Roo Code Cloud-account.",
- "connectButton": "Verbinden met Roo Code Cloud"
+ "authenticatedMessage": "Veilig geauthenticeerd via je Roo Code Cloud-account."
},
"openRouter": {
"providerRouting": {
diff --git a/webview-ui/src/i18n/locales/pl/cloud.json b/webview-ui/src/i18n/locales/pl/cloud.json
index 1c96c6453a..fd55a88a60 100644
--- a/webview-ui/src/i18n/locales/pl/cloud.json
+++ b/webview-ui/src/i18n/locales/pl/cloud.json
@@ -24,9 +24,5 @@
"personalAccount": "Konto Osobiste",
"switchAccount": "Przełącz Konto Roo Code Cloud",
"createTeamAccount": "Utwórz Konto Zespołu",
- "cloudUrlPillLabel": "URL Roo Code Cloud",
- "upsell": {
- "autoApprovePowerUser": "Dać Roo trochę niezależności? Kontroluj go z dowolnego miejsca dzięki Roo Code Cloud. Dowiedz się więcej.",
- "longRunningTask": "To może chwilę potrwać. Kontynuuj z dowolnego miejsca dzięki Chmurze."
- }
+ "cloudUrlPillLabel": "URL Roo Code Cloud"
}
diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json
index 92d2604acb..e185407afb 100644
--- a/webview-ui/src/i18n/locales/pl/settings.json
+++ b/webview-ui/src/i18n/locales/pl/settings.json
@@ -469,8 +469,7 @@
"warning": "Uwaga: Roo Code używa złożonych podpowiedzi i działa najlepiej z modelami Claude. Modele o niższych możliwościach mogą nie działać zgodnie z oczekiwaniami."
},
"roo": {
- "authenticatedMessage": "Bezpiecznie uwierzytelniony przez twoje konto Roo Code Cloud.",
- "connectButton": "Połącz z Roo Code Cloud"
+ "authenticatedMessage": "Bezpiecznie uwierzytelniony przez twoje konto Roo Code Cloud."
},
"openRouter": {
"providerRouting": {
diff --git a/webview-ui/src/i18n/locales/pt-BR/cloud.json b/webview-ui/src/i18n/locales/pt-BR/cloud.json
index 66c2bceb16..14b7b37c8a 100644
--- a/webview-ui/src/i18n/locales/pt-BR/cloud.json
+++ b/webview-ui/src/i18n/locales/pt-BR/cloud.json
@@ -24,9 +24,5 @@
"personalAccount": "Conta Pessoal",
"switchAccount": "Alternar Conta do Roo Code Cloud",
"createTeamAccount": "Criar Conta de Equipe",
- "cloudUrlPillLabel": "URL do Roo Code Cloud ",
- "upsell": {
- "autoApprovePowerUser": "Dando um pouco de independência ao Roo? Controle-o de qualquer lugar com o Roo Code Cloud. Saiba mais.",
- "longRunningTask": "Isso pode levar um tempo. Continue de qualquer lugar com a Nuvem."
- }
+ "cloudUrlPillLabel": "URL do Roo Code Cloud "
}
diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json
index cba3599d3c..2524320e61 100644
--- a/webview-ui/src/i18n/locales/pt-BR/settings.json
+++ b/webview-ui/src/i18n/locales/pt-BR/settings.json
@@ -469,8 +469,7 @@
"warning": "Nota: O Roo Code usa prompts complexos e funciona melhor com modelos Claude. Modelos menos capazes podem não funcionar como esperado."
},
"roo": {
- "authenticatedMessage": "Autenticado com segurança através da sua conta Roo Code Cloud.",
- "connectButton": "Conectar ao Roo Code Cloud"
+ "authenticatedMessage": "Autenticado com segurança através da sua conta Roo Code Cloud."
},
"openRouter": {
"providerRouting": {
diff --git a/webview-ui/src/i18n/locales/ru/cloud.json b/webview-ui/src/i18n/locales/ru/cloud.json
index 68b99659fb..83eb7ed06a 100644
--- a/webview-ui/src/i18n/locales/ru/cloud.json
+++ b/webview-ui/src/i18n/locales/ru/cloud.json
@@ -24,9 +24,5 @@
"personalAccount": "Личный аккаунт",
"switchAccount": "Переключить аккаунт Roo Code Cloud",
"createTeamAccount": "Создать командный аккаунт",
- "cloudUrlPillLabel": "URL Roo Code Cloud",
- "upsell": {
- "autoApprovePowerUser": "Предоставить Roo немного независимости? Управляйте им из любого места с помощью Roo Code Cloud. Узнать больше.",
- "longRunningTask": "Это может занять некоторое время. Продолжайте из любого места с помощью Облака."
- }
+ "cloudUrlPillLabel": "URL Roo Code Cloud"
}
diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json
index 524b8a2528..f50612ed29 100644
--- a/webview-ui/src/i18n/locales/ru/settings.json
+++ b/webview-ui/src/i18n/locales/ru/settings.json
@@ -469,8 +469,7 @@
"warning": "Примечание: Roo Code использует сложные подсказки и лучше всего работает с моделями Claude. Менее мощные модели могут работать некорректно."
},
"roo": {
- "authenticatedMessage": "Безопасно аутентифицирован через твой аккаунт Roo Code Cloud.",
- "connectButton": "Подключиться к Roo Code Cloud"
+ "authenticatedMessage": "Безопасно аутентифицирован через твой аккаунт Roo Code Cloud."
},
"openRouter": {
"providerRouting": {
diff --git a/webview-ui/src/i18n/locales/tr/cloud.json b/webview-ui/src/i18n/locales/tr/cloud.json
index 75d0f2949d..f65b0320be 100644
--- a/webview-ui/src/i18n/locales/tr/cloud.json
+++ b/webview-ui/src/i18n/locales/tr/cloud.json
@@ -24,9 +24,5 @@
"personalAccount": "Kişisel Hesap",
"switchAccount": "Roo Code Cloud Hesabını Değiştir",
"createTeamAccount": "Takım Hesabı Oluştur",
- "cloudUrlPillLabel": "Roo Code Cloud URL'si",
- "upsell": {
- "autoApprovePowerUser": "Roo'ya biraz bağımsızlık mı veriyorsunuz? Roo Code Cloud ile onu her yerden kontrol edin. Daha fazla bilgi edinin.",
- "longRunningTask": "Bu biraz zaman alabilir. Bulut ile her yerden devam edin."
- }
+ "cloudUrlPillLabel": "Roo Code Cloud URL'si"
}
diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json
index 42ba46f85e..2efe23d8d7 100644
--- a/webview-ui/src/i18n/locales/tr/settings.json
+++ b/webview-ui/src/i18n/locales/tr/settings.json
@@ -469,8 +469,7 @@
"warning": "Not: Roo Code karmaşık istemler kullanır ve Claude modelleriyle en iyi şekilde çalışır. Daha az yetenekli modeller beklendiği gibi çalışmayabilir."
},
"roo": {
- "authenticatedMessage": "Roo Code Cloud hesabın üzerinden güvenli bir şekilde kimlik doğrulandı.",
- "connectButton": "Roo Code Cloud'a Bağlan"
+ "authenticatedMessage": "Roo Code Cloud hesabın üzerinden güvenli bir şekilde kimlik doğrulandı."
},
"openRouter": {
"providerRouting": {
diff --git a/webview-ui/src/i18n/locales/vi/cloud.json b/webview-ui/src/i18n/locales/vi/cloud.json
index 698dfb1ab0..dd9ceaa473 100644
--- a/webview-ui/src/i18n/locales/vi/cloud.json
+++ b/webview-ui/src/i18n/locales/vi/cloud.json
@@ -24,9 +24,5 @@
"personalAccount": "Tài Khoản Cá Nhân",
"switchAccount": "Chuyển Tài Khoản Roo Code Cloud",
"createTeamAccount": "Tạo Tài Khoản Nhóm",
- "cloudUrlPillLabel": "URL Roo Code Cloud",
- "upsell": {
- "autoApprovePowerUser": "Trao cho Roo một chút độc lập? Kiểm soát nó từ mọi nơi với Roo Code Cloud. Tìm hiểu thêm.",
- "longRunningTask": "Việc này có thể mất một lúc. Tiếp tục từ mọi nơi với Cloud."
- }
+ "cloudUrlPillLabel": "URL Roo Code Cloud"
}
diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json
index 11259a45e3..ea4be1b824 100644
--- a/webview-ui/src/i18n/locales/vi/settings.json
+++ b/webview-ui/src/i18n/locales/vi/settings.json
@@ -469,8 +469,7 @@
"warning": "Lưu ý: Roo Code sử dụng các lời nhắc phức tạp và hoạt động tốt nhất với các mô hình Claude. Các mô hình kém mạnh hơn có thể không hoạt động như mong đợi."
},
"roo": {
- "authenticatedMessage": "Đã xác thực an toàn thông qua tài khoản Roo Code Cloud của bạn.",
- "connectButton": "Kết nối với Roo Code Cloud"
+ "authenticatedMessage": "Đã xác thực an toàn thông qua tài khoản Roo Code Cloud của bạn."
},
"openRouter": {
"providerRouting": {
diff --git a/webview-ui/src/i18n/locales/zh-CN/cloud.json b/webview-ui/src/i18n/locales/zh-CN/cloud.json
index f875359c2a..39f2bbe05f 100644
--- a/webview-ui/src/i18n/locales/zh-CN/cloud.json
+++ b/webview-ui/src/i18n/locales/zh-CN/cloud.json
@@ -24,9 +24,5 @@
"personalAccount": "个人账户",
"switchAccount": "切换 Roo Code Cloud 账户",
"createTeamAccount": "创建团队账户",
- "cloudUrlPillLabel": "Roo Code Cloud URL",
- "upsell": {
- "autoApprovePowerUser": "给 Roo 一些独立性?使用 Roo Code Cloud 从任何地方控制它。 了解更多。",
- "longRunningTask": "这可能需要一段时间。使用 Cloud 从任何地方继续。"
- }
+ "cloudUrlPillLabel": "Roo Code Cloud URL"
}
diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json
index 80ca437ce7..11f0f3626a 100644
--- a/webview-ui/src/i18n/locales/zh-CN/settings.json
+++ b/webview-ui/src/i18n/locales/zh-CN/settings.json
@@ -469,8 +469,7 @@
"warning": "注意:Roo Code 使用复杂的提示,与 Claude 模型配合最佳。功能较弱的模型可能无法按预期工作。"
},
"roo": {
- "authenticatedMessage": "已通过 Roo Code Cloud 账户安全认证。",
- "connectButton": "连接到 Roo Code Cloud"
+ "authenticatedMessage": "已通过 Roo Code Cloud 账户安全认证。"
},
"openRouter": {
"providerRouting": {
diff --git a/webview-ui/src/i18n/locales/zh-TW/cloud.json b/webview-ui/src/i18n/locales/zh-TW/cloud.json
index aaab4800c0..dd08b84bef 100644
--- a/webview-ui/src/i18n/locales/zh-TW/cloud.json
+++ b/webview-ui/src/i18n/locales/zh-TW/cloud.json
@@ -24,9 +24,5 @@
"personalAccount": "個人帳戶",
"switchAccount": "切換 Roo Code Cloud 帳戶",
"createTeamAccount": "建立團隊帳戶",
- "cloudUrlPillLabel": "Roo Code Cloud URL",
- "upsell": {
- "autoApprovePowerUser": "給 Roo 一點獨立性?使用 Roo Code Cloud 隨時隨地掌控工作進度。了解更多。",
- "longRunningTask": "這可能需要一些時間。使用雲端隨時隨地繼續。"
- }
+ "cloudUrlPillLabel": "Roo Code Cloud URL"
}
diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json
index 37c14c8e1b..b997ba219b 100644
--- a/webview-ui/src/i18n/locales/zh-TW/settings.json
+++ b/webview-ui/src/i18n/locales/zh-TW/settings.json
@@ -479,8 +479,7 @@
"warning": "注意:Roo Code 使用複雜提示詞,與 Claude 模型搭配最佳。功能較弱的模型可能無法正常運作。"
},
"roo": {
- "authenticatedMessage": "已透過 Roo Code Cloud 帳戶安全認證。",
- "connectButton": "連線到 Roo Code Cloud"
+ "authenticatedMessage": "已透過 Roo Code Cloud 帳戶安全認證。"
},
"openRouter": {
"providerRouting": {