From 504a71ac723be35ff97c17f9a1f0bc262ef762f9 Mon Sep 17 00:00:00 2001 From: Hannes Rudolph Date: Fri, 23 Jan 2026 20:03:01 -0700 Subject: [PATCH] feat: add ResetToDefault component for settings with defaults MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add ResetToDefault component with ↺ icon that shows when a setting differs from its default value - Tooltip shows the default value (e.g., 'Reset to default (true)') - Component only renders when current value !== default - Add translation keys for boolean/empty/resetToDefault formatting - Integrate with BrowserSettings as proof of concept: - browserToolEnabled checkbox - browserViewportSize dropdown - screenshotQuality slider - Add comprehensive tests for visibility, functionality, and styling --- .../components/settings/BrowserSettings.tsx | 40 ++++-- .../components/settings/ResetToDefault.tsx | 80 ++++++++++++ .../__tests__/ResetToDefault.spec.tsx | 114 ++++++++++++++++++ webview-ui/src/i18n/locales/en/settings.json | 6 +- 4 files changed, 230 insertions(+), 10 deletions(-) create mode 100644 webview-ui/src/components/settings/ResetToDefault.tsx create mode 100644 webview-ui/src/components/settings/__tests__/ResetToDefault.spec.tsx diff --git a/webview-ui/src/components/settings/BrowserSettings.tsx b/webview-ui/src/components/settings/BrowserSettings.tsx index 9202d6b79f..6484b55da8 100644 --- a/webview-ui/src/components/settings/BrowserSettings.tsx +++ b/webview-ui/src/components/settings/BrowserSettings.tsx @@ -18,6 +18,7 @@ import { useAppTranslation } from "@/i18n/TranslationContext" import { vscode } from "@/utils/vscode" import { buildDocLink } from "@src/utils/docLinks" +import { ResetToDefault } from "./ResetToDefault" import { SearchableSetting } from "./SearchableSetting" import { Section } from "./Section" import { SectionHeader } from "./SectionHeader" @@ -117,11 +118,18 @@ export const BrowserSettings = ({ settingId="browser-enable" section="browser" label={t("settings:browser.enable.label")}> - setCachedStateField("browserToolEnabled", e.target.checked)}> - {t("settings:browser.enable.label")} - +
+ setCachedStateField("browserToolEnabled", e.target.checked)}> + {t("settings:browser.enable.label")} + + setCachedStateField("browserToolEnabled", undefined)} + /> +
- +
+ + setCachedStateField("browserViewportSize", undefined)} + /> +