From d42e6669e13fef38f9ef7816e6121179498b6376 Mon Sep 17 00:00:00 2001 From: rouggy Date: Fri, 31 Jul 2026 18:50:48 +0200 Subject: [PATCH] fix: name the field when playback has no output device MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit An operator emptied "Recording mic" and got "no audio output to the radio is configured", and read it as a restriction: that a recording of the other station alone cannot be played back. No such rule exists — the mic is an INPUT, one more source to record, while this message is about the OUTPUT that feeds the transmitter. The message now names the setting exactly as the panel labels it, and the log line carries the other two device values so the next report says which field was actually empty. --- app.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app.go b/app.go index 00c7b7a..3128b6e 100644 --- a/app.go +++ b/app.go @@ -7737,8 +7737,13 @@ func (a *App) QSOAudioPlayOnAir() error { // The recorder needs an INPUT from the radio; playing back needs an // OUTPUT into it, which is a different device and may well be unset on a // station that only ever recorded. - applog.Printf("qso-rec: play refused — no output device to the radio configured (Settings → Audio)") - return fmt.Errorf("no audio output to the radio is configured — set it in Settings → Audio") + // Name the FIELD, not the concept. An operator who had just emptied + // "Recording mic" read this as "you cannot play back unless you also + // record yourself" — a restriction that does not exist. The mic is an + // input; this is about the output that feeds the transmitter. + applog.Printf("qso-rec: play refused — Settings → Audio → \"To Radio (TX out)\" is empty (from_radio=%q, mic=%q)", + cfgEarly.FromRadio, cfgEarly.RecordingDevice) + return fmt.Errorf("Settings → Audio → \"To Radio (TX out)\" is empty — that is the output that feeds the transmitter (the recording mic has nothing to do with playing back)") } // A plain WAV in the data dir, overwritten each time: the player takes a // path, and MP3 encoding would add seconds to something the operator is