Critical fix release for the Rust backend (serverrs). Wire protocol, REST API and config format are unchanged.
WFM audio regression (AVX2)
v2.11.2-rust shipped an AVX2 decimator whose complex horizontal reduction used hadd, which added real and imaginary lanes together. On AVX2 CPUs this corrupted the extracted sub-band: WFM sounded like noise with faint, unintelligible audio and broken stereo.
- Fixed the reduction to fold the upper complex pair onto the lower one (proper real/imaginary sums).
- Added an AVX2-vs-portable regression test covering 31/32/33/257-tap windows; it fails on the old reduction and passes on the fix.
Verified with the published 2.11.2 binary vs 2.11.3 on the same RTL2838/R820T and station:
| Build | Opus RMS | Zero-crossing rate | L/R correlation |
|---|---|---|---|
| 2.11.2 (buggy) | 0.21 | 0.150 | -0.477 |
| 2.11.3 (fixed) | 0.27 | 0.046 | +0.722 |
Low ZCR and positive L/R correlation indicate normal speech/music and proper stereo; the high ZCR and negative correlation are the noise symptom.
Admin session expiry
Admin sessions are in memory, so a server restart invalidates the cookie while the open admin tab still looks logged in; saving then returned not authenticated. The admin UI now detects a 401 and returns to the login form with “Session expired. Please log in again.”
Tests
cargo test: 115/115 (the new AVX2 reduction test is included). Client typecheck and production build are clean.
Docker
ghcr.io/gbozo/no-sdr:2.11.3-rust — multi-arch (linux/amd64 + linux/arm64), -rust suffix only. This release also includes the Alpine librtlsdr/libusb link fix and the multi-arch digest-merge fix.