diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts
index 2f3cf4ed540..448b1a748a6 100644
--- a/src/core/webview/ClineProvider.ts
+++ b/src/core/webview/ClineProvider.ts
@@ -2220,18 +2220,17 @@ export class ClineProvider implements vscode.WebviewViewProvider {
if (response.data) {
const rawModels: Record
{ - handleInputChange("vertexRegion")({ - target: { - value: (value as DropdownOption).value, - }, - }) - }} + onChange={handleInputChange("vertexRegion", dropdownEventTransform)} options={[ { value: "", label: "Select a region..." }, { value: "us-east5", label: "us-east5" }, @@ -634,21 +610,13 @@ const ApiOptions = ({ apiErrorMessage, modelIdErrorMessage, fromWelcomeView }: A
{/* Capabilities Section */} -
- Model Features - - -
- Allows the model to analyze and understand images, essential for - visual code assistance -
-- This model feature is for computer use like sonnet 3.5 support -
-+ This model feature is for computer use like sonnet 3.5 support +
{
@@ -274,12 +386,8 @@ const SettingsView = ({ onDone }: SettingsViewProps) => { max="5000" step="100" value={writeDelayMs} - onChange={(e) => setWriteDelayMs(parseInt(e.target.value))} - style={{ - flex: 1, - accentColor: "var(--vscode-button-background)", - height: "2px", - }} + onChange={(e) => setCachedStateField("writeDelayMs", parseInt(e.target.value))} + className="h-2 focus:outline-0 w-4/5 accent-vscode-button-background" /> {writeDelayMs}ms
@@ -311,7 +419,7 @@ const SettingsView = ({ onDone }: SettingsViewProps) => {
@@ -331,12 +439,10 @@ const SettingsView = ({ onDone }: SettingsViewProps) => { max="100" step="1" value={requestDelaySeconds} - onChange={(e) => setRequestDelaySeconds(parseInt(e.target.value))} - style={{ - flex: 1, - accentColor: "var(--vscode-button-background)", - height: "2px", - }} + onChange={(e) => + setCachedStateField("requestDelaySeconds", parseInt(e.target.value)) + } + className="h-2 focus:outline-0 w-4/5 accent-vscode-button-background" /> {requestDelaySeconds}s
@@ -367,7 +473,7 @@ const SettingsView = ({ onDone }: SettingsViewProps) => {
@@ -379,7 +485,7 @@ const SettingsView = ({ onDone }: SettingsViewProps) => {
@@ -430,35 +536,16 @@ const SettingsView = ({ onDone }: SettingsViewProps) => { {(allowedCommands ?? []).map((cmd, index) => (
{ max="1" step="0.01" value={soundVolume ?? 0.5} - onChange={(e) => setSoundVolume(parseFloat(e.target.value))} - style={{ - flexGrow: 1, - accentColor: "var(--vscode-button-background)", - height: "2px", - }} + onChange={(e) => setCachedStateField("soundVolume", parseFloat(e.target.value))} + className="h-2 focus:outline-0 w-4/5 accent-vscode-button-background" aria-label="Volume" /> @@ -592,8 +675,8 @@ const SettingsView = ({ onDone }: SettingsViewProps) => { max="60" step="1" value={rateLimitSeconds} - onChange={(e) => setRateLimitSeconds(parseInt(e.target.value))} - style={{ ...sliderStyle }} + onChange={(e) => setCachedStateField("rateLimitSeconds", parseInt(e.target.value))} + className="h-2 focus:outline-0 w-4/5 accent-vscode-button-background" /> {rateLimitSeconds}s
- v{version} + v{extensionState.version}
{ const [isCustomTemperature, setIsCustomTemperature] = useState(value !== undefined) - const [inputValue, setInputValue] = useState(value?.toString() ?? "0") - + const [inputValue, setInputValue] = useState(value) + useDebounce(() => onChange(inputValue), 50, [onChange, inputValue]) // Sync internal state with prop changes when switching profiles useEffect(() => { const hasCustomTemperature = value !== undefined setIsCustomTemperature(hasCustomTemperature) - setInputValue(value?.toString() ?? "0") + setInputValue(value) }, [value]) return ( @@ -26,9 +27,9 @@ export const TemperatureControl = ({ value, onChange, maxValue = 1 }: Temperatur const isChecked = e.target.checked setIsCustomTemperature(isChecked) if (!isChecked) { - onChange(undefined) // Unset the temperature - } else if (value !== undefined) { - onChange(value) // Use the value from apiConfiguration, if set + setInputValue(undefined) // Unset the temperature + } else { + setInputValue(value ?? 0) // Use the value from apiConfiguration, if set } }}> Use custom temperature @@ -48,27 +49,15 @@ export const TemperatureControl = ({ value, onChange, maxValue = 1 }: Temperatur }}>
Higher values make output more random, lower values make it more deterministic.
diff --git a/webview-ui/src/components/settings/__tests__/ApiOptions.test.tsx b/webview-ui/src/components/settings/__tests__/ApiOptions.test.tsx
index 36906929123..8f2d0dff893 100644
--- a/webview-ui/src/components/settings/__tests__/ApiOptions.test.tsx
+++ b/webview-ui/src/components/settings/__tests__/ApiOptions.test.tsx
@@ -50,7 +50,12 @@ describe("ApiOptions", () => {
const renderApiOptions = (props = {}) => {
render(