From aa6a5812a65bea13e22559c0d46c323cfc9d190d 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 8dcc3e5945..2b921caa1c 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 dec454e248157d1c8eae70281094d85b403ba880 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 2b921caa1c..89ac19c2ba 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 },