Skip to content

feat: support custom model info overrides - #1142

Open
everyoneexe wants to merge 3 commits into
Zoo-Code-Org:mainfrom
everyoneexe:feat/custom-model-info-override
Open

feat: support custom model info overrides#1142
everyoneexe wants to merge 3 commits into
Zoo-Code-Org:mainfrom
everyoneexe:feat/custom-model-info-override

Conversation

@everyoneexe

@everyoneexe everyoneexe commented Aug 4, 2026

Copy link
Copy Markdown

Summary

  • Add validated custom model metadata overrides for routed providers.
  • Allow users to configure context window, maximum output tokens, image support, and prompt-cache support when a provider catalog is incomplete or a model is unlisted.
  • Preserve configured model IDs for OpenRouter, Requesty, Unbound, Vercel AI Gateway, and Zoo Gateway when model discovery is unavailable.
  • Add a cached-state settings UI with numeric validation, capability toggles, warnings, and reset behavior.
  • Improve context progress handling so unavailable metadata does not show misleading percentages, while keeping the condense action available.

Implementation details

  • Introduces a strict customModelInfo schema and shared application helper in @roo-code/types.
  • Applies overrides before derived request parameters are calculated in OpenRouter, Requesty, Unbound, and the supported RouterProvider implementations.
  • Synthesizes model metadata for unknown models only when a valid context-window override is supplied; otherwise provider defaults and existing behavior are preserved.
  • Keeps SettingsView inputs isolated in local cached state until the user explicitly saves.
  • Covers the provider-specific behavior, model selection fallback, settings form validation, and context-header behavior with regression tests.

Testing

  • Type checks passed for the types package, extension host, and webview.
  • Targeted provider tests passed: 120 tests.
  • Types package tests passed: 27 tests.
  • Webview test suite passed: 1,564 tests.
  • Custom settings UI tests passed: 2 tests.
  • ESLint passed for all changed files, with no suppression-count increase.
  • Production webview build, extension bundle, and VSIX packaging completed successfully.
  • Pre-push monorepo type-check passed across all 11 participating packages.

Notes

  • No changeset was added, following repository guidance that changesets are maintained separately.
  • The branch also includes the design specification commit for the custom model settings override.

Summary by CodeRabbit

  • New Features
    • Added custom model settings for context windows, maximum output tokens, image support, and prompt caching across supported providers.
    • Added validation, warnings, reset controls, and support for models not listed in provider catalogs.
    • Preserved configured model selections when provider metadata is unavailable.
  • Bug Fixes
    • Improved context usage indicators for missing, unlimited, or exceeded context limits.
  • Documentation
    • Added design documentation and localized settings text across supported languages.

everyoneexe and others added 2 commits August 4, 2026 03:06
Custom model IDs on router providers (e.g. anthropic/claude-sonnet-4-6 on
OpenRouter) render a context window of 1 and a 7000% usage figure when the
model list is unavailable. Spec covers three defects: the TaskHeader `|| 1`
fallback with no upper clamp, webview/host divergence in model resolution,
and the absence of any override UI outside the OpenAI-compatible provider.

Design: one `customModelInfo` overlay field on the base provider schema, one
shared `applyCustomModelInfo` helper bound at both resolution layers, display
hardening independent of any override, and a collapsible settings panel for
the five router providers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The PR adds validated custom model metadata overrides for router providers. Shared resolution applies overrides in the webview and provider handlers, preserves configured model IDs, exposes router settings controls, and hardens context-window rendering.

Changes

Custom model settings

