From 8d6c6867e6108ce4d8d680d66c0da2f7c7fa6384 Mon Sep 17 00:00:00 2001 From: yuneng Date: Tue, 22 Sep 2026 00:17:30 +0000 Subject: [PATCH] feat(ui): freeze config.yaml owned settings in the dashboard Router, fallback, alerting and UI settings controls now read the source map returned by GET /router/settings, GET /alerting/settings and GET /get/ui_settings and render a control as disabled with a tooltip when its source is config. Every other source stays editable Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- .../UISettings/PageVisibilitySettings.tsx | 37 +++++++---- .../TeamAdminEditableFieldsSettings.tsx | 35 ++++++---- .../UISettings/UISettings.test.tsx | 64 +++++++++++++++++- .../AdminSettings/UISettings/UISettings.tsx | 28 +++++++- .../RouterSettings/Fallbacks/AddFallbacks.tsx | 14 ++-- .../Fallbacks/Fallbacks.test.tsx | 55 +++++++++++++++- .../RouterSettings/Fallbacks/Fallbacks.tsx | 36 +++++++--- .../components/alerting/alerting_settings.tsx | 2 + .../dynamic_form.integration.test.tsx | 57 ++++++++++++++++ .../src/components/alerting/dynamic_form.tsx | 66 ++++++++++++------- .../LatencyBasedConfiguration.tsx | 20 ++++-- .../ReliabilityRetriesSection.tsx | 30 +++++---- .../router_settings/RouterSettingsForm.tsx | 16 ++++- .../RoutingStrategySelector.tsx | 8 ++- .../router_settings/TagFilteringToggle.tsx | 13 +++- .../components/router_settings/index.test.tsx | 46 +++++++++++++ .../src/components/router_settings/index.tsx | 4 ++ .../components/shared/ConfigOwnedField.tsx | 32 +++++++++ 18 files changed, 475 insertions(+), 88 deletions(-) create mode 100644 ui/litellm-dashboard/src/components/shared/ConfigOwnedField.tsx diff --git a/ui/litellm-dashboard/src/components/Settings/AdminSettings/UISettings/PageVisibilitySettings.tsx b/ui/litellm-dashboard/src/components/Settings/AdminSettings/UISettings/PageVisibilitySettings.tsx index cf449f0e869..0730342c2d5 100644 --- a/ui/litellm-dashboard/src/components/Settings/AdminSettings/UISettings/PageVisibilitySettings.tsx +++ b/ui/litellm-dashboard/src/components/Settings/AdminSettings/UISettings/PageVisibilitySettings.tsx @@ -4,6 +4,7 @@ import { ChevronDown } from "lucide-react"; import { useMemo, useState } from "react"; import { getAvailablePages } from "@/components/page_utils"; +import { ConfigOwnedField } from "@/components/shared/ConfigOwnedField"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Checkbox } from "@/components/ui/checkbox"; @@ -13,6 +14,7 @@ interface PageVisibilitySettingsProps { enabledPagesInternalUsers: string[] | null | undefined; enabledPagesPropertyDescription?: string; isUpdating: boolean; + configOwned?: boolean; onUpdate: (settings: { enabled_ui_pages_internal_users: string[] | null }) => void; } @@ -20,6 +22,7 @@ export default function PageVisibilitySettings({ enabledPagesInternalUsers, enabledPagesPropertyDescription, isUpdating, + configOwned = false, onUpdate, }: PageVisibilitySettingsProps) { const isPageVisibilitySet = enabledPagesInternalUsers !== null && enabledPagesInternalUsers !== undefined; @@ -93,11 +96,14 @@ export default function PageVisibilitySettings({ const checkboxId = `page-visibility-${page.page}`; return (