A new Application settings tab for customizing the interface, plus a batch of edge-case fixes found in review.
Added
- Application settings tab: pick a light/dark theme and customize the interface, heading, and frequency-readout fonts (face, weight, style, size) independently, saved via Save → restart confirmation. Every fixed-height chrome band (strip, status bar, section bar, main frame) now scales its own minimum size with the chosen font instead of clipping or collapsing to zero width, and the main window grows to fit real content on a narrow display without crushing controls.
- Tooltip on the Idle disconnect spin control documenting its 0–600 range, the etiquette rationale (freeing a shared WebSDR's listener slot), and that 0 disables it.
Fixed
RigctldClientnow treats a socket EOF as a disconnect instead of an empty reply, andconnect()returns false if the post-connect handshake never completes.SyncEngine._tick()no longer raisesUnboundLocalErrorwhen a WebSDR session is active but its driver has already goneNone.- A round of non-finite-frequency hardening (
NaN/infguarded at driver/config boundaries —int(float('nan'))andround(float('inf'))raise, and NaN comparisons silently return false in ways that could make an invalid value look in-range). - Site auto-detection and click-simulation edge cases found in the same review pass (see
matching_driver_types()/click_element_if_presentchanges).
Changed
- Dropped the second vendored font (Cormorant Garamond) after confirming only the first registered font is visible to a native font-chooser dialog on this wxGTK stack.
551 tests pass; 9 skipped on Windows (Linux-only audio-unlock-click tests, intentionally disabled on that platform).
Windows build: SDRSync-v2.3.0-windows.zip is attached below. Extract and run SDRSync.exe — no installer needed.
Source: SDRSync-v2.3.0-source.zip / SDRSync-v2.3.0-source.tar.gz also attached, alongside GitHub's own auto-generated source archives.