Fix Doppler detecting events clobbering decode progress UI

The Doppler tracking thread emits detecting events every 5s from a
separate thread, unaware of decode state. The previous to_dict() change
included signal_level for ALL detecting events, causing the frontend to
replace the decode progress canvas with the signal monitor mid-decode.

Fix: use None as default for signal_level so only signal-metrics events
(which explicitly set the value) include the field. Also add a frontend
guard to ignore detecting events while the UI is in decoding state.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Smittix
2026-02-07 11:37:14 +00:00
parent 249fccadd3
commit 1e249a0eec
3 changed files with 19 additions and 5 deletions

View File

@@ -92,8 +92,8 @@ class DecodeProgress:
progress_percent: int = 0
message: str | None = None
image: SSTVImage | None = None
signal_level: int = 0 # 0-100 RMS audio level
sstv_tone: str | None = None # 'leader', 'sync', 'pixel', None
signal_level: int | None = None # 0-100 RMS audio level, None = not measured
sstv_tone: str | None = None # 'leader', 'sync', 'noise', None
def to_dict(self) -> dict:
result: dict = {
@@ -107,10 +107,10 @@ class DecodeProgress:
result['message'] = self.message
if self.image:
result['image'] = self.image.to_dict()
if self.status == 'detecting':
if self.signal_level is not None:
result['signal_level'] = self.signal_level
if self.sstv_tone:
result['sstv_tone'] = self.sstv_tone
if self.sstv_tone:
result['sstv_tone'] = self.sstv_tone
return result