diff --git a/web/src/components/card/AnimatedEventCard.tsx b/web/src/components/card/AnimatedEventCard.tsx
index a04804641..20d39efe2 100644
--- a/web/src/components/card/AnimatedEventCard.tsx
+++ b/web/src/components/card/AnimatedEventCard.tsx
@@ -50,6 +50,27 @@ export function AnimatedEventCard({
fetchPreviews: !currentHour,
});
+ const tooltipText = useMemo(() => {
+ if (event?.data?.metadata?.title) {
+ return event.data.metadata.title;
+ }
+
+ return (
+ `${[
+ ...new Set([
+ ...(event.data.objects || []),
+ ...(event.data.sub_labels || []),
+ ...(event.data.audio || []),
+ ]),
+ ]
+ .filter((item) => item !== undefined && !item.includes("-verified"))
+ .map((text) => text.charAt(0).toUpperCase() + text.substring(1))
+ .sort()
+ .join(", ")
+ .replaceAll("-verified", "")} ` + t("detected")
+ );
+ }, [event, t]);
+
// visibility
const [windowVisible, setWindowVisible] = useState(true);
@@ -220,20 +241,7 @@ export function AnimatedEventCard({
)}
-
- {`${[
- ...new Set([
- ...(event.data.objects || []),
- ...(event.data.sub_labels || []),
- ...(event.data.audio || []),
- ]),
- ]
- .filter((item) => item !== undefined && !item.includes("-verified"))
- .map((text) => text.charAt(0).toUpperCase() + text.substring(1))
- .sort()
- .join(", ")
- .replaceAll("-verified", "")} ` + t("detected")}
-
+ {tooltipText}
);
}
diff --git a/web/src/types/ws.ts b/web/src/types/ws.ts
index 3a464a275..1120aec67 100644
--- a/web/src/types/ws.ts
+++ b/web/src/types/ws.ts
@@ -30,7 +30,7 @@ type FrigateObjectState = {
};
export interface FrigateReview {
- type: "new" | "update" | "end";
+ type: "new" | "update" | "end" | "genai";
before: ReviewSegment;
after: ReviewSegment;
}
diff --git a/web/src/views/live/LiveDashboardView.tsx b/web/src/views/live/LiveDashboardView.tsx
index ddd6ccd51..69f4c0d53 100644
--- a/web/src/views/live/LiveDashboardView.tsx
+++ b/web/src/views/live/LiveDashboardView.tsx
@@ -114,7 +114,11 @@ export default function LiveDashboardView({
// if event is ended and was saved, update events list
if (eventUpdate.after.severity == "alert") {
- if (eventUpdate.type == "end" || eventUpdate.type == "new") {
+ if (
+ eventUpdate.type == "end" ||
+ eventUpdate.type == "new" ||
+ eventUpdate.type == "genai"
+ ) {
setTimeout(
() => updateEvents(),
eventUpdate.type == "end" ? 1000 : 6000,