Skip to content

fix(branding): replace remaining user-facing "Roo" strings with "Zoo"#343

Open
proyectoauraorg wants to merge 1 commit into
Zoo-Code-Org:mainfrom
proyectoauraorg:fix/branding-roo-to-zoo-user-strings
Open

fix(branding): replace remaining user-facing "Roo" strings with "Zoo"#343
proyectoauraorg wants to merge 1 commit into
Zoo-Code-Org:mainfrom
proyectoauraorg:fix/branding-roo-to-zoo-user-strings

Conversation

@proyectoauraorg
Copy link
Copy Markdown
Contributor

@proyectoauraorg proyectoauraorg commented May 27, 2026

What & why

Several user-visible strings still showed the upstream "Roo" brand instead of "Zoo". The most visible one was the missing-tool-parameter retry notice in chat:

Roo tried to use read_file without value for required parameter 'path'. Retrying...

That message was hardcoded in Task.ts (unlike its siblings unknownToolError / invalidJsonArgument, which are already localized to "Zoo"). The editor tab and several other surfaces had the same leftover.

Changes

  • Task.ts — the missing-parameter notice is now localized via new keys tools:missingToolParameter / tools:missingToolParameterWithPath, added and translated across all 18 locales (mirroring the existing unknownToolError pattern).
  • Titles — the editor tab title (createWebviewPanel), the webview <title>, the diff editor label (DIFF_VIEW_LABEL_CHANGES), and the integrated terminal name.
  • Commands/output — the "Cannot find any visible … instances" output-channel line.
  • Notifications — the credit-balance message and the LM Studio context-length error.
  • Router/cloud — the removal/sign-in messages in common.json (18 locales) and the fallback constants in routerRemoval.ts.

Tests updated to assert the new strings.

Intentionally not changed

To avoid breaking internals or rewriting history, these "Roo" occurrences are left as-is:

  • the legacy provider id roo and .roo* config file references;
  • i18n key paths (e.g. errors.roo.*);
  • OpenRouter X-Title attribution headers and MCP/checkpoint client names (sent to external services, not shown in the VS Code UI);
  • the deliberate fork-history announcement that references the original "Roo Code" project;
  • console/debug logs.

Note: the router/cloud group names a feature inherited-and-removed from upstream; if maintainers prefer to keep "Roo Code Router/Cloud" wording there, that group can be dropped without affecting the rest.

Verification

  • node scripts/find-missing-translations.js → ✅ all locales complete
  • tsc --noEmit on the changed files → clean
  • eslint → clean
  • vitest on the affected specs → 131 passing

Summary by CodeRabbit

  • New Features

    • Added localized error messages across 18+ languages for missing tool parameters, providing context-specific guidance when required parameters are omitted during tool execution.
  • Updates

    • Rebranded product terminology throughout the application, including error messages, labels, webview titles, and terminal names.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 27, 2026

Review Change Stack

📝 Walkthrough

Walkthrough

This PR updates user-facing branding by replacing "Roo" with "Zoo" across UI strings, webview titles, editor labels, terminal names, and provider messages. The changeset adds two new i18n translation keys for missing tool parameter retry messages across 17 language locales, refactoring Task.sayAndCreateMissingParamError to use i18n instead of hardcoded English text. All tests are updated to match the new branding and verify the i18n integration.

Changes

Branding rename: Roo to Zoo user-facing

Layer / File(s) Summary
I18n contract and Task i18n migration
src/i18n/locales/en/tools.json, src/core/task/Task.ts, src/core/task/__tests__/Task.spec.ts
English i18n keys missingToolParameter and missingToolParameterWithPath are added. Task.sayAndCreateMissingParamError is refactored to use t() lookups instead of hardcoded templates. Test suite mocks i18n for the missing-parameter keys and verifies the method emits two error messages with correct parameter names.
Locale translations (17 languages)
src/i18n/locales/{ca,de,es,fr,hi,id,it,ja,ko,nl,pl,pt-BR,ru,tr,vi,zh-CN,zh-TW}/tools.json
Two new translation keys for missing tool parameter messages are added to each locale file, enabling localized retry messages when required parameters are omitted.
Application UI branding updates
src/core/webview/ClineProvider.ts, src/integrations/editor/DiffViewProvider.ts, src/integrations/terminal/Terminal.ts, src/api/providers/lm-studio.ts, src/api/providers/vscode-lm.ts, src/activate/registerCommands.ts
Webview HTML titles, diff editor label, default terminal name, LM provider error messages, and VS Code LM justification text are updated from "Roo Code" to "Zoo Code".
Test updates for branding and i18n
src/activate/__tests__/registerCommands.spec.ts, src/integrations/terminal/__tests__/TerminalRegistry.spec.ts
Test expectations and mocked objects are updated to expect "Zoo Code" instead of "Roo Code" across activation, terminal registry, and related test cases.
Changeset documentation
.changeset/branding-roo-to-zoo-user-strings.md
Changeset file documents the specific UI/messaging replacements and explicitly notes that external Roo provider/router identifiers and cloud-related messages are left unchanged.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested reviewers

  • hannesrudolph
  • taltas
  • edelauna
  • JamesRobert20

