diff --git a/webview-ui/src/components/settings/providers/OpenAICompatible.tsx b/webview-ui/src/components/settings/providers/OpenAICompatible.tsx index 8609652a9d..268e209e8a 100644 --- a/webview-ui/src/components/settings/providers/OpenAICompatible.tsx +++ b/webview-ui/src/components/settings/providers/OpenAICompatible.tsx @@ -77,6 +77,12 @@ export const OpenAICompatible = ({ flags.push(t("settings:providers.customModel.capabilityPreset.flags.promptCache")) if (preset.info.supportsTemperature) flags.push(t("settings:providers.customModel.capabilityPreset.flags.temperature")) + if (preset.info.defaultTemperature !== undefined) + flags.push( + t("settings:providers.customModel.capabilityPreset.flags.defaultTemp", { + temp: preset.info.defaultTemperature, + }), + ) return flags.length > 0 ? flags : null }, [selectedPresetId, t]) @@ -98,15 +104,21 @@ export const OpenAICompatible = ({ setSelectedPresetId(null) setApiConfigurationField("openAiCustomModelInfo", openAiModelInfoSaneDefaults) setApiConfigurationField("openAiR1FormatEnabled", false) + setApiConfigurationField("modelTemperature", null) } else { const preset = modelCapabilityPresets.find((p) => `${p.provider}/${p.modelId}` === presetKey) if (preset) { setSelectedPresetId(presetKey) setApiConfigurationField("openAiCustomModelInfo", { ...preset.info }) - // Auto-enable R1 format for models that use reasoning/thinking blocks - if (preset.info.preserveReasoning) { - setApiConfigurationField("openAiR1FormatEnabled", true) + // Auto-enable/disable R1 format based on whether model uses reasoning/thinking blocks + setApiConfigurationField("openAiR1FormatEnabled", !!preset.info.preserveReasoning) + + // Auto-apply default temperature when the model specifies one (e.g. Kimi K2 models require temperature=1.0) + if (preset.info.defaultTemperature !== undefined) { + setApiConfigurationField("modelTemperature", preset.info.defaultTemperature) + } else { + setApiConfigurationField("modelTemperature", null) } } } diff --git a/webview-ui/src/components/settings/providers/__tests__/OpenAICompatible.spec.tsx b/webview-ui/src/components/settings/providers/__tests__/OpenAICompatible.spec.tsx index e69b8233d9..479a5d6ed8 100644 --- a/webview-ui/src/components/settings/providers/__tests__/OpenAICompatible.spec.tsx +++ b/webview-ui/src/components/settings/providers/__tests__/OpenAICompatible.spec.tsx @@ -431,7 +431,7 @@ describe("OpenAICompatible Component - Model Capability Presets", () => { ) }) - it("should reset openAiR1FormatEnabled when selecting custom preset", () => { + it("should reset openAiR1FormatEnabled and modelTemperature when selecting custom preset", () => { const apiConfiguration: Partial = {} render( @@ -446,9 +446,10 @@ describe("OpenAICompatible Component - Model Capability Presets", () => { fireEvent.click(customItem) expect(mockSetApiConfigurationField).toHaveBeenCalledWith("openAiR1FormatEnabled", false) + expect(mockSetApiConfigurationField).toHaveBeenCalledWith("modelTemperature", null) }) - it("should auto-enable openAiR1FormatEnabled when selecting a model with preserveReasoning", () => { + it("should auto-enable openAiR1FormatEnabled and set temperature when selecting a model with preserveReasoning", () => { const apiConfiguration: Partial = {} render( @@ -459,7 +460,7 @@ describe("OpenAICompatible Component - Model Capability Presets", () => { />, ) - // Click on a Kimi K2.5 model which has preserveReasoning: true + // Click on a Kimi K2.5 model which has preserveReasoning: true and defaultTemperature: 1.0 const kimiItem = screen.getByTestId("command-item-Moonshot (Kimi)/kimi-k2.5") fireEvent.click(kimiItem) @@ -470,5 +471,26 @@ describe("OpenAICompatible Component - Model Capability Presets", () => { preserveReasoning: true, }), ) + // Should auto-apply the default temperature from the model preset + expect(mockSetApiConfigurationField).toHaveBeenCalledWith("modelTemperature", 1.0) + }) + + it("should reset openAiR1FormatEnabled to false when selecting a non-reasoning model", () => { + const apiConfiguration: Partial = {} + + render( + , + ) + + // Click on a DeepSeek model (no preserveReasoning) + const deepseekItems = document.querySelectorAll('[data-testid^="command-item-DeepSeek/"]') + if (deepseekItems.length > 0) { + fireEvent.click(deepseekItems[0]) + expect(mockSetApiConfigurationField).toHaveBeenCalledWith("openAiR1FormatEnabled", false) + } }) }) diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index a9bfb5856c..f2a72dba7d 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -486,7 +486,15 @@ "custom": "Personalitzat (configura manualment)", "searchPlaceholder": "Cerca models...", "noResults": "No s'han trobat models coincidents.", - "applied": "S'han aplicat les capacitats de {{model}}" + "applied": "S'han aplicat les capacitats de {{model}}", + "appliedFlags": "Applied capabilities", + "flags": { + "reasoning": "Reasoning/Thinking", + "images": "Image Support", + "promptCache": "Prompt Cache", + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" + } }, "capabilities": "Configureu les capacitats i preus per al vostre model personalitzat compatible amb OpenAI. Tingueu cura en especificar les capacitats del model, ja que poden afectar com funciona Roo Code.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index 738b479021..ee307eb7cc 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -486,7 +486,15 @@ "custom": "Benutzerdefiniert (manuell konfigurieren)", "searchPlaceholder": "Modelle suchen...", "noResults": "Keine passenden Modelle gefunden.", - "applied": "Fähigkeiten von {{model}} angewendet" + "applied": "Fähigkeiten von {{model}} angewendet", + "appliedFlags": "Applied capabilities", + "flags": { + "reasoning": "Reasoning/Thinking", + "images": "Image Support", + "promptCache": "Prompt Cache", + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" + } }, "capabilities": "Konfiguriere die Fähigkeiten und Preise für dein benutzerdefiniertes OpenAI-kompatibles Modell. Sei vorsichtig bei der Angabe der Modellfähigkeiten, da diese beeinflussen können, wie Roo Code funktioniert.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json index 066a0dd46a..f871ce7ebd 100644 --- a/webview-ui/src/i18n/locales/en/settings.json +++ b/webview-ui/src/i18n/locales/en/settings.json @@ -555,7 +555,8 @@ "reasoning": "Reasoning/Thinking", "images": "Image Support", "promptCache": "Prompt Cache", - "temperature": "Temperature Control" + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" } }, "capabilities": "Configure the capabilities and pricing for your custom OpenAI-compatible model. Be careful when specifying the model capabilities, as they can affect how Roo Code performs.", diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index 4d1f357ce8..71084f1f00 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -486,7 +486,15 @@ "custom": "Personalizado (configurar manualmente)", "searchPlaceholder": "Buscar modelos...", "noResults": "No se encontraron modelos coincidentes.", - "applied": "Se aplicaron las capacidades de {{model}}" + "applied": "Se aplicaron las capacidades de {{model}}", + "appliedFlags": "Applied capabilities", + "flags": { + "reasoning": "Reasoning/Thinking", + "images": "Image Support", + "promptCache": "Prompt Cache", + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" + } }, "capabilities": "Configure las capacidades y precios para su modelo personalizado compatible con OpenAI. Tenga cuidado al especificar las capacidades del modelo, ya que pueden afectar cómo funciona Roo Code.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index 07bba69fe8..cc62ae939f 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -486,7 +486,15 @@ "custom": "Personnalisé (configurer manuellement)", "searchPlaceholder": "Rechercher des modèles...", "noResults": "Aucun modèle correspondant trouvé.", - "applied": "Capacités de {{model}} appliquées" + "applied": "Capacités de {{model}} appliquées", + "appliedFlags": "Applied capabilities", + "flags": { + "reasoning": "Reasoning/Thinking", + "images": "Image Support", + "promptCache": "Prompt Cache", + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" + } }, "capabilities": "Configurez les capacités et les prix pour votre modèle personnalisé compatible OpenAI. Soyez prudent lors de la spécification des capacités du modèle, car elles peuvent affecter le fonctionnement de Roo Code.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index 71ce16595c..db96d3b321 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -486,7 +486,15 @@ "custom": "कस्टम (मैन्युअल रूप से कॉन्फ़िगर करें)", "searchPlaceholder": "मॉडल खोजें...", "noResults": "कोई मेल खाने वाला मॉडल नहीं मिला।", - "applied": "{{model}} से क्षमताएं लागू की गईं" + "applied": "{{model}} से क्षमताएं लागू की गईं", + "appliedFlags": "Applied capabilities", + "flags": { + "reasoning": "Reasoning/Thinking", + "images": "Image Support", + "promptCache": "Prompt Cache", + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" + } }, "capabilities": "अपने कस्टम OpenAI-संगत मॉडल के लिए क्षमताओं और मूल्य निर्धारण को कॉन्फ़िगर करें। मॉडल क्षमताओं को निर्दिष्ट करते समय सावधान रहें, क्योंकि वे Roo Code के प्रदर्शन को प्रभावित कर सकती हैं।", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/id/settings.json b/webview-ui/src/i18n/locales/id/settings.json index 40d1086ea8..fd5b5cd95a 100644 --- a/webview-ui/src/i18n/locales/id/settings.json +++ b/webview-ui/src/i18n/locales/id/settings.json @@ -486,7 +486,15 @@ "custom": "Kustom (konfigurasi manual)", "searchPlaceholder": "Cari model...", "noResults": "Tidak ada model yang cocok ditemukan.", - "applied": "Kemampuan dari {{model}} diterapkan" + "applied": "Kemampuan dari {{model}} diterapkan", + "appliedFlags": "Applied capabilities", + "flags": { + "reasoning": "Reasoning/Thinking", + "images": "Image Support", + "promptCache": "Prompt Cache", + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" + } }, "capabilities": "Konfigurasi kemampuan dan harga untuk model kustom yang kompatibel dengan OpenAI. Hati-hati saat menentukan kemampuan model, karena dapat mempengaruhi performa Roo Code.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index c84a0b24e5..1c70e527e9 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -486,7 +486,15 @@ "custom": "Personalizzato (configura manualmente)", "searchPlaceholder": "Cerca modelli...", "noResults": "Nessun modello corrispondente trovato.", - "applied": "Capacità di {{model}} applicate" + "applied": "Capacità di {{model}} applicate", + "appliedFlags": "Applied capabilities", + "flags": { + "reasoning": "Reasoning/Thinking", + "images": "Image Support", + "promptCache": "Prompt Cache", + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" + } }, "capabilities": "Configura le capacità e i prezzi del tuo modello personalizzato compatibile con OpenAI. Fai attenzione quando specifichi le capacità del modello, poiché possono influenzare le prestazioni di Roo Code.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index 462b905ef9..c59bcdef6d 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -486,7 +486,15 @@ "custom": "カスタム(手動で設定)", "searchPlaceholder": "モデルを検索...", "noResults": "一致するモデルが見つかりません。", - "applied": "{{model}}の機能を適用しました" + "applied": "{{model}}の機能を適用しました", + "appliedFlags": "Applied capabilities", + "flags": { + "reasoning": "Reasoning/Thinking", + "images": "Image Support", + "promptCache": "Prompt Cache", + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" + } }, "capabilities": "カスタムOpenAI互換モデルの機能と価格を設定します。モデルの機能はRoo Codeのパフォーマンスに影響を与える可能性があるため、慎重に指定してください。", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index f28c9372f2..b91bcdedfa 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -486,7 +486,15 @@ "custom": "사용자 정의 (수동 구성)", "searchPlaceholder": "모델 검색...", "noResults": "일치하는 모델을 찾을 수 없습니다.", - "applied": "{{model}}의 기능이 적용되었습니다" + "applied": "{{model}}의 기능이 적용되었습니다", + "appliedFlags": "Applied capabilities", + "flags": { + "reasoning": "Reasoning/Thinking", + "images": "Image Support", + "promptCache": "Prompt Cache", + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" + } }, "capabilities": "사용자 정의 OpenAI 호환 모델의 기능과 가격을 구성하세요. 모델 기능이 Roo Code의 성능에 영향을 미칠 수 있으므로 신중하게 지정하세요.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json index 6d43880f62..fdb3594a74 100644 --- a/webview-ui/src/i18n/locales/nl/settings.json +++ b/webview-ui/src/i18n/locales/nl/settings.json @@ -486,7 +486,15 @@ "custom": "Aangepast (handmatig configureren)", "searchPlaceholder": "Modellen zoeken...", "noResults": "Geen overeenkomende modellen gevonden.", - "applied": "Mogelijkheden van {{model}} toegepast" + "applied": "Mogelijkheden van {{model}} toegepast", + "appliedFlags": "Applied capabilities", + "flags": { + "reasoning": "Reasoning/Thinking", + "images": "Image Support", + "promptCache": "Prompt Cache", + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" + } }, "capabilities": "Stel de mogelijkheden en prijzen in voor je aangepaste OpenAI-compatibele model. Wees voorzichtig met het opgeven van de modelmogelijkheden, want deze kunnen de prestaties van Roo Code beïnvloeden.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index 3e076615a4..60d184c4ed 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -486,7 +486,15 @@ "custom": "Niestandardowy (konfiguruj ręcznie)", "searchPlaceholder": "Szukaj modeli...", "noResults": "Nie znaleziono pasujących modeli.", - "applied": "Zastosowano możliwości z {{model}}" + "applied": "Zastosowano możliwości z {{model}}", + "appliedFlags": "Applied capabilities", + "flags": { + "reasoning": "Reasoning/Thinking", + "images": "Image Support", + "promptCache": "Prompt Cache", + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" + } }, "capabilities": "Skonfiguruj możliwości i ceny swojego niestandardowego modelu zgodnego z OpenAI. Zachowaj ostrożność podczas określania możliwości modelu, ponieważ mogą one wpływać na wydajność Roo Code.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index a3023d8091..93a3be2ee0 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -486,7 +486,15 @@ "custom": "Personalizado (configurar manualmente)", "searchPlaceholder": "Buscar modelos...", "noResults": "Nenhum modelo correspondente encontrado.", - "applied": "Capacidades de {{model}} aplicadas" + "applied": "Capacidades de {{model}} aplicadas", + "appliedFlags": "Applied capabilities", + "flags": { + "reasoning": "Reasoning/Thinking", + "images": "Image Support", + "promptCache": "Prompt Cache", + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" + } }, "capabilities": "Configure as capacidades e preços para seu modelo personalizado compatível com OpenAI. Tenha cuidado ao especificar as capacidades do modelo, pois elas podem afetar como o Roo Code funciona.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json index 5247ec3f5d..b76cdefe88 100644 --- a/webview-ui/src/i18n/locales/ru/settings.json +++ b/webview-ui/src/i18n/locales/ru/settings.json @@ -486,7 +486,15 @@ "custom": "Пользовательский (настроить вручную)", "searchPlaceholder": "Поиск моделей...", "noResults": "Подходящие модели не найдены.", - "applied": "Применены возможности из {{model}}" + "applied": "Применены возможности из {{model}}", + "appliedFlags": "Applied capabilities", + "flags": { + "reasoning": "Reasoning/Thinking", + "images": "Image Support", + "promptCache": "Prompt Cache", + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" + } }, "capabilities": "Настройте возможности и стоимость вашей пользовательской модели, совместимой с OpenAI. Будьте осторожны при указании возможностей модели, это может повлиять на работу Roo Code.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index ed1dd1ff1f..e3b8b6be06 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -486,7 +486,15 @@ "custom": "Özel (manuel yapılandır)", "searchPlaceholder": "Model ara...", "noResults": "Eşleşen model bulunamadı.", - "applied": "{{model}} yetenekleri uygulandı" + "applied": "{{model}} yetenekleri uygulandı", + "appliedFlags": "Applied capabilities", + "flags": { + "reasoning": "Reasoning/Thinking", + "images": "Image Support", + "promptCache": "Prompt Cache", + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" + } }, "capabilities": "Özel OpenAI uyumlu modelinizin yeteneklerini ve fiyatlandırmasını yapılandırın. Model yeteneklerini belirtirken dikkatli olun, çünkü bunlar Roo Code'un performansını etkileyebilir.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index 20ee9b3cab..c4fcb0d8ce 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -486,7 +486,15 @@ "custom": "Tùy chỉnh (cấu hình thủ công)", "searchPlaceholder": "Tìm kiếm mô hình...", "noResults": "Không tìm thấy mô hình phù hợp.", - "applied": "Đã áp dụng khả năng từ {{model}}" + "applied": "Đã áp dụng khả năng từ {{model}}", + "appliedFlags": "Applied capabilities", + "flags": { + "reasoning": "Reasoning/Thinking", + "images": "Image Support", + "promptCache": "Prompt Cache", + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" + } }, "capabilities": "Cấu hình các khả năng và giá cả cho mô hình tương thích OpenAI tùy chỉnh của bạn. Hãy cẩn thận khi chỉ định khả năng của mô hình, vì chúng có thể ảnh hưởng đến cách Roo Code hoạt động.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index 997d59f378..26d884f1d7 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -486,7 +486,15 @@ "custom": "自定义(手动配置)", "searchPlaceholder": "搜索模型...", "noResults": "未找到匹配的模型。", - "applied": "已应用 {{model}} 的能力配置" + "applied": "已应用 {{model}} 的能力配置", + "appliedFlags": "Applied capabilities", + "flags": { + "reasoning": "Reasoning/Thinking", + "images": "Image Support", + "promptCache": "Prompt Cache", + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" + } }, "capabilities": "自定义模型配置注意事项:\n• 确保兼容OpenAI接口规范\n• 错误配置可能导致功能异常\n• 价格参数影响费用统计", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json index 0091c520b3..5783aa3301 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -496,7 +496,15 @@ "custom": "自訂(手動設定)", "searchPlaceholder": "搜尋模型...", "noResults": "找不到符合的模型。", - "applied": "已套用 {{model}} 的能力設定" + "applied": "已套用 {{model}} 的能力設定", + "appliedFlags": "Applied capabilities", + "flags": { + "reasoning": "Reasoning/Thinking", + "images": "Image Support", + "promptCache": "Prompt Cache", + "temperature": "Temperature Control", + "defaultTemp": "Default Temperature: {{temp}}" + } }, "capabilities": "設定自訂 OpenAI 相容模型的功能和定價。請謹慎設定模型功能,因為這會影響 Roo Code 的運作方式。", "maxTokens": {