Compare commits

..

No commits in common. "master" and "v2.4.1" have entirely different histories.

6 changed files with 53 additions and 125 deletions

View File

@ -15,7 +15,7 @@ endif()
set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0" CACHE STRING "Minimum OS X deployment version")
set(PROJECT_NAME FreeDV)
set(PROJECT_VERSION 2.4.2)
set(PROJECT_VERSION 2.4.1)
set(PROJECT_DESCRIPTION "HF Digital Voice for Radio Amateurs")
set(PROJECT_HOMEPAGE_URL "https://freedv.org")
@ -59,12 +59,12 @@ endif(NOT DEFINED LINUX)
# Adds a tag to the end of the version string. Leave empty
# for official release builds.
if(NOT DEFINED FREEDV_VERSION_TAG)
set(FREEDV_VERSION_TAG "dev")
set(FREEDV_VERSION_TAG "")
# Uncomment the below definition to cause the build to expire
# six months from the day it was built. This should be commented
# for official releases.
add_definitions(-DUNOFFICIAL_RELEASE)
#add_definitions(-DUNOFFICIAL_RELEASE)
endif(NOT DEFINED FREEDV_VERSION_TAG)
# Prevent in-source builds to protect automake/autoconf config.

View File

@ -139,30 +139,30 @@ sent <strong>to</strong> your radio for transmission over the air.</p>
<col style="width: 42%" />
</colgroup>
<thead>
<tr>
<tr class="header">
<th>Tab</th>
<th>Sound Device</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<tr class="odd">
<td>Receive Tab</td>
<td>Input To Computer From Radio</td>
<td>The off air FreeDV signal <strong>from</strong> your radio rig
interface to your computer</td>
</tr>
<tr>
<tr class="even">
<td>Receive Tab</td>
<td>Output From Computer To Speaker/Headphones</td>
<td>The decoded audio from your computer to your Speaker/Headphones</td>
</tr>
<tr>
<tr class="odd">
<td>Transmit Tab</td>
<td>Input From Microphone To Computer</td>
<td>Your voice from the microphone to your computer</td>
</tr>
<tr>
<tr class="even">
<td>Transmit Tab</td>
<td>Output From Computer To Radio</td>
<td>The FreeDV signal from your computer sent <strong>to</strong> your
@ -254,21 +254,21 @@ locations depending on platform:</p>
<col style="width: 86%" />
</colgroup>
<thead>
<tr>
<tr class="header">
<th>Platform</th>
<th>Typical Location</th>
</tr>
</thead>
<tbody>
<tr>
<tr class="odd">
<td>Windows</td>
<td>C:\Program Files\FreeDV [version]\share\freedv-gui\wav</td>
</tr>
<tr>
<tr class="even">
<td>Linux</td>
<td>/usr/share/freedv-gui/wav or /usr/local/share/freedv-gui/wav</td>
</tr>
<tr>
<tr class="odd">
<td>macOS</td>
<td>See https://github.com/freedv/freedv-gui/tree/master/wav</td>
</tr>
@ -379,25 +379,25 @@ untested).</p>
are below:</p>
<table>
<thead>
<tr>
<tr class="header">
<th>Mode</th>
<th>Width (kHz)</th>
</tr>
</thead>
<tbody>
<tr>
<tr class="odd">
<td>1600</td>
<td>1.125</td>
</tr>
<tr>
<tr class="even">
<td>700D</td>
<td>1.000</td>
</tr>
<tr>
<tr class="odd">
<td>700E</td>
<td>1.500</td>
</tr>
<tr>
<tr class="even">
<td>RADEV1</td>
<td>1.500</td>
</tr>
@ -612,7 +612,7 @@ class="header-section-number">10</span> FreeDV Modes</h1>
SSB and Skype as anchors for a rough guide to audio quality:</p>
<table>
<thead>
<tr>
<tr class="header">
<th>Mode</th>
<th style="text-align: center;">Min SNR</th>
<th style="text-align: center;">Fading</th>
@ -622,7 +622,7 @@ SSB and Skype as anchors for a rough guide to audio quality:</p>
</tr>
</thead>
<tbody>
<tr>
<tr class="odd">
<td>SSB</td>
<td style="text-align: center;">0</td>
<td style="text-align: center;">8/10</td>
@ -630,7 +630,7 @@ SSB and Skype as anchors for a rough guide to audio quality:</p>
<td style="text-align: center;">2600</td>
<td style="text-align: center;">5/10</td>
</tr>
<tr>
<tr class="even">
<td>1600 (*)</td>
<td style="text-align: center;">4</td>
<td style="text-align: center;">3/10</td>
@ -638,7 +638,7 @@ SSB and Skype as anchors for a rough guide to audio quality:</p>
<td style="text-align: center;">4000</td>
<td style="text-align: center;">4/10</td>
</tr>
<tr>
<tr class="odd">
<td>700D (*)</td>
<td style="text-align: center;">-2</td>
<td style="text-align: center;">4/10</td>
@ -646,7 +646,7 @@ SSB and Skype as anchors for a rough guide to audio quality:</p>
<td style="text-align: center;">4000</td>
<td style="text-align: center;">3/10</td>
</tr>
<tr>
<tr class="even">
<td>700E (*)</td>
<td style="text-align: center;">1</td>
<td style="text-align: center;">7/10</td>
@ -654,7 +654,7 @@ SSB and Skype as anchors for a rough guide to audio quality:</p>
<td style="text-align: center;">4000</td>
<td style="text-align: center;">3/10</td>
</tr>
<tr>
<tr class="odd">
<td>RADEV1</td>
<td style="text-align: center;">-2</td>
<td style="text-align: center;">8/10</td>
@ -662,7 +662,7 @@ SSB and Skype as anchors for a rough guide to audio quality:</p>
<td style="text-align: center;">8000</td>
<td style="text-align: center;">7/10</td>
</tr>
<tr>
<tr class="even">
<td>Skype</td>
<td style="text-align: center;">-</td>
<td style="text-align: center;">-</td>
@ -781,18 +781,18 @@ class="header-section-number">11.1</span> Tools - Filter</h2>
<col style="width: 73%" />
</colgroup>
<thead>
<tr>
<tr class="header">
<th>Control</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<tr class="odd">
<td>Noise Suppression</td>
<td>Enable noise suppression, de-reverberation, AGC of mic signal using
the Speex pre-processor</td>
</tr>
<tr>
<tr class="even">
<td>700D Auto EQ</td>
<td>Automatic equalization for FreeDV 700D/E Codec input audio</td>
</tr>
@ -821,18 +821,18 @@ class="header-section-number">11.2.1</span> Modem Options</h3>
<col style="width: 71%" />
</colgroup>
<thead>
<tr>
<tr class="header">
<th>Control</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<tr class="odd">
<td>Clipping</td>
<td>Increases the average power. Ensure your transmitter can handle high
RMS powers before using!</td>
</tr>
<tr>
<tr class="even">
<td>TX Band Pass Filter</td>
<td>Reduces TX spectrum bandwidth</td>
</tr>
@ -876,10 +876,9 @@ the menu bar by a similar process.</p>
border and clicking and holding the left mouse button and dragging to
required size.</p>
<p>By default, the tab layout is not saved. However, by enabling
experimental features (see <a href="#experimental-features">Experimental
Features</a>), experimental support for saving and restoring the tab
layout will be enabled. This has not been well tested and may have
hidden bugs or other issues.</p>
experimental features (see “Advanced/Developer Features”), experimental
support for saving and restoring the tab layout will be enabled. This
has not been well tested and may have hidden bugs or other issues.</p>
<figure>
<img src="contrib/multiple_panes.png" alt="Multiple Panes" />
<figcaption aria-hidden="true">Multiple Panes</figcaption>
@ -891,37 +890,37 @@ class="header-section-number">14.1</span> Stats Window</h2>
<p>Located on the lower left hand side of the main screen.</p>
<table>
<thead>
<tr>
<tr class="header">
<th>Term</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<tr class="odd">
<td>Bits</td>
<td>Number of bits demodulated</td>
</tr>
<tr>
<tr class="even">
<td>Errs</td>
<td>Number of bit errors detected</td>
</tr>
<tr>
<tr class="odd">
<td>Resyncs</td>
<td>Number of times the demodulator has resynced</td>
</tr>
<tr>
<tr class="even">
<td>ClkOff</td>
<td>Estimated sample clock offset in parts per million</td>
</tr>
<tr>
<tr class="odd">
<td>FreqOff</td>
<td>Estimated frequency offset in Hz</td>
</tr>
<tr>
<tr class="even">
<td>Sync</td>
<td>Sync metric (OFDM modes like 700D/E)</td>
</tr>
<tr>
<tr class="odd">
<td>Var</td>
<td>Speech encoder distortion for 700D (see Auto EQ)</td>
</tr>
@ -1244,23 +1243,23 @@ class="header-section-number">18</span> Glossary</h1>
<col style="width: 93%" />
</colgroup>
<thead>
<tr>
<tr class="header">
<th>Term</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<tr class="odd">
<td>AWGN</td>
<td>Additive White Gaussian Noise - a channel with just noise and no
fading (like VHF)</td>
</tr>
<tr>
<tr class="even">
<td>FEC</td>
<td>Forward Error Correction - extra bits to we send to protect the
speech codec bits</td>
</tr>
<tr>
<tr class="odd">
<td>LDPC</td>
<td>Low Density Parity Check Codes - a family of powerful FEC codes</td>
</tr>
@ -1268,22 +1267,8 @@ speech codec bits</td>
</table>
<h1 data-number="19" id="release-notes"><span
class="header-section-number">19</span> Release Notes</h1>
<h2 data-number="19.1" id="v2.4.2-tbd-2026"><span
class="header-section-number">19.1</span> V2.4.2 TBD 2026</h2>
<ol type="1">
<li>Bugfixes:
<ul>
<li>FreeDV Reporter: don’t select the station under the mouse when the
list gains focus without a click. (PR #1611)</li>
</ul></li>
<li>Documentation:
<ul>
<li>User manual: Update reference to Experimental Features section. (PR
#1613)</li>
</ul></li>
</ol>
<h2 data-number="19.2" id="v2.4.1-october-2026"><span
class="header-section-number">19.2</span> V2.4.1 October 2026</h2>
<h2 data-number="19.1" id="v2.4.1-tbd-2026"><span
class="header-section-number">19.1</span> V2.4.1 TBD 2026</h2>
<ol type="1">
<li>Bugfixes:
<ul>
@ -1441,37 +1426,6 @@ count. (PR #1597) - thanks <span class="citation"
data-cites="barjac">@barjac</span>!</li>
<li>Linux/FreeDV Reporter: fix uninitialized value deciding whether a
selection is honored. (PR #1606)</li>
<li>Allow microphone and speaker devices below 16 kHz (such as Bluetooth
headsets in call mode) with a warning instead of refusing to start. (PR
#1608)</li>
<li>FreeDV Reporter: fix possible crash when repeatedly connecting and
disconnecting. (freedv-backend PR #44)</li>
<li>FreeDV Reporter: fix exiting FreeDV taking up to 60 seconds when the
server stalls setting up the secure connection; give up on it after 10
seconds instead. (freedv-backend PR #63)</li>
<li>FreeDV Reporter: fix memory leak when FreeDV exits just as FreeDV
Reporter connects. (freedv-backend PR #75)</li>
<li>Recording: fix up to the last 100 ms of audio being lost when a
recording stops, and log when audio has to be dropped. (freedv-backend
PR #71, #72)</li>
<li>Fix conversion of 16-bit audio to floating point going slightly past
full scale. (freedv-backend PR #60)</li>
<li>Fix buffer overruns when one RADE receive call decodes several
frames and when resampling 8 kHz audio by large ratios. (freedv-backend
PR #78)</li>
<li>Fix the audio pipeline rebuilding its resampler when the sample rate
is unchanged but not when it changes, and freeing the kept resampler
twice. (freedv-backend PR #78)</li>
<li>FreeDV Reporter: refuse a secure connection if TLS 1.2 or
certificate hostname checking can’t be enforced. (freedv-backend PR
#78)</li>
<li>macOS/FreeDV Reporter: fix endless loop and log spam when the
connection closes while sending. (freedv-backend PR #78)</li>
<li>Fix network and threading code continuing after a failed socket or
semaphore setup, Linux semaphore waits ending early on a signal, and a
macOS crash on an empty background task. (freedv-backend PR #78)</li>
<li>Windows: fix exiting FreeDV taking 20 seconds or more while logging
heavily. (freedv-backend PR #78)</li>
</ul></li>
<li>Build system:
<ul>
@ -1491,14 +1445,6 @@ information, and only use ccache in CI for the builds that compile them.
<li>Add tests of whole transmissions through the TX/RX threads without
sound cards. (PR #1567)</li>
<li>Resolve build failure on OpenSUSE Tumbleweed. (PR #1577)</li>
<li>Fix Windows build failures with newer llvm-mingw (clang/libc++)
releases. (freedv-backend PR #51)</li>
<li>Fix Windows build with older mingw-w64 headers that don’t declare
SetThreadDescription. (freedv-backend PR #60)</li>
<li>macOS: fix RNNoise build failure with newer Xcode versions.
(freedv-backend PR #59)</li>
<li>Fix build errors with GCC 16 and with OpenSSL 4 deprecations.
(freedv-backend PR #41, #73)</li>
</ul></li>
<li>Documentation:
<ul>
@ -1511,12 +1457,10 @@ SetThreadDescription. (freedv-backend PR #60)</li>
<li>Windows audio thread timing improvements. (PR #1488)</li>
<li>Log when the sound server puts a PulseAudio stream on another
device. (PR #1591)</li>
<li>Log from the audio threads without blocking them. (freedv-backend PR
#60)</li>
</ul></li>
</ol>
<h2 data-number="19.3" id="v2.4.0-august-2026"><span
class="header-section-number">19.3</span> V2.4.0 August 2026</h2>
<h2 data-number="19.2" id="v2.4.0-august-2026"><span
class="header-section-number">19.2</span> V2.4.0 August 2026</h2>
<ol type="1">
<li>Bugfixes:
<ul>
@ -1627,8 +1571,8 @@ data-cites="barjac">@barjac</span>!</li>
#1435)</li>
</ul></li>
</ol>
<h2 data-number="19.4" id="earlier-than-v2.3.0"><span
class="header-section-number">19.4</span> Earlier than V2.3.0</h2>
<h2 data-number="19.3" id="earlier-than-v2.3.0"><span
class="header-section-number">19.3</span> Earlier than V2.3.0</h2>
<p>See <a
href="https://github.com/freedv/freedv-gui/blob/master/CHANGELOG_OLD.md">this</a>
for more information about changes in versions prior to 2.3.0.</p>

View File

@ -618,7 +618,7 @@ As the Tab is dragged into position a faint blue/gray image will show the positi
Tabs can be resized as required by hovering the cursor over the border and clicking and holding the left mouse button and dragging to required size.
By default, the tab layout is not saved. However, by enabling experimental features (see [Experimental Features](#experimental-features)), experimental support for
By default, the tab layout is not saved. However, by enabling experimental features (see "Advanced/Developer Features"), experimental support for
saving and restoring the tab layout will be enabled. This has not been well tested and may have hidden bugs or other issues.
![Multiple Panes](contrib/multiple_panes.png)
@ -947,13 +947,6 @@ LDPC | Low Density Parity Check Codes - a family of powerful FEC codes
# Release Notes
## V2.4.2 TBD 2026
1. Bugfixes:
* FreeDV Reporter: don't select the station under the mouse when the list gains focus without a click. (PR #1611)
2. Documentation:
* User manual: Update reference to Experimental Features section. (PR #1613)
## V2.4.1 October 2026
1. Bugfixes:

Binary file not shown.

View File

@ -3,7 +3,7 @@ include(FetchContent)
FetchContent_Declare(
freedv_backend
GIT_REPOSITORY https://github.com/freedv/freedv-backend
GIT_TAG main
GIT_TAG v1.0.1
)
FetchContent_MakeAvailable(freedv_backend)

View File

@ -1815,15 +1815,6 @@ void FreeDVReporterDialog::OnLeftClickTooltip(wxMouseEvent& event)
void FreeDVReporterDialog::OnSetFocus(wxFocusEvent& event)
{
// Only select the item under the mouse if the focus came from clicking
// on it, not from e.g. the window being brought to the front or a
// tooltip closing while the mouse happens to be over the list.
if (!wxGetMouseState().ButtonIsDown(wxMOUSE_BTN_ANY))
{
event.Skip();
return;
}
CallAfter([this]() {
const wxPoint pt = wxGetMousePosition();
int mouseX = pt.x - m_listSpots->GetScreenPosition().x;