Poem

🐰 A rabbit hops through code so bright,
Roo be gone—Zoo shines in sight!
From titles tall to terminals new,
Branding updates—fresh and true!
With translations across the lands,
A worldwide rebrand takes its stand. 🌍✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The PR title clearly and concisely summarizes the main change: replacing user-facing 'Roo' brand strings with 'Zoo' across the codebase.
Description check ✅ Passed The PR description covers the key changes, implementation approach (localization pattern matching existing unknownToolError), verification steps, and intentional omissions; it provides sufficient detail for reviewers.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

src/activate/__tests__/registerCommands.spec.ts

ESLint skipped: missing config or dependency (missing-dependency). The ESLint configuration references a package that is not available in the sandbox.

src/activate/registerCommands.ts

ESLint skipped: the ESLint configuration for this file references a package that is not available in the sandbox.

src/api/providers/lm-studio.ts

ESLint skipped: the ESLint configuration for this file references a package that is not available in the sandbox.

  • 7 others

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov
Copy link
Copy Markdown

codecov Bot commented May 27, 2026

Codecov Report

❌ Patch coverage is 94.44444% with 1 line in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/activate/registerCommands.ts 50.00% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

proyectoauraorg added a commit to proyectoauraorg/Zoo-Code that referenced this pull request May 27, 2026
Exercises both relPath branches of the now-localized missing-tool-parameter
error so the changed lines in Task.ts are covered (addresses the codecov
patch-coverage gap on Zoo-Code-Org#343).
@rrewll
Copy link
Copy Markdown
Contributor

rrewll commented May 27, 2026

What do you think about it?

// Create the response stream with required options
const requestOptions: vscode.LanguageModelChatRequestOptions = {
justification: `Roo Code would like to use '${client.name}' from '${client.vendor}', Click 'Allow' to proceed.`,
tools: convertToVsCodeLmTools(metadata?.tools ?? []),
}

Screenshot — 2026-05-28 в 01 17 59

Copy link
Copy Markdown
Contributor

@edelauna edelauna left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice thanks for tackling there some feedback regarding legit Roo instances that should stay.

Comment thread src/core/task/__tests__/Task.spec.ts Outdated
Comment on lines +417 to +418
expect(saySpy).toHaveBeenNthCalledWith(1, "error", expect.any(String))
expect(saySpy).toHaveBeenNthCalledWith(2, "error", expect.any(String))
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could these also check that the resolved string actually contains the tool name or param name? If t() returns the key (or falls back to an empty string) in the test env, expect.any(String) still passes — so a silent i18n regression would go undetected here.

Comment thread src/core/config/routerRemoval.ts Outdated
const ROUTER_REMOVAL_I18N_KEY = "common:errors.roo.routerRemoved"
const ROUTER_REMOVAL_DEFAULT_MESSAGE =
"Roo Code Router has been removed. Please select and configure a different provider."
"Zoo Code Router has been removed. Please select and configure a different provider."
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should stay as Roo - this whole file is referencing the old Roo router, but this should probably be i18n keyed, not sure why we'd need a default message.

Comment thread src/core/task/Task.ts
Comment on lines +1726 to +1732
relPath
? t("tools:missingToolParameterWithPath", {
toolName,
relPath: relPath.toPosix(),
paramName,
})
: t("tools:missingToolParameter", { toolName, paramName }),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice - what does this render as?

type: "rooCreditBalance",
requestId,
values: { error: "Roo credit balance is no longer available." },
values: { error: "Zoo credit balance is no longer available." },
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

leave this as Roo - wonder if this should be i18n keyed though

Comment thread src/i18n/locales/en/common.json Outdated
"authenticationRequired": "Roo provider requires cloud authentication. Please sign in to Roo Code Cloud.",
"routerRemoved": "Roo Code Router has been removed. Please select and configure a different provider."
"authenticationRequired": "Zoo provider requires cloud authentication. Please sign in to Zoo Code Cloud.",
"routerRemoved": "Zoo Code Router has been removed. Please select and configure a different provider."
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

router Removed should stay roo

Comment thread src/i18n/locales/en/common.json Outdated
"mode_imported": "Mode imported successfully",
"roo": {
"signInUnavailable": "Roo Code Cloud sign-in is currently unavailable. Configure another provider to continue."
"signInUnavailable": "Zoo Code Cloud sign-in is currently unavailable. Configure another provider to continue."
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same with this - this is an error message when trying to access roo as a provider

@proyectoauraorg
Copy link
Copy Markdown
Contributor Author

Good catch @rrewll! That's a leftover string in vscode-lm.ts:398 — the justification message still says "Roo Code". I'll add it to the PR.

Let me push a fix now.

proyectoauraorg added a commit to proyectoauraorg/Zoo-Code that referenced this pull request May 28, 2026
…Zoo-Code-Org#343)

Rename user-facing product references from "Roo" to "Zoo": webview panel and
editor-tab titles, the integrated terminal name, the diff-view label, the LM
Studio context-length guidance, the VS Code LM authorization justification, and
the missing-parameter tool notice (now i18n-keyed via
tools:missingToolParameter[WithPath] across all locales).

Per review feedback, references to the external Roo provider/router are left
untouched: the routerRemoval messages, the errors.roo/info.roo i18n keys, and
the Roo credit-balance notice name the legacy Roo provider, not our brand.

Strengthen the sayAndCreateMissingParamError test so it asserts the resolved,
interpolated notice actually names the tool and the missing parameter (the
previous expect.any(String) would have passed even on a silent i18n regression).
@drvaquera drvaquera force-pushed the fix/branding-roo-to-zoo-user-strings branch from 3ff89a1 to 0aa57b7 Compare May 31, 2026 23:42
@proyectoauraorg
Copy link
Copy Markdown
Contributor Author

Thanks for the review! Rebased onto main (resolved the webviewMessageHandler.ts conflict) and addressed the legit-Roo feedback:

  • Reverted everything you flagged — these reference the legacy Roo provider/router, not our brand, so they stay "Roo": the routerRemoval.ts messages, the errors.roo.*/info.roo.* keys (all locales), and the "Roo credit balance is no longer available" notice in webviewMessageHandler.ts.
  • Kept only genuine product-name branding: the webview/editor titles, the terminal name, the diff-view label, the LM Studio guidance, the VS Code LM authorization justification, and the missing-parameter tool notice (now i18n-keyed).
  • On the Task.spec.ts nit — good catch: confirmed t() returns the raw key in this suite, so expect.any(String) would mask an i18n regression. Added a scoped i18n mock that interpolates just the two missing-parameter keys, and the assertions now verify the resolved notice actually names the tool and the missing parameter.

tsc, eslint, and the affected vitest suites pass locally.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.changeset/branding-roo-to-zoo-user-strings.md:
- Line 5: Update the changeset description to correctly reflect that the
router-removal and Roo Cloud sign-in/credit-balance notices were changed: edit
.changeset/branding-roo-to-zoo-user-strings.md to remove "router-removal and Roo
Cloud sign-in/credit-balance notices" from the “intentionally left unchanged”
list and add them to the "what was changed" section, and mention the specific
artifacts updated (common.json translations and the fallback constants in
routerRemoval.ts plus the credit-balance notification text) so reviewers can
find the modifications.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: e3c9aef7-2fc9-421e-b255-6f6eae8245eb

📥 Commits

Reviewing files that changed from the base of the PR and between 3ff89a1 and 0aa57b7.

📒 Files selected for processing (29)
  • .changeset/branding-roo-to-zoo-user-strings.md
  • src/activate/__tests__/registerCommands.spec.ts
  • src/activate/registerCommands.ts
  • src/api/providers/lm-studio.ts
  • src/api/providers/vscode-lm.ts
  • src/core/task/Task.ts
  • src/core/task/__tests__/Task.spec.ts
  • src/core/webview/ClineProvider.ts
  • src/i18n/locales/ca/tools.json
  • src/i18n/locales/de/tools.json
  • src/i18n/locales/en/tools.json
  • src/i18n/locales/es/tools.json
  • src/i18n/locales/fr/tools.json
  • src/i18n/locales/hi/tools.json
  • src/i18n/locales/id/tools.json
  • src/i18n/locales/it/tools.json
  • src/i18n/locales/ja/tools.json
  • src/i18n/locales/ko/tools.json
  • src/i18n/locales/nl/tools.json
  • src/i18n/locales/pl/tools.json
  • src/i18n/locales/pt-BR/tools.json
  • src/i18n/locales/ru/tools.json
  • src/i18n/locales/tr/tools.json
  • src/i18n/locales/vi/tools.json
  • src/i18n/locales/zh-CN/tools.json
  • src/i18n/locales/zh-TW/tools.json
  • src/integrations/editor/DiffViewProvider.ts
  • src/integrations/terminal/Terminal.ts
  • src/integrations/terminal/__tests__/TerminalRegistry.spec.ts
✅ Files skipped from review due to trivial changes (10)
  • src/api/providers/vscode-lm.ts
  • src/activate/tests/registerCommands.spec.ts
  • src/i18n/locales/fr/tools.json
  • src/i18n/locales/it/tools.json
  • src/i18n/locales/ko/tools.json
  • src/core/webview/ClineProvider.ts
  • src/i18n/locales/zh-TW/tools.json
  • src/i18n/locales/ja/tools.json
  • src/i18n/locales/ru/tools.json
  • src/integrations/terminal/tests/TerminalRegistry.spec.ts
🚧 Files skipped from review as they are similar to previous changes (11)
  • src/i18n/locales/nl/tools.json
  • src/integrations/terminal/Terminal.ts
  • src/i18n/locales/hi/tools.json
  • src/i18n/locales/es/tools.json
  • src/i18n/locales/id/tools.json
  • src/i18n/locales/vi/tools.json
  • src/i18n/locales/ca/tools.json
  • src/i18n/locales/pt-BR/tools.json
  • src/core/task/tests/Task.spec.ts
  • src/i18n/locales/zh-CN/tools.json
  • src/i18n/locales/en/tools.json

"zoo-code": patch
---

Replace remaining user-facing "Roo" brand strings with "Zoo": the missing-tool-parameter retry notice (now localized across all locales), the editor tab and webview `<title>`, the diff editor label, the terminal name, the "no visible instances" output, and the LM Studio context-length notice. References to the external Roo provider/router are intentionally left unchanged (the `roo` provider id and `.roo*` config files, the `errors.roo`/`info.roo` localized messages, the router-removal and Roo Cloud sign-in/credit-balance notices, i18n key paths, attribution headers, and console logs).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Correct the changeset description: router-removal and credit-balance notices were updated, not left unchanged.

The changeset claims "the router-removal and Roo Cloud sign-in/credit-balance notices" were intentionally left unchanged, but the PR objectives explicitly state these were updated: "Router/cloud: removal/sign-in messages in common.json updated across 18 locales and fallback constants in routerRemoval.ts adjusted" and "updated the ... credit-balance notification".

Move these items from the "intentionally left unchanged" list to the "what was changed" section.

📝 Proposed fix for the changeset description
-Replace remaining user-facing "Roo" brand strings with "Zoo": the missing-tool-parameter retry notice (now localized across all locales), the editor tab and webview `<title>`, the diff editor label, the terminal name, the "no visible instances" output, and the LM Studio context-length notice. References to the external Roo provider/router are intentionally left unchanged (the `roo` provider id and `.roo*` config files, the `errors.roo`/`info.roo` localized messages, the router-removal and Roo Cloud sign-in/credit-balance notices, i18n key paths, attribution headers, and console logs).
+Replace remaining user-facing "Roo" brand strings with "Zoo": the missing-tool-parameter retry notice (now localized across all locales), the editor tab and webview `<title>`, the diff editor label, the terminal name, the "no visible instances" output, the LM Studio context-length notice, the router-removal messages, and the Roo Cloud sign-in/credit-balance notices. References to the external Roo provider/router are intentionally left unchanged (the `roo` provider id and `.roo*` config files, the `errors.roo`/`info.roo` i18n key paths, attribution headers, and console logs).
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Replace remaining user-facing "Roo" brand strings with "Zoo": the missing-tool-parameter retry notice (now localized across all locales), the editor tab and webview `<title>`, the diff editor label, the terminal name, the "no visible instances" output, and the LM Studio context-length notice. References to the external Roo provider/router are intentionally left unchanged (the `roo` provider id and `.roo*` config files, the `errors.roo`/`info.roo` localized messages, the router-removal and Roo Cloud sign-in/credit-balance notices, i18n key paths, attribution headers, and console logs).
Replace remaining user-facing "Roo" brand strings with "Zoo": the missing-tool-parameter retry notice (now localized across all locales), the editor tab and webview `<title>`, the diff editor label, the terminal name, the "no visible instances" output, the LM Studio context-length notice, the router-removal messages, and the Roo Cloud sign-in/credit-balance notices. References to the external Roo provider/router are intentionally left unchanged (the `roo` provider id and `.roo*` config files, the `errors.roo`/`info.roo` i18n key paths, attribution headers, and console logs).
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.changeset/branding-roo-to-zoo-user-strings.md at line 5, Update the
changeset description to correctly reflect that the router-removal and Roo Cloud
sign-in/credit-balance notices were changed: edit
.changeset/branding-roo-to-zoo-user-strings.md to remove "router-removal and Roo
Cloud sign-in/credit-balance notices" from the “intentionally left unchanged”
list and add them to the "what was changed" section, and mention the specific
artifacts updated (common.json translations and the fallback constants in
routerRemoval.ts plus the credit-balance notification text) so reviewers can
find the modifications.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants