From 7c6d15179d8340124a1e3790770dbbb2ae922c19 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Tue, 10 Mar 2026 21:54:00 -0400 Subject: [PATCH] feat: settings sidebar layout + card header style Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/views/SettingsView.vue | 184 +++++++++++++++++++--------- 1 file changed, 125 insertions(+), 59 deletions(-) diff --git a/frontend/src/views/SettingsView.vue b/frontend/src/views/SettingsView.vue index 2393883..ef18451 100644 --- a/frontend/src/views/SettingsView.vue +++ b/frontend/src/views/SettingsView.vue @@ -28,9 +28,11 @@ const exporting = ref(false); const restoring = ref(false); const restoreFileInput = ref(null); -// Tab state — persisted across navigation -const activeTab = ref(localStorage.getItem("settings_tab") ?? "general"); -watch(activeTab, (v) => localStorage.setItem("settings_tab", v)); +// Migrate stored "admin" → "config"; unknown tabs fall back to "general" +const VALID_TABS = new Set(["general", "account", "notifications", "integrations", "data", "config", "users", "logs"]); +const _stored = localStorage.getItem("settings_tab") ?? "general"; +const activeTab = ref(VALID_TABS.has(_stored) ? (_stored === "admin" ? "config" : _stored) : "general"); +watch(activeTab, (v) => localStorage.setItem("settings_tab", v === "admin" ? "config" : v)); // Chat retention const chatRetentionDays = ref(90); @@ -440,24 +442,32 @@ function hostname(url: string): string {