From 3e51d4c1d0ccb75aaedf906825ed95b0ab966279 Mon Sep 17 00:00:00 2001 From: UtkarshUsername Date: Fri, 3 Apr 2026 15:35:25 +0530 Subject: [PATCH 1/3] Move restore defaults into general settings panel - Add a section header action for restoring defaults - Scope the restore button to General settings instead of the shared layout - Remove the layout-level refresh key workaround --- .../components/settings/SettingsPanels.tsx | 4 +-- apps/web/src/routes/settings.general.tsx | 31 +++++++++++++++-- apps/web/src/routes/settings.tsx | 34 ++----------------- 3 files changed, 33 insertions(+), 36 deletions(-) diff --git a/apps/web/src/components/settings/SettingsPanels.tsx b/apps/web/src/components/settings/SettingsPanels.tsx index c8766f2643..28df9f236a 100644 --- a/apps/web/src/components/settings/SettingsPanels.tsx +++ b/apps/web/src/components/settings/SettingsPanels.tsx @@ -420,7 +420,7 @@ export function useSettingsRestore(onRestored?: () => void) { }; } -export function GeneralSettingsPanel() { +export function GeneralSettingsPanel({ headerAction }: { headerAction?: ReactNode }) { const { theme, setTheme } = useTheme(); const settings = useSettings(); const { updateSettings } = useUpdateSettings(); @@ -684,7 +684,7 @@ export function GeneralSettingsPanel() { return ( - + + setRestoreSignal((value) => value + 1), + ); + + return ( + void restoreDefaults()} + > + + Restore defaults + + } + /> + ); +} export const Route = createFileRoute("/settings/general")({ - component: GeneralSettingsPanel, + component: GeneralSettingsRoute, }); diff --git a/apps/web/src/routes/settings.tsx b/apps/web/src/routes/settings.tsx index 482a56b685..b2a676f294 100644 --- a/apps/web/src/routes/settings.tsx +++ b/apps/web/src/routes/settings.tsx @@ -1,18 +1,10 @@ -import { RotateCcwIcon } from "lucide-react"; import { Outlet, createFileRoute, redirect } from "@tanstack/react-router"; -import { useEffect, useState } from "react"; +import { useEffect } from "react"; -import { useSettingsRestore } from "../components/settings/SettingsPanels"; -import { Button } from "../components/ui/button"; import { SidebarInset, SidebarTrigger } from "../components/ui/sidebar"; import { isElectron } from "../env"; function SettingsContentLayout() { - const [restoreSignal, setRestoreSignal] = useState(0); - const { changedSettingLabels, restoreDefaults } = useSettingsRestore(() => - setRestoreSignal((value) => value + 1), - ); - useEffect(() => { const onKeyDown = (event: KeyboardEvent) => { if (event.defaultPrevented) return; @@ -36,17 +28,6 @@ function SettingsContentLayout() {
Settings -
- -
)} @@ -56,21 +37,10 @@ function SettingsContentLayout() { Settings -
- -
)} -
+
From 74466a193267e0c7d32e2d425522226aae71e1cb Mon Sep 17 00:00:00 2001 From: UtkarshUsername Date: Fri, 3 Apr 2026 16:01:07 +0530 Subject: [PATCH 2/3] Move restore defaults to settings layout - Show the restore defaults action from the shared settings shell - Keep the general settings panel focused on section content - Remount the outlet after restore so settings refresh cleanly --- .../components/settings/SettingsPanels.tsx | 4 +- apps/web/src/routes/settings.general.tsx | 31 +------------- apps/web/src/routes/settings.tsx | 42 +++++++++++++++++-- 3 files changed, 43 insertions(+), 34 deletions(-) diff --git a/apps/web/src/components/settings/SettingsPanels.tsx b/apps/web/src/components/settings/SettingsPanels.tsx index 28df9f236a..c8766f2643 100644 --- a/apps/web/src/components/settings/SettingsPanels.tsx +++ b/apps/web/src/components/settings/SettingsPanels.tsx @@ -420,7 +420,7 @@ export function useSettingsRestore(onRestored?: () => void) { }; } -export function GeneralSettingsPanel({ headerAction }: { headerAction?: ReactNode }) { +export function GeneralSettingsPanel() { const { theme, setTheme } = useTheme(); const settings = useSettings(); const { updateSettings } = useUpdateSettings(); @@ -684,7 +684,7 @@ export function GeneralSettingsPanel({ headerAction }: { headerAction?: ReactNod return ( - + - setRestoreSignal((value) => value + 1), - ); - - return ( - void restoreDefaults()} - > - - Restore defaults - - } - /> - ); -} +import { GeneralSettingsPanel } from "../components/settings/SettingsPanels"; export const Route = createFileRoute("/settings/general")({ - component: GeneralSettingsRoute, + component: GeneralSettingsPanel, }); diff --git a/apps/web/src/routes/settings.tsx b/apps/web/src/routes/settings.tsx index b2a676f294..98acbc52be 100644 --- a/apps/web/src/routes/settings.tsx +++ b/apps/web/src/routes/settings.tsx @@ -1,10 +1,20 @@ -import { Outlet, createFileRoute, redirect } from "@tanstack/react-router"; -import { useEffect } from "react"; +import { RotateCcwIcon } from "lucide-react"; +import { Outlet, createFileRoute, redirect, useLocation } from "@tanstack/react-router"; +import { useEffect, useState } from "react"; +import { useSettingsRestore } from "../components/settings/SettingsPanels"; +import { Button } from "../components/ui/button"; import { SidebarInset, SidebarTrigger } from "../components/ui/sidebar"; import { isElectron } from "../env"; function SettingsContentLayout() { + const location = useLocation(); + const [restoreSignal, setRestoreSignal] = useState(0); + const { changedSettingLabels, restoreDefaults } = useSettingsRestore(() => + setRestoreSignal((value) => value + 1), + ); + const showRestoreDefaults = location.pathname === "/settings/general"; + useEffect(() => { const onKeyDown = (event: KeyboardEvent) => { if (event.defaultPrevented) return; @@ -28,6 +38,19 @@ function SettingsContentLayout() {
Settings + {showRestoreDefaults ? ( +
+ +
+ ) : null}
)} @@ -37,10 +60,23 @@ function SettingsContentLayout() { Settings + {showRestoreDefaults ? ( +
+ +
+ ) : null} )} -
+
From f875f19fe5742b50c1c16c184e5490990d8227f6 Mon Sep 17 00:00:00 2001 From: UtkarshUsername Date: Fri, 3 Apr 2026 16:08:36 +0530 Subject: [PATCH 3/3] Restore settings header spacing - Reserve header height so the restore defaults button no longer shifts layout - Keep the settings title row aligned on small screens --- apps/web/src/routes/settings.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/src/routes/settings.tsx b/apps/web/src/routes/settings.tsx index 98acbc52be..2f2fd077e1 100644 --- a/apps/web/src/routes/settings.tsx +++ b/apps/web/src/routes/settings.tsx @@ -35,7 +35,7 @@ function SettingsContentLayout() {
{!isElectron && (
-
+
Settings {showRestoreDefaults ? (