From a1ceea978b8d923b6bb6a228a6ca773434a0d7ec Mon Sep 17 00:00:00 2001 From: rouggy Date: Thu, 30 Jul 2026 23:34:23 +0200 Subject: [PATCH] fix: no play-on-air button on CW MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In CW the transmitter builds its tone from the keyer and ignores the DAX TX audio path, so the button keyed the rig and sent silence. Confirmed on a Flex: our side reported the playback as done while nothing went out. Only the button goes. The row stays, or a CW operator who stopped their recording would be left with no way to resume it — and the recording itself is still worth keeping. --- changelog.json | 6 ++++-- frontend/src/App.tsx | 25 ++++++++++++++++--------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/changelog.json b/changelog.json index 7c70b8d..6fdb635 100644 --- a/changelog.json +++ b/changelog.json @@ -5,12 +5,14 @@ "en": [ "FlexRadio: in split, OpsLog stays on the receive slice instead of following the transmitter.", "QSO recording works on CW again. Your own sidetone is not in the file, the other station is.", - "Playing a recording on the air now says why when it cannot — most often no audio output to the radio is configured." + "Playing a recording on the air now says why when it cannot — most often no audio output to the radio is configured.", + "The play-on-air button is hidden on CW: the transmitter builds its tone from the keyer and ignores the audio path. Recording, stopping and resuming stay available." ], "fr": [ "FlexRadio : en split, OpsLog reste sur la slice de réception au lieu de suivre l'émission.", "L'enregistrement des QSO fonctionne à nouveau en CW. Votre propre signal d'écoute n'est pas dans le fichier, celui du correspondant l'est.", - "L'émission d'un enregistrement indique désormais pourquoi elle échoue — le plus souvent aucune sortie audio vers la radio n'est configurée." + "L'émission d'un enregistrement indique désormais pourquoi elle échoue — le plus souvent aucune sortie audio vers la radio n'est configurée.", + "Le bouton d'émission de l'enregistrement est masqué en CW : l'émetteur fabrique sa tonalité à partir du manipulateur et ignore la chaîne audio. Enregistrer, arrêter et reprendre restent disponibles." ] }, { diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index ae256c0..f609d29 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -3739,17 +3739,24 @@ export default function App() { {/* A stopped take: play it to the station being worked, or carry on recording. Both sit where the counter is, which has shifted left to make room. */} + {/* A stopped take: resume it, and — on PHONE only — play it to the station + being worked. In CW the transmitter builds its tone from the keyer and + ignores the DAX TX audio path entirely, so the button would key the rig + and send silence. The row itself stays, or a CW operator who stopped + would be left with no way to resume. */} {recording && recStopped && RECORDABLE_MODES.has(mode.toUpperCase()) && ( - + {PHONE_MODES.has(mode.toUpperCase()) && ( + + )}