feat(udp): spot clicks switch the decoder's mode

Configure (message 15), mode field only, every other field sent as
no-change: an FT4 spot clicked while WSJT-X sits in FT8 lands the operator
ready to decode instead of staring at gibberish. Sent to every instance
heard this session — one already in the right mode treats it as a no-op —
and only for modes the decoder actually speaks (FT8/FT4/JT65/JT9/MSK144/
Q65/FST4); CW and SSB are none of its business. Toggle in the Connections
panel, on by default.
This commit is contained in:
2026-08-30 15:33:07 +02:00
parent daabbc63c7
commit 9bd6d988aa
8 changed files with 127 additions and 8 deletions
+5 -1
View File
@@ -33,7 +33,7 @@ import {
GetSolarData,
GetQSORate,
LoTWUserInfo,
OperatingDefaultForBand, ActiveRadioMyRig,
OperatingDefaultForBand, ActiveRadioMyRig, ConfigureDecoderMode,
LogUDPLoggedADIF,
ListCountries,
GetWinkeyerSettings, SaveWinkeyerSettings, ListSerialPorts, GetWinkeyerStatus,
@@ -3347,6 +3347,10 @@ export default function App() {
void tuneRigCAT(s.freq_hz, m).then(() => window.setTimeout(zoom, 300));
} else zoom();
if (m) applyModeFromSpot(m);
// And the DECODER follows too: an FT4 spot clicked while WSJT-X sits in
// FT8 switches its mode (Configure, message 15). The backend filters —
// only modes the decoder speaks, only when the option is on.
if (m) ConfigureDecoderMode(m).catch(() => {});
onCallsignInput(s.dx_call, { force: true });
applySpotRefs((s as any).pota_ref, (s as any).sota_ref);
if (s.dx_call?.trim()) restartRecordingForNewTarget(s.dx_call);