Skip to content

Commit ea91916

Browse files
authored
Merge pull request RooCodeInc#1468 from System233/patch-custom-temperature
Fix: Custom temperature cannot be unchecked
2 parents b761c24 + 9ceccde commit ea91916

File tree

3 files changed

+7
-7
lines changed

3 files changed

+7
-7
lines changed

src/shared/api.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ export interface ApiHandlerOptions {
7070
requestyApiKey?: string
7171
requestyModelId?: string
7272
requestyModelInfo?: ModelInfo
73-
modelTemperature?: number
73+
modelTemperature?: number | null
7474
modelMaxTokens?: number
7575
modelMaxThinkingTokens?: number
7676
}

webview-ui/src/components/settings/TemperatureControl.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import { useEffect, useState } from "react"
33
import { useDebounce } from "react-use"
44

55
interface TemperatureControlProps {
6-
value: number | undefined
7-
onChange: (value: number | undefined) => void
6+
value: number | undefined | null
7+
onChange: (value: number | undefined | null) => void
88
maxValue?: number // Some providers like OpenAI use 0-2 range
99
}
1010

@@ -14,7 +14,7 @@ export const TemperatureControl = ({ value, onChange, maxValue = 1 }: Temperatur
1414
useDebounce(() => onChange(inputValue), 50, [onChange, inputValue])
1515
// Sync internal state with prop changes when switching profiles
1616
useEffect(() => {
17-
const hasCustomTemperature = value !== undefined
17+
const hasCustomTemperature = value !== undefined && value !== null
1818
setIsCustomTemperature(hasCustomTemperature)
1919
setInputValue(value)
2020
}, [value])
@@ -28,7 +28,7 @@ export const TemperatureControl = ({ value, onChange, maxValue = 1 }: Temperatur
2828
const isChecked = e.target.checked
2929
setIsCustomTemperature(isChecked)
3030
if (!isChecked) {
31-
setInputValue(undefined) // Unset the temperature
31+
setInputValue(null) // Unset the temperature, note that undefined is unserializable
3232
} else {
3333
setInputValue(value ?? 0) // Use the value from apiConfiguration, if set
3434
}
@@ -53,7 +53,7 @@ export const TemperatureControl = ({ value, onChange, maxValue = 1 }: Temperatur
5353
min="0"
5454
max={maxValue}
5555
step="0.01"
56-
value={inputValue}
56+
value={inputValue ?? 0}
5757
className="h-2 focus:outline-0 w-4/5 accent-vscode-button-background"
5858
onChange={(e) => setInputValue(parseFloat(e.target.value))}
5959
/>

webview-ui/src/components/settings/__tests__/TemperatureControl.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ describe("TemperatureControl", () => {
3333
fireEvent.click(checkbox)
3434
// Waiting for debounce
3535
await new Promise((x) => setTimeout(x, 100))
36-
expect(onChange).toHaveBeenCalledWith(undefined)
36+
expect(onChange).toHaveBeenCalledWith(null)
3737

3838
// Check - should restore previous temperature
3939
fireEvent.click(checkbox)

0 commit comments

Comments
 (0)