diff --git a/changelog.d/maintenance/basereds-i18n-gemini-2026-07-13.md b/changelog.d/maintenance/basereds-i18n-gemini-2026-07-13.md new file mode 100644 index 0000000000..cdadafc8b6 --- /dev/null +++ b/changelog.d/maintenance/basereds-i18n-gemini-2026-07-13.md @@ -0,0 +1 @@ +- chore(base): pt-BR/en i18n keys for #6909 relay-repair/free-pool UI + align Cloud Code Gemini defaults test with the #6943 non-thinking-model contract diff --git a/src/i18n/messages/en.json b/src/i18n/messages/en.json index cde54389bf..1e172158a6 100644 --- a/src/i18n/messages/en.json +++ b/src/i18n/messages/en.json @@ -5070,7 +5070,7 @@ "strategy": "Strategy", "preserveClientCache": "Preserve Client Cache", "enabled": "Enabled", - "loading": "Loading...", + "loading": "Loading…", "saving": "Saving...", "save": "Save", "circuitBreaker": "Circuit Breaker", @@ -5244,7 +5244,6 @@ "proxyFreePoolSortRecent": "Recently validated", "proxyFreePoolListTotal": "Listed", "proxyFreePoolLoadMore": "Load more", - "loading": "Loading…", "close": "Close", "cancel": "Cancel", "globalLabel": "Global", @@ -8052,7 +8051,8 @@ "poolAddLabel": "Add a proxy", "poolAddMember": "Add", "poolAddFailed": "Failed to add the proxy to the pool", - "poolSelectProxy": "Select a proxy…" + "poolSelectProxy": "Select a proxy…", + "poolSaveFailed": "Failed to save pool assignment" }, "playground": { "title": "Model Playground", diff --git a/src/i18n/messages/pt-BR.json b/src/i18n/messages/pt-BR.json index ad6e79f6de..758dd533a2 100644 --- a/src/i18n/messages/pt-BR.json +++ b/src/i18n/messages/pt-BR.json @@ -6224,7 +6224,15 @@ "routingStrategySubtitle": "Compatível com 9router: round-robin de contas, limites de fixação e rotação de combo", "routingStrategyTitle": "Estratégia de Roteamento", "searchModelOverrideTargets": "Buscar provedor/modelo...", - "selectedModel": "Modelo selecionado" + "selectedModel": "Modelo selecionado", + "proxyFreePoolSearchPlaceholder": "Buscar host…", + "proxyFreePoolSearchLabel": "Buscar proxies do pool gratuito", + "proxyFreePoolSortLabel": "Ordenar por", + "proxyFreePoolSortQuality": "Qualidade", + "proxyFreePoolSortLatency": "Latência", + "proxyFreePoolSortRecent": "Mais recentes", + "proxyFreePoolListTotal": "{count} proxies no total", + "proxyFreePoolLoadMore": "Carregar mais" }, "contextRtk": { "title": "Motor RTK", @@ -8036,7 +8044,15 @@ "poolAddMember": "Adicionar", "poolAddFailed": "Falha ao adicionar o proxy ao pool", "poolSelectProxy": "Selecionar um proxy…", - "strategyLatency": "Otimizado por latência" + "strategyLatency": "Otimizado por latência", + "repair": "Reparar", + "relayAuthMissing": "auth ausente", + "poolSaveFailed": "Falha ao salvar a atribuição do pool", + "relayRepairTooltip": "Recupera a autenticação do relay no lugar. Se o token for irrecuperável (ex.: após rotação da chave de criptografia), faça o redeploy do relay.", + "relayRepairRedeployRequired": "Autenticação do relay irrecuperável — faça o redeploy do relay para gravar um token novo.", + "relayRepairFailed": "Falha ao reparar o relay", + "relayRepairError": "falha no reparo", + "relayProbeSummary": "Probes do relay: {alive}/{tested} ativos" }, "playground": { "title": "Title", diff --git a/tests/unit/translator-openai-to-gemini.test.ts b/tests/unit/translator-openai-to-gemini.test.ts index 4156a58461..e261c2f51e 100644 --- a/tests/unit/translator-openai-to-gemini.test.ts +++ b/tests/unit/translator-openai-to-gemini.test.ts @@ -518,8 +518,12 @@ test("OpenAI -> Gemini helper IDs and JSON parsing stay in the expected format", }); test("OpenAI -> Cloud Code Gemini applies native request defaults", () => { + // gemini-3.1-pro is thinking-capable; the previous fixture (gemini-3-flash-preview, + // supportsThinking: false / cap 0) encoded the pre-#6943 bug of requesting thoughts + // from a non-thinking model — reasoning_effort on a capped-at-0 model now correctly + // yields thinkingBudget 0 / includeThoughts false (see the flash assertion below). const request = openaiToCloudCodeGeminiRequest( - "gemini-3-flash-preview", + "gemini-3.1-pro", { messages: [{ role: "user", content: "Hello" }], reasoning_effort: "high", @@ -527,8 +531,16 @@ test("OpenAI -> Cloud Code Gemini applies native request defaults", () => { true ) as any; - assert.equal(request.model, "gemini-3-flash-preview"); + assert.equal(request.model, "gemini-3.1-pro"); assert.equal(request.generationConfig.thinkingConfig.includeThoughts, true); + + const flash = openaiToCloudCodeGeminiRequest( + "gemini-3-flash-preview", + { messages: [{ role: "user", content: "Hello" }], reasoning_effort: "high" }, + true + ) as any; + assert.equal(flash.generationConfig.thinkingConfig.thinkingBudget, 0); + assert.equal(flash.generationConfig.thinkingConfig.includeThoughts, false); assert.equal(request.generationConfig.topK, undefined); assert.equal(request.contents.at(-1).parts[0].text, "Hello"); });