From 4c11de87b0d566bc6a7942a87371da0834b60c30 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Thu, 30 Jul 2026 07:28:30 -0500 Subject: [PATCH] Only hide cameras with ui.dashboard disabled from the All Cameras dashboard The settings camera selector and zone editor also filtered on ui.dashboard, so hiding a camera from the dashboard made its zones and masks uneditable in the UI (GH 23870). Drop those filters and correct the field title, help text, and reference docs to describe what the option actually does --- docs/docs/configuration/advanced/reference.md | 4 +++- frigate/config/camera/ui.py | 4 ++-- web/public/locales/en/config/cameras.json | 4 ++-- web/public/locales/en/config/global.json | 4 ++-- web/public/locales/en/views/settings.json | 2 +- web/src/components/settings/ZoneEditPane.tsx | 2 +- web/src/pages/Settings.tsx | 7 +------ 7 files changed, 12 insertions(+), 15 deletions(-) diff --git a/docs/docs/configuration/advanced/reference.md b/docs/docs/configuration/advanced/reference.md index e70eeeca83..802f3d7856 100644 --- a/docs/docs/configuration/advanced/reference.md +++ b/docs/docs/configuration/advanced/reference.md @@ -981,7 +981,9 @@ cameras: # Optional: Adjust sort order of cameras in the UI. Larger numbers come later (default: shown below) # By default the cameras are sorted alphabetically. order: 0 - # Optional: Whether or not to show the camera in the Frigate UI (default: shown below) + # Optional: Whether or not to show the camera on the default All Cameras live dashboard. + # The camera is still available everywhere else, including camera groups and settings + # (default: shown below) dashboard: True # Optional: Whether this camera is visible in review (the review page and its camera # filter, motion review, and the history view) (default: shown below) diff --git a/frigate/config/camera/ui.py b/frigate/config/camera/ui.py index 7db1c537fa..869a28b903 100644 --- a/frigate/config/camera/ui.py +++ b/frigate/config/camera/ui.py @@ -13,8 +13,8 @@ class CameraUiConfig(FrigateBaseModel): ) dashboard: bool = Field( default=True, - title="Show in UI", - description="Toggle whether this camera is visible everywhere in the Frigate UI. Disabling this will require manually editing the config to view this camera in the UI again.", + title="Show on Live dashboard", + description="Toggle whether this camera is visible on the default All Cameras live dashboard. The camera remains available everywhere else in the UI, including camera groups and settings.", ) review: bool = Field( default=True, diff --git a/web/public/locales/en/config/cameras.json b/web/public/locales/en/config/cameras.json index 2ddc30b6b8..248de30739 100644 --- a/web/public/locales/en/config/cameras.json +++ b/web/public/locales/en/config/cameras.json @@ -859,8 +859,8 @@ "description": "Numeric order used to sort the camera in the UI (default dashboard and lists); larger numbers appear later." }, "dashboard": { - "label": "Show in UI", - "description": "Toggle whether this camera is visible everywhere in the Frigate UI. Disabling this will require manually editing the config to view this camera in the UI again." + "label": "Show on Live dashboard", + "description": "Toggle whether this camera is visible on the default All Cameras live dashboard. The camera remains available everywhere else in the UI, including camera groups and settings." }, "review": { "label": "Show in review", diff --git a/web/public/locales/en/config/global.json b/web/public/locales/en/config/global.json index 9e3a71b7a8..bf7ef337cc 100644 --- a/web/public/locales/en/config/global.json +++ b/web/public/locales/en/config/global.json @@ -1543,8 +1543,8 @@ "description": "Numeric order used to sort the camera in the UI (default dashboard and lists); larger numbers appear later." }, "dashboard": { - "label": "Show in UI", - "description": "Toggle whether this camera is visible everywhere in the Frigate UI. Disabling this will require manually editing the config to view this camera in the UI again." + "label": "Show on Live dashboard", + "description": "Toggle whether this camera is visible on the default All Cameras live dashboard. The camera remains available everywhere else in the UI, including camera groups and settings." }, "review": { "label": "Show in review", diff --git a/web/public/locales/en/views/settings.json b/web/public/locales/en/views/settings.json index 165569638d..817c9f66c4 100644 --- a/web/public/locales/en/views/settings.json +++ b/web/public/locales/en/views/settings.json @@ -499,7 +499,7 @@ "webuiUrlHelp": "URL to visit the camera's web UI directly from the Debug view. Leave blank to disable the link.", "webuiUrlInvalid": "Must be a valid URL (e.g., https://example.com).", "dashboardLabel": "Show on Live dashboard", - "dashboardHelp": "Show this camera on the Live dashboard.", + "dashboardHelp": "Show this camera on the default All Cameras live dashboard. It remains available everywhere else, including camera groups.", "reviewLabel": "Show in Review", "reviewHelp": "Show this camera in Review, including the camera filter, motion review, and the history view." } diff --git a/web/src/components/settings/ZoneEditPane.tsx b/web/src/components/settings/ZoneEditPane.tsx index 6132fb9072..6e49307542 100644 --- a/web/src/components/settings/ZoneEditPane.tsx +++ b/web/src/components/settings/ZoneEditPane.tsx @@ -78,7 +78,7 @@ export default function ZoneEditPane({ } return Object.values(config.cameras) - .filter((conf) => conf.ui.dashboard && conf.enabled_in_config) + .filter((conf) => conf.enabled_in_config) .sort((aConf, bConf) => aConf.ui.order - bConf.ui.order); }, [config]); diff --git a/web/src/pages/Settings.tsx b/web/src/pages/Settings.tsx index 6f445f0c47..e2666f57e3 100644 --- a/web/src/pages/Settings.tsx +++ b/web/src/pages/Settings.tsx @@ -706,12 +706,7 @@ export default function Settings() { } return Object.values(config.cameras) - .filter( - (conf) => - conf.ui.dashboard && - conf.enabled_in_config && - !isReplayCamera(conf.name), - ) + .filter((conf) => conf.enabled_in_config && !isReplayCamera(conf.name)) .sort((aConf, bConf) => aConf.ui.order - bConf.ui.order); }, [config]);