Release Date: March 15, 2026 Version: v1.0.1 Base: v1.0.0 "Heritage"
Overview
v1.0.1 is a targeted bug-fix release addressing data-correctness regressions in the Live Spots subsystem and a silent configuration loss bug in the Setup Screen. No new features; no breaking changes.
Bugs Fixed
Live Spots — PSK Reporter "of DE" Used Wrong Filter Field
When "of DE" mode was active, fetchPSK() was constructing senderLocator=<grid> instead of senderCallsign=<callsign>. This caused PSK Reporter to return all spots heard from the user's grid square rather than spots heard from the user's specific callsign. Fixed: liveSpotsOfDe=true always uses senderCallsign=.
Live Spots — WSPR "of DE" Used Grid Match Instead of Callsign
Same regression class as the PSK bug above. fetchWSPR() was building tx_loc LIKE '<grid>%' when liveSpotsOfDe=true, returning any WSPR transmission originating in the user's grid square rather than the user's callsign. Fixed: liveSpotsOfDe=true always uses tx_sign='<callsign>', with an empty-callsign guard.
Live Spots — RBN: No Empty-Callsign Guard in Callsign Mode
When callsign filter was active and no callsign was configured, fetchRBN() silently produced zero spots with no indication of why. Added an early-return guard matching the existing PSK/WSPR behavior, with a LOG_W warning.
Live Spots — RBN: Short Grid Caused Over-Broad Spot Matching
fetchRBN() used config_.grid.substr(0, 4) without a length check. If the configured grid was fewer than 4 characters (e.g., "EL"), the filter spot.txGrid.substr(0,4) == "EL" matched any grid starting with those letters — an entire region instead of a 1°×2° square. Fixed: grids shorter than 4 characters now produce a LOG_W and an early return, consistent with PSK and WSPR handling.
Setup Screen — Config Fields Not Managed by Setup Were Silently Reset
Completing the Setup Screen replaced the entire in-memory AppConfig with the struct returned by SetupScreen::getConfig(). Any field not explicitly managed by the Setup Screen (propagation overlay selections, Watchlist, audio settings, etc.) was silently reset to defaults. Fixed: getConfig() now accepts the current AppConfig as a base and overwrites only the fields it manages. Future new config fields are automatically preserved without additional call-site changes.
Files Changed
src/services/LiveSpotProvider.cppsrc/ui/LiveSpotPanel.cppsrc/ui/SetupScreen.hsrc/ui/SetupScreen.cppsrc/main.cpp
Upgrade Notes
No config migration required. Existing config.json files are fully compatible.
73 de K4DRW