What happens
While a recording is running on Standalone, the recording health monitor (src/stores/video.ts, the 15 s setInterval started in startRecording) shows
Cannot get size of the video output file. Please check if the file exists. This can indicate a problem with the recording.
and returns without clearing the interval. showDialog unmounts and mounts a fresh dialog on every call, so as long as getFileStats keeps reporting the file as missing the dialog comes back every 15 seconds and the user cannot get rid of it.
Same defect class as #2946, which was about the RTSP activation dialog reopening on every 1 s poll.
Why it is filed on its own
src/stores/video.ts now works around the reopening behavior in five separate places, each hand-rolled: rtspUnsupportedWarned, notGrowingDialogOpen/suppressNotGrowingDialogs, noIpSelectedWarningIssued, selectedIpNotAvailableWarningIssued, and the RTSP activation backoff added in #2948. The sibling check right below the offending one (the "output file is not growing" dialog) already has such a guard, which is why it does not spam.
Rather than adding a sixth copy, the fix worth making is a shared once-per-reason notification helper next to useInteractionDialog (src/composables/interactionDialog.ts), or a dedupe inside showDialog for a message that is already mounted, keeping the awaited-promise semantics intact. That covers all five existing guards and this bug.
Notes
- The message is also not actionable and names an internal filename; worth rewriting when the guard lands.
- Standalone only: the Web monitor branch counts chunks instead of reading file stats.
What happens
While a recording is running on Standalone, the recording health monitor (
src/stores/video.ts, the 15 ssetIntervalstarted instartRecording) showsand
returns without clearing the interval.showDialogunmounts and mounts a fresh dialog on every call, so as long asgetFileStatskeeps reporting the file as missing the dialog comes back every 15 seconds and the user cannot get rid of it.Same defect class as #2946, which was about the RTSP activation dialog reopening on every 1 s poll.
Why it is filed on its own
src/stores/video.tsnow works around the reopening behavior in five separate places, each hand-rolled:rtspUnsupportedWarned,notGrowingDialogOpen/suppressNotGrowingDialogs,noIpSelectedWarningIssued,selectedIpNotAvailableWarningIssued, and the RTSP activation backoff added in #2948. The sibling check right below the offending one (the "output file is not growing" dialog) already has such a guard, which is why it does not spam.Rather than adding a sixth copy, the fix worth making is a shared once-per-reason notification helper next to
useInteractionDialog(src/composables/interactionDialog.ts), or a dedupe insideshowDialogfor a message that is already mounted, keeping the awaited-promise semantics intact. That covers all five existing guards and this bug.Notes