Layer / File(s) Summary
Custom metadata contract
packages/types/src/model.ts, packages/types/src/provider-settings.ts, packages/types/src/__tests__/*, docs/superpowers/specs/...
Defines validated overrides for context windows, output limits, image support, and prompt caching. Supports overlays on discovered models and safe synthesis for unknown models.
Provider model resolution
src/api/providers/{openrouter,requesty,unbound,router-provider}.ts, src/api/providers/__tests__/*
Applies custom metadata to discovered provider models before request parameter derivation. Preserves fallback metadata and excludes unsupported providers.
Model selection and ID preservation
webview-ui/src/components/ui/hooks/useSelectedModel.ts, webview-ui/src/components/ui/hooks/__tests__/*
Preserves configured router model IDs when catalogs are empty, loading, or missing the configured ID. Applies custom metadata to supported providers.
Router settings controls
webview-ui/src/components/settings/CustomModelInfoSettings.tsx, webview-ui/src/components/settings/providers/*, webview-ui/src/components/settings/ApiOptions.tsx, webview-ui/src/i18n/locales/*/settings.json
Adds shared controls for editing, validating, resetting, and localizing custom model metadata across five router providers.
Context usage rendering
webview-ui/src/components/chat/TaskHeader.tsx, webview-ui/src/components/chat/__tests__/*
Hides percentages for unavailable context metadata and clamps over-limit usage to 100% while retaining the condense action.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant SettingsUI
  participant ModelSelection
  participant MetadataResolver
  participant ProviderHandler
  SettingsUI->>ModelSelection: persist customModelInfo
  ModelSelection->>MetadataResolver: resolve selected model metadata
  ProviderHandler->>MetadataResolver: apply custom overrides to discovered model
  MetadataResolver-->>ProviderHandler: resolved ModelInfo
Loading

Possibly related PRs

Suggested labels: awaiting-review

Suggested reviewers: edelauna

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description explains the implementation and testing, but it omits the required linked issue and pre-submission checklist. Add an approved GitHub issue reference and complete the pre-submission checklist, including documentation and UI snapshot considerations.
Docstring Coverage ⚠️ Warning Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main feature: custom model information overrides.
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.
✨ 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.

packages/types/src/__tests__/custom-model-info.test.ts

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

packages/types/src/model.ts

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

src/api/providers/__tests__/kenari.spec.ts

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

  • 10 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.

@codecov

codecov Bot commented Aug 4, 2026

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 3

🧹 Nitpick comments (1)
src/api/providers/__tests__/openrouter.spec.ts (1)

142-160: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Test the undiscovered-model synthesis path.

These tests use a fetched model. Add a case where the configured model ID is absent from the fetched model map and customModelInfo.contextWindow is valid. Assert that the handler retains the configured ID and derives maxTokens from synthesized metadata.

  • src/api/providers/__tests__/openrouter.spec.ts#L142-L160: add an unlisted OpenRouter model case.
  • src/api/providers/__tests__/requesty.spec.ts#L161-L177: add an unlisted Requesty model case.
  • src/api/providers/__tests__/unbound.spec.ts#L41-L60: add an unlisted Unbound model case.
🤖 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 `@src/api/providers/__tests__/openrouter.spec.ts` around lines 142 - 160, Add
undiscovered-model synthesis test cases in
src/api/providers/__tests__/openrouter.spec.ts lines 142-160,
src/api/providers/__tests__/requesty.spec.ts lines 161-177, and
src/api/providers/__tests__/unbound.spec.ts lines 41-60. Configure each handler
with a model ID absent from the fetched model map and valid
customModelInfo.contextWindow, then assert fetchModel retains the configured ID
and derives maxTokens from the synthesized metadata.
🤖 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 `@packages/types/src/model.ts`:
- Around line 191-198: Update customModelInfoSchema so maxTokens and
contextWindow validate safe positive integers, matching the Number.isSafeInteger
checks in applyCustomModelInfo. Add a boundary test covering values above
Number.MAX_SAFE_INTEGER and verify those overrides are rejected during schema
validation.

In `@webview-ui/src/components/chat/TaskHeader.tsx`:
- Around line 72-73: Update the contextWindowForDisplay calculation in
TaskHeader to require a finite, positive numeric value, excluding Infinity and
NaN before rendering context details. Add a regression test covering an infinite
context window and verifying that no context total or progress display is
rendered.

In `@webview-ui/src/components/ui/hooks/__tests__/useSelectedModel.spec.ts`:
- Around line 311-321: Remove the as any assertions from the mockUseRouterModels
and mockUseOpenRouterModelProviders return values. Update these mocks to use
typed query fixtures or precise mock return types that satisfy each hook’s
query-result contract, without using double assertions.

---

Nitpick comments:
In `@src/api/providers/__tests__/openrouter.spec.ts`:
- Around line 142-160: Add undiscovered-model synthesis test cases in
src/api/providers/__tests__/openrouter.spec.ts lines 142-160,
src/api/providers/__tests__/requesty.spec.ts lines 161-177, and
src/api/providers/__tests__/unbound.spec.ts lines 41-60. Configure each handler
with a model ID absent from the fetched model map and valid
customModelInfo.contextWindow, then assert fetchModel retains the configured ID
and derives maxTokens from the synthesized metadata.
🪄 Autofix

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: 93a2e87c-6d2f-45e6-b3db-67fe48e21194

📥 Commits

Reviewing files that changed from the base of the PR and between 7918f6b and 3f7641f.

📒 Files selected for processing (25)
  • docs/superpowers/specs/2026-08-04-custom-model-settings-design.md
  • packages/types/src/__tests__/custom-model-info.test.ts
  • packages/types/src/model.ts
  • packages/types/src/provider-settings.ts
  • src/api/providers/__tests__/openrouter.spec.ts
  • src/api/providers/__tests__/requesty.spec.ts
  • src/api/providers/__tests__/unbound.spec.ts
  • src/api/providers/openrouter.ts
  • src/api/providers/requesty.ts
  • src/api/providers/router-provider.ts
  • src/api/providers/unbound.ts
  • webview-ui/src/components/chat/TaskHeader.tsx
  • webview-ui/src/components/chat/__tests__/TaskHeader.spec.tsx
  • webview-ui/src/components/settings/ApiOptions.tsx
  • webview-ui/src/components/settings/CustomModelInfoSettings.tsx
  • webview-ui/src/components/settings/__tests__/CustomModelInfoSettings.spec.tsx
  • webview-ui/src/components/settings/providers/OpenRouter.tsx
  • webview-ui/src/components/settings/providers/Requesty.tsx
  • webview-ui/src/components/settings/providers/Unbound.tsx
  • webview-ui/src/components/settings/providers/VercelAiGateway.tsx
  • webview-ui/src/components/settings/providers/ZooGateway.tsx
  • webview-ui/src/components/settings/providers/__tests__/ZooGateway.spec.tsx
  • webview-ui/src/components/ui/hooks/__tests__/useSelectedModel.spec.ts
  • webview-ui/src/components/ui/hooks/useSelectedModel.ts
  • webview-ui/src/i18n/locales/en/settings.json

Comment thread packages/types/src/model.ts
Comment thread webview-ui/src/components/chat/TaskHeader.tsx Outdated
Comment thread webview-ui/src/components/ui/hooks/__tests__/useSelectedModel.spec.ts Outdated
@everyoneexe everyoneexe changed the title Feat/custom model info override feat: support custom model info overrides Aug 4, 2026

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
webview-ui/src/components/settings/CustomModelInfoSettings.tsx (1)

69-77: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Preserve existing overrides while numeric input is invalid.

When an existing contextWindow or maxTokens override is edited, an invalid intermediate value makes parsePositiveInteger return undefined. updateOverride treats undefined as deletion, so setApiConfigurationField removes the previous valid override. Preserve the configured value until the input is empty or valid, and keep the synchronization effects from replacing the invalid local text. Add a regression test with an existing numeric override.

Also applies to: 97-107

🤖 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 `@webview-ui/src/components/settings/CustomModelInfoSettings.tsx` around lines
69 - 77, Update the contextWindow and maxTokens input/update logic in
CustomModelInfoSettings so invalid non-empty numeric text does not pass
undefined to updateOverride or remove an existing configured override; only
empty input should delete it, while valid input should update it. Adjust the
synchronization useEffects to retain invalid local text and only sync configured
values when the input is empty or valid. Add a regression test covering both
fields with existing numeric overrides.
🤖 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 `@webview-ui/src/i18n/locales/ca/settings.json`:
- Around line 613-635: Translate every value in the customModelInfo settings
object into the appropriate locale, replacing the English strings in
webview-ui/src/i18n/locales/ca/settings.json lines 613-635,
webview-ui/src/i18n/locales/de/settings.json lines 613-635,
webview-ui/src/i18n/locales/es/settings.json lines 613-635,
webview-ui/src/i18n/locales/fr/settings.json lines 613-635,
webview-ui/src/i18n/locales/hi/settings.json lines 613-635,
webview-ui/src/i18n/locales/id/settings.json lines 613-635,
webview-ui/src/i18n/locales/it/settings.json lines 613-635,
webview-ui/src/i18n/locales/ja/settings.json lines 613-635, and
webview-ui/src/i18n/locales/ko/settings.json lines 613-635. Preserve all keys
and JSON structure while translating the title, descriptions, labels, warning,
and reset text for each language.

In `@webview-ui/src/i18n/locales/nl/settings.json`:
- Around line 613-635: Translate every string in the providers.customModelInfo
block into the appropriate language in
webview-ui/src/i18n/locales/nl/settings.json#L613-L635,
pl/settings.json#L613-L635, pt-BR/settings.json#L613-L635,
ru/settings.json#L613-L635, tr/settings.json#L613-L635,
vi/settings.json#L613-L635, zh-CN/settings.json#L613-L635, and
zh-TW/settings.json#L640-L662, preserving the existing keys and JSON structure.

---

Outside diff comments:
In `@webview-ui/src/components/settings/CustomModelInfoSettings.tsx`:
- Around line 69-77: Update the contextWindow and maxTokens input/update logic
in CustomModelInfoSettings so invalid non-empty numeric text does not pass
undefined to updateOverride or remove an existing configured override; only
empty input should delete it, while valid input should update it. Adjust the
synchronization useEffects to retain invalid local text and only sync configured
values when the input is empty or valid. Add a regression test covering both
fields with existing numeric overrides.
🪄 Autofix

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: 15982886-7401-44c7-9639-be9530e97c14

📥 Commits

Reviewing files that changed from the base of the PR and between 3f7641f and e382bfe.

📒 Files selected for processing (30)
  • packages/types/src/__tests__/custom-model-info.test.ts
  • packages/types/src/model.ts
  • src/api/providers/__tests__/kenari.spec.ts
  • src/api/providers/__tests__/openrouter.spec.ts
  • src/api/providers/__tests__/requesty.spec.ts
  • src/api/providers/__tests__/unbound.spec.ts
  • src/api/providers/__tests__/vercel-ai-gateway.spec.ts
  • src/api/providers/__tests__/zoo-gateway.spec.ts
  • webview-ui/src/components/chat/TaskHeader.tsx
  • webview-ui/src/components/chat/__tests__/TaskHeader.spec.tsx
  • webview-ui/src/components/settings/CustomModelInfoSettings.tsx
  • webview-ui/src/components/settings/__tests__/CustomModelInfoSettings.spec.tsx
  • webview-ui/src/components/ui/hooks/__tests__/useSelectedModel.spec.ts
  • webview-ui/src/i18n/locales/ca/settings.json
  • webview-ui/src/i18n/locales/de/settings.json
  • webview-ui/src/i18n/locales/es/settings.json
  • webview-ui/src/i18n/locales/fr/settings.json
  • webview-ui/src/i18n/locales/hi/settings.json
  • webview-ui/src/i18n/locales/id/settings.json
  • webview-ui/src/i18n/locales/it/settings.json
  • webview-ui/src/i18n/locales/ja/settings.json
  • webview-ui/src/i18n/locales/ko/settings.json
  • webview-ui/src/i18n/locales/nl/settings.json
  • webview-ui/src/i18n/locales/pl/settings.json
  • webview-ui/src/i18n/locales/pt-BR/settings.json
  • webview-ui/src/i18n/locales/ru/settings.json
  • webview-ui/src/i18n/locales/tr/settings.json
  • webview-ui/src/i18n/locales/vi/settings.json
  • webview-ui/src/i18n/locales/zh-CN/settings.json
  • webview-ui/src/i18n/locales/zh-TW/settings.json
🚧 Files skipped from review as they are similar to previous changes (4)
  • webview-ui/src/components/chat/tests/TaskHeader.spec.tsx
  • webview-ui/src/components/chat/TaskHeader.tsx
  • packages/types/src/model.ts
  • packages/types/src/tests/custom-model-info.test.ts

Comment on lines +613 to +635
"customModelInfo": {
"title": "Custom model metadata",
"description": "Override context and capability metadata when the provider cannot detect your model accurately.",
"unresolved": "Model metadata is unavailable. Enter the context window to enable accurate token tracking.",
"contextWindow": {
"label": "Context window",
"description": "Total tokens the model can process, including input and output."
},
"maxTokens": {
"label": "Max output tokens",
"description": "Maximum number of tokens the model can generate in one response."
},
"supportsImages": {
"label": "Supports images",
"description": "Override whether the model accepts image content."
},
"supportsPromptCache": {
"label": "Supports prompt caching",
"description": "Override whether prompt caching is supported."
},
"maxTokensWarning": "Max output tokens exceed the context window.",
"reset": "Reset to detected values"
},

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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Translate the new customModelInfo strings.

The new settings appear in English for users of these non-English locales. Add locale-specific translations before release.

  • webview-ui/src/i18n/locales/ca/settings.json#L613-L635: Translate the Catalan values.
  • webview-ui/src/i18n/locales/de/settings.json#L613-L635: Translate the German values.
  • webview-ui/src/i18n/locales/es/settings.json#L613-L635: Translate the Spanish values.
  • webview-ui/src/i18n/locales/fr/settings.json#L613-L635: Translate the French values.
  • webview-ui/src/i18n/locales/hi/settings.json#L613-L635: Translate the Hindi values.
  • webview-ui/src/i18n/locales/id/settings.json#L613-L635: Translate the Indonesian values.
  • webview-ui/src/i18n/locales/it/settings.json#L613-L635: Translate the Italian values.
  • webview-ui/src/i18n/locales/ja/settings.json#L613-L635: Translate the Japanese values.
  • webview-ui/src/i18n/locales/ko/settings.json#L613-L635: Translate the Korean values.
📍 Affects 9 files
  • webview-ui/src/i18n/locales/ca/settings.json#L613-L635 (this comment)
  • webview-ui/src/i18n/locales/de/settings.json#L613-L635
  • webview-ui/src/i18n/locales/es/settings.json#L613-L635
  • webview-ui/src/i18n/locales/fr/settings.json#L613-L635
  • webview-ui/src/i18n/locales/hi/settings.json#L613-L635
  • webview-ui/src/i18n/locales/id/settings.json#L613-L635
  • webview-ui/src/i18n/locales/it/settings.json#L613-L635
  • webview-ui/src/i18n/locales/ja/settings.json#L613-L635
  • webview-ui/src/i18n/locales/ko/settings.json#L613-L635
🤖 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 `@webview-ui/src/i18n/locales/ca/settings.json` around lines 613 - 635,
Translate every value in the customModelInfo settings object into the
appropriate locale, replacing the English strings in
webview-ui/src/i18n/locales/ca/settings.json lines 613-635,
webview-ui/src/i18n/locales/de/settings.json lines 613-635,
webview-ui/src/i18n/locales/es/settings.json lines 613-635,
webview-ui/src/i18n/locales/fr/settings.json lines 613-635,
webview-ui/src/i18n/locales/hi/settings.json lines 613-635,
webview-ui/src/i18n/locales/id/settings.json lines 613-635,
webview-ui/src/i18n/locales/it/settings.json lines 613-635,
webview-ui/src/i18n/locales/ja/settings.json lines 613-635, and
webview-ui/src/i18n/locales/ko/settings.json lines 613-635. Preserve all keys
and JSON structure while translating the title, descriptions, labels, warning,
and reset text for each language.

Comment on lines +613 to +635
"customModelInfo": {
"title": "Custom model metadata",
"description": "Override context and capability metadata when the provider cannot detect your model accurately.",
"unresolved": "Model metadata is unavailable. Enter the context window to enable accurate token tracking.",
"contextWindow": {
"label": "Context window",
"description": "Total tokens the model can process, including input and output."
},
"maxTokens": {
"label": "Max output tokens",
"description": "Maximum number of tokens the model can generate in one response."
},
"supportsImages": {
"label": "Supports images",
"description": "Override whether the model accepts image content."
},
"supportsPromptCache": {
"label": "Supports prompt caching",
"description": "Override whether prompt caching is supported."
},
"maxTokensWarning": "Max output tokens exceed the context window.",
"reset": "Reset to detected values"
},

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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Translate the new custom-model metadata strings in every affected locale.

The same English-only providers.customModelInfo block was added to eight non-English locale files. This leaves the new settings surface untranslated.

  • webview-ui/src/i18n/locales/nl/settings.json#L613-L635: Translate the block for Dutch.
  • webview-ui/src/i18n/locales/pl/settings.json#L613-L635: Translate the block for Polish.
  • webview-ui/src/i18n/locales/pt-BR/settings.json#L613-L635: Translate the block for Brazilian Portuguese.
  • webview-ui/src/i18n/locales/ru/settings.json#L613-L635: Translate the block for Russian.
  • webview-ui/src/i18n/locales/tr/settings.json#L613-L635: Translate the block for Turkish.
  • webview-ui/src/i18n/locales/vi/settings.json#L613-L635: Translate the block for Vietnamese.
  • webview-ui/src/i18n/locales/zh-CN/settings.json#L613-L635: Translate the block for Simplified Chinese.
  • webview-ui/src/i18n/locales/zh-TW/settings.json#L640-L662: Translate the block for Traditional Chinese.
📍 Affects 8 files
  • webview-ui/src/i18n/locales/nl/settings.json#L613-L635 (this comment)
  • webview-ui/src/i18n/locales/pl/settings.json#L613-L635
  • webview-ui/src/i18n/locales/pt-BR/settings.json#L613-L635
  • webview-ui/src/i18n/locales/ru/settings.json#L613-L635
  • webview-ui/src/i18n/locales/tr/settings.json#L613-L635
  • webview-ui/src/i18n/locales/vi/settings.json#L613-L635
  • webview-ui/src/i18n/locales/zh-CN/settings.json#L613-L635
  • webview-ui/src/i18n/locales/zh-TW/settings.json#L640-L662
🤖 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 `@webview-ui/src/i18n/locales/nl/settings.json` around lines 613 - 635,
Translate every string in the providers.customModelInfo block into the
appropriate language in webview-ui/src/i18n/locales/nl/settings.json#L613-L635,
pl/settings.json#L613-L635, pt-BR/settings.json#L613-L635,
ru/settings.json#L613-L635, tr/settings.json#L613-L635,
vi/settings.json#L613-L635, zh-CN/settings.json#L613-L635, and
zh-TW/settings.json#L640-L662, preserving the existing keys and JSON structure.

@github-actions github-actions Bot added the awaiting-review PR changes are ready and waiting for maintainer re-review label Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting-review PR changes are ready and waiting for maintainer re-review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant