mirror of
https://github.com/smittix/intercept.git
synced 2026-06-08 14:11:54 -07:00
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:
@@ -245,7 +245,14 @@ const SSTVGeneral = (function() {
|
||||
renderGallery();
|
||||
showNotification('SSTV', 'New image decoded!');
|
||||
updateStatusUI('listening', 'Listening...');
|
||||
// Clear decode progress so signal monitor can take over
|
||||
const liveContent = document.getElementById('sstvGeneralLiveContent');
|
||||
if (liveContent) liveContent.innerHTML = '';
|
||||
} else if (data.status === 'detecting') {
|
||||
// Ignore detecting events if currently decoding (e.g. Doppler updates)
|
||||
const dot = document.getElementById('sstvGeneralStripDot');
|
||||
if (dot && dot.classList.contains('decoding')) return;
|
||||
|
||||
updateStatusUI('listening', data.message || 'Listening...');
|
||||
if (data.signal_level !== undefined) {
|
||||
renderSignalMonitor(data);
|
||||
|
||||
@@ -680,7 +680,14 @@ const SSTV = (function() {
|
||||
renderGallery();
|
||||
showNotification('SSTV', 'New image decoded!');
|
||||
updateStatusUI('listening', 'Listening...');
|
||||
// Clear decode progress so signal monitor can take over
|
||||
const liveContent = document.getElementById('sstvLiveContent');
|
||||
if (liveContent) liveContent.innerHTML = '';
|
||||
} else if (data.status === 'detecting') {
|
||||
// Ignore detecting events if currently decoding (e.g. Doppler updates)
|
||||
const dot = document.getElementById('sstvStripDot');
|
||||
if (dot && dot.classList.contains('decoding')) return;
|
||||
|
||||
updateStatusUI('listening', data.message || 'Listening...');
|
||||
if (data.signal_level !== undefined) {
|
||||
renderSignalMonitor(data);
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user