From 943dbae320a35c9639c7560c5ac44ec7e17aa072 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ant=C3=B4nio=20Cardoso?= Date: Tue, 24 Mar 2026 13:05:26 -0300 Subject: [PATCH 1/2] frontend: components: video-manager: VideoThumbnail: add autoplay prop Automatically starts continuous thumbnail fetching on mount when both autoplay and register are true. Used in the vehicle setup page tooltip so thumbnails appear on hover without manual interaction. --- .../src/components/vehiclesetup/overview/VideoOverview.vue | 3 ++- .../frontend/src/components/video-manager/VideoThumbnail.vue | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/core/frontend/src/components/vehiclesetup/overview/VideoOverview.vue b/core/frontend/src/components/vehiclesetup/overview/VideoOverview.vue index b3d4990f8d..0e4acc35ec 100755 --- a/core/frontend/src/components/vehiclesetup/overview/VideoOverview.vue +++ b/core/frontend/src/components/vehiclesetup/overview/VideoOverview.vue @@ -23,9 +23,10 @@ diff --git a/core/frontend/src/components/video-manager/VideoThumbnail.vue b/core/frontend/src/components/video-manager/VideoThumbnail.vue index 72bbe68331..6056f39157 100644 --- a/core/frontend/src/components/video-manager/VideoThumbnail.vue +++ b/core/frontend/src/components/video-manager/VideoThumbnail.vue @@ -131,6 +131,7 @@ export default Vue.extend({ }, register: Boolean, disabled: Boolean, + autoplay: Boolean, }, data() { return { @@ -180,6 +181,10 @@ export default Vue.extend({ }, mounted() { this.update_task.setAction(this.updateThumbnail) + if (this.autoplay && this.register) { + this.continuous_mode = true + video.startGetThumbnailForDevice(this.source) + } }, beforeDestroy() { clearTimeout(this.stopDebounceTimer) From 4f549d90733a18708bd3e372ad755bf640e3e66f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ant=C3=B4nio=20Cardoso?= Date: Tue, 24 Mar 2026 14:34:17 -0300 Subject: [PATCH 2/2] frontend: components: vehiclesetup: VideoOverview: only show devices with streams Filter out video devices that have no streams configured from the vehicle setup overview, so duplicate sources from the same camera don't appear. --- .../src/components/vehiclesetup/overview/VideoOverview.vue | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/frontend/src/components/vehiclesetup/overview/VideoOverview.vue b/core/frontend/src/components/vehiclesetup/overview/VideoOverview.vue index 0e4acc35ec..b44c6cd006 100755 --- a/core/frontend/src/components/vehiclesetup/overview/VideoOverview.vue +++ b/core/frontend/src/components/vehiclesetup/overview/VideoOverview.vue @@ -25,7 +25,7 @@ v-if="value" width="280" :source="device.source" - register + :register="streams_for_device[device.name] !== undefined" autoplay /> @@ -76,7 +76,8 @@ export default Vue.extend({ const valid_devices = devices.filter( (device) => !device.name.toLocaleLowerCase().startsWith('fake') && !device.name.toLocaleLowerCase().startsWith('bcm') - && has_supported_encode(device), + && has_supported_encode(device) + && !available_streams_from_device(video.available_streams, device).isEmpty(), ) return valid_devices },