Debug replay fixes (#23276)

* filter replay camera from camera selectors

* add face rec and lpr to replay configuration sheet

* add missing config topic subscriptions in embeddings maintainer

* pop replay camera from config object when stopping
This commit is contained in:
Josh Hawkins
2026-05-21 08:12:53 -06:00
committed by GitHub
parent 01c82d6921
commit 555ef89800
18 changed files with 119 additions and 32 deletions
@@ -44,6 +44,7 @@ import {
} from "@/components/ui/tooltip";
import type { ProfileState } from "@/types/profile";
import { getProfileColor } from "@/utils/profileColors";
import { isReplayCamera } from "@/utils/cameraUtil";
import { cn } from "@/lib/utils";
import {
Select,
@@ -87,7 +88,10 @@ export default function CameraManagementView({
const enabledCameras = useMemo(() => {
if (config) {
return Object.keys(config.cameras)
.filter((camera) => config.cameras[camera].enabled_in_config)
.filter(
(camera) =>
config.cameras[camera].enabled_in_config && !isReplayCamera(camera),
)
.sort((a, b) => {
const orderA = config.cameras[a].ui?.order ?? 0;
const orderB = config.cameras[b].ui?.order ?? 0;
@@ -180,7 +184,11 @@ export default function CameraManagementView({
const disabledCameras = useMemo(() => {
if (config) {
return Object.keys(config.cameras)
.filter((camera) => !config.cameras[camera].enabled_in_config)
.filter(
(camera) =>
!config.cameras[camera].enabled_in_config &&
!isReplayCamera(camera),
)
.sort();
}
return [];
@@ -188,7 +196,9 @@ export default function CameraManagementView({
const allCameras = useMemo(() => {
if (config) {
return Object.keys(config.cameras).sort();
return Object.keys(config.cameras)
.filter((camera) => !isReplayCamera(camera))
.sort();
}
return [];
}, [config]);
@@ -16,6 +16,7 @@ import FrigatePlusCurrentModelSummary from "@/views/settings/components/FrigateP
import { useDocDomain } from "@/hooks/use-doc-domain";
import { CameraNameLabel } from "@/components/camera/FriendlyNameLabel";
import { FrigateConfig } from "@/types/frigateConfig";
import { isReplayCamera } from "@/utils/cameraUtil";
import type { SettingsPageProps } from "@/views/settings/SingleSectionPage";
export default function FrigatePlusSettingsView(_props: SettingsPageProps) {
@@ -139,8 +140,9 @@ export default function FrigatePlusSettingsView(_props: SettingsPageProps) {
</tr>
</thead>
<tbody>
{Object.entries(config.cameras).map(
([name, camera]) => (
{Object.entries(config.cameras)
.filter(([name]) => !isReplayCamera(name))
.map(([name, camera]) => (
<tr
key={name}
className="border-b border-secondary"
@@ -156,8 +158,7 @@ export default function FrigatePlusSettingsView(_props: SettingsPageProps) {
)}
</td>
</tr>
),
)}
))}
</tbody>
</table>
</div>
+4 -1
View File
@@ -19,6 +19,7 @@ import type { JsonObject } from "@/types/configForm";
import type { ProfileState, ProfilesApiResponse } from "@/types/profile";
import { getProfileColor } from "@/utils/profileColors";
import { PROFILE_ELIGIBLE_SECTIONS } from "@/utils/configUtil";
import { isReplayCamera } from "@/utils/cameraUtil";
import { resolveCameraName } from "@/hooks/use-camera-friendly-name";
import { useDocDomain } from "@/hooks/use-doc-domain";
import { cn } from "@/lib/utils";
@@ -145,7 +146,9 @@ export default function ProfilesView({
if (!config || allProfileNames.length === 0) return {};
const data: Record<string, Record<string, string[]>> = {};
const cameras = Object.keys(config.cameras).sort();
const cameras = Object.keys(config.cameras)
.filter((name) => !isReplayCamera(name))
.sort();
for (const profile of allProfileNames) {
data[profile] = {};