Added 130 missing keys from en.json:
- a2aDashboard: 46 keys
- agents: 6+ keys
- cliTools.guides notes: continue, kiro, opencode
- And all other missing keys from recent additions
Total: All 33 language files now have full key parity.
Detects mismatched placeholders like {count} vs {pocet} between
source (en.json) and translations. Catches cases where raw placeholders
like {# models} are translated without preserving the placeholder format.
Found 14 issues in cs.json as test case.
Added missing cliTools.guides.windsurf.steps[1-5] with title and desc:
- step 1: Open AI Settings
- step 2: Add Custom Provider
- step 3: Base URL (http://127.0.0.1:20128/v1)
- step 4: API Key
- step 5: Select Model
Total: 165 keys across all language files (5 steps × 2 keys × 33 languages)
Added missing i18n keys for 'strict-random' routing strategy:
- combos.strategyGuide.strict-random: {when, avoid, example}
- combos.strategyRecommendations.strict-random: {title, description, tip1, tip2, tip3}
Total: 264 keys across all language files (8 keys × 33 languages)
These keys were already in pt-BR (incorrectly translated) and are now
aligned with the English fallback values from combos/page.tsx
Added missing step 5 'Use Thinking Variant' to all 33 i18n language files
for cliTools.guides.opencode.steps.5
The step was already defined in CLI_TOOLS constant but the i18n
translations were missing, causing the step title/description to
not display in the UI.
Models without quota data (e.g. tab-completion models) were showing 0%
because remainingFraction defaulted to 0 when absent. Now defaults to 1
so they show 100% remaining instead.
The check-route-validation script now accepts both validateBody()
and .safeParse() as valid body validation methods. This fixes false
positives for routes using Zod schemas with safeParse().
Added 130 missing keys from en.json:
- a2aDashboard: 46 keys
- agents: 6+ keys
- cliTools.guides notes: continue, kiro, opencode
- And all other missing keys from recent additions
Total: All 33 language files now have full key parity.
Detects mismatched placeholders like {count} vs {pocet} between
source (en.json) and translations. Catches cases where raw placeholders
like {# models} are translated without preserving the placeholder format.
Found 14 issues in cs.json as test case.
Added missing cliTools.guides.windsurf.steps[1-5] with title and desc:
- step 1: Open AI Settings
- step 2: Add Custom Provider
- step 3: Base URL (http://127.0.0.1:20128/v1)
- step 4: API Key
- step 5: Select Model
Total: 165 keys across all language files (5 steps × 2 keys × 33 languages)
Added missing i18n keys for 'strict-random' routing strategy:
- combos.strategyGuide.strict-random: {when, avoid, example}
- combos.strategyRecommendations.strict-random: {title, description, tip1, tip2, tip3}
Total: 264 keys across all language files (8 keys × 33 languages)
These keys were already in pt-BR (incorrectly translated) and are now
aligned with the English fallback values from combos/page.tsx
Added missing step 5 'Use Thinking Variant' to all 33 i18n language files
for cliTools.guides.opencode.steps.5
The step was already defined in CLI_TOOLS constant but the i18n
translations were missing, causing the step title/description to
not display in the UI.
- Replace stale model IDs (gemini-3.1-pro-preview, gemini-3.1-flash-lite-preview)
with correct High/Low tier variants from fetchAvailableModels API
(gemini-3-pro-high, gemini-3-pro-low, gemini-3.1-pro-high, gemini-3.1-pro-low, etc.)
- Remove ag/ alias prefix in favor of antigravity/ across registry, providers,
model capabilities, combos, docs, and static model providers
- Make provider alias optional in Zod schema and guard ALIAS_TO_ID/ID_TO_ALIAS maps
- Show raw model IDs in quota display instead of unmapped display names
- Update T28 model catalog test to assert new High/Low tier models
- Add state for custom app name and logo
- Fetch whitelabeling settings from /api/settings
- Listen for whitelabeling changes via settings event
- Display custom app name when set
- Display custom logo (Base64 or URL) when set
- Fall back to default OmniRoute logo and name