fix(branding): replace remaining user-facing "Roo" strings with "Zoo"#343
Conversation
📝 WalkthroughWalkthroughThis 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. ChangesBranding rename: Roo to Zoo user-facing
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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
src/activate/__tests__/registerCommands.spec.tsESLint skipped: missing config or dependency (missing-dependency). The ESLint configuration references a package that is not available in the sandbox. src/activate/registerCommands.tsESLint skipped: the ESLint configuration for this file references a package that is not available in the sandbox. src/api/providers/lm-studio.tsESLint skipped: the ESLint configuration for this file references a package that is not available in the sandbox.
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. Comment |
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
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).
|
What do you think about it? Zoo-Code/src/api/providers/vscode-lm.ts Lines 396 to 400 in b91a0c1
|
edelauna
left a comment
There was a problem hiding this comment.
nice thanks for tackling there some feedback regarding legit Roo instances that should stay.
| expect(saySpy).toHaveBeenNthCalledWith(1, "error", expect.any(String)) | ||
| expect(saySpy).toHaveBeenNthCalledWith(2, "error", expect.any(String)) |
There was a problem hiding this comment.
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.
| 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." |
There was a problem hiding this comment.
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.
| relPath | ||
| ? t("tools:missingToolParameterWithPath", { | ||
| toolName, | ||
| relPath: relPath.toPosix(), | ||
| paramName, | ||
| }) | ||
| : t("tools:missingToolParameter", { toolName, paramName }), |
There was a problem hiding this comment.
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." }, |
There was a problem hiding this comment.
leave this as Roo - wonder if this should be i18n keyed though
| "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." |
There was a problem hiding this comment.
router Removed should stay roo
| "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." |
There was a problem hiding this comment.
same with this - this is an error message when trying to access roo as a provider
|
Good catch @rrewll! That's a leftover string in Let me push a fix now. |
Addresses review feedback from @rrewll on PR Zoo-Code-Org#343.
…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).
3ff89a1 to
0aa57b7
Compare
|
Thanks for the review! Rebased onto
|
There was a problem hiding this comment.
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
📒 Files selected for processing (29)
.changeset/branding-roo-to-zoo-user-strings.mdsrc/activate/__tests__/registerCommands.spec.tssrc/activate/registerCommands.tssrc/api/providers/lm-studio.tssrc/api/providers/vscode-lm.tssrc/core/task/Task.tssrc/core/task/__tests__/Task.spec.tssrc/core/webview/ClineProvider.tssrc/i18n/locales/ca/tools.jsonsrc/i18n/locales/de/tools.jsonsrc/i18n/locales/en/tools.jsonsrc/i18n/locales/es/tools.jsonsrc/i18n/locales/fr/tools.jsonsrc/i18n/locales/hi/tools.jsonsrc/i18n/locales/id/tools.jsonsrc/i18n/locales/it/tools.jsonsrc/i18n/locales/ja/tools.jsonsrc/i18n/locales/ko/tools.jsonsrc/i18n/locales/nl/tools.jsonsrc/i18n/locales/pl/tools.jsonsrc/i18n/locales/pt-BR/tools.jsonsrc/i18n/locales/ru/tools.jsonsrc/i18n/locales/tr/tools.jsonsrc/i18n/locales/vi/tools.jsonsrc/i18n/locales/zh-CN/tools.jsonsrc/i18n/locales/zh-TW/tools.jsonsrc/integrations/editor/DiffViewProvider.tssrc/integrations/terminal/Terminal.tssrc/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). |
There was a problem hiding this comment.
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.
| 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.

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:
That message was hardcoded in
Task.ts(unlike its siblingsunknownToolError/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 keystools:missingToolParameter/tools:missingToolParameterWithPath, added and translated across all 18 locales (mirroring the existingunknownToolErrorpattern).createWebviewPanel), the webview<title>, the diff editor label (DIFF_VIEW_LABEL_CHANGES), and the integrated terminal name.common.json(18 locales) and the fallback constants inrouterRemoval.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:
rooand.roo*config file references;errors.roo.*);X-Titleattribution headers and MCP/checkpoint client names (sent to external services, not shown in the VS Code UI);Verification
node scripts/find-missing-translations.js→ ✅ all locales completetsc --noEmiton the changed files → cleaneslint→ cleanviteston the affected specs → 131 passingSummary by CodeRabbit
New Features
Updates