What's Changed
- Built-in SDR drivers: Receive from RTL-SDR, Airspy, Airspy HF+, HackRF, LimeSDR, bladeRF, and PlutoSDR without SoapySDR.
- Wideband sweeps: SDR Sweep stitches radio captures into one spectrum, with optional receiver-response flattening.
- Manual SoapySDR gain: Set receive gain in decibels with automatic gain disabled.
- Python imports: Switching dependency environments preserves loaded native packages, preventing NumPy reload failures.
Pull-Requests
- docs: rewrite every block description in the reference-card format by @luigifcruz in #362
- feat: add cross-platform secret storage APIs by @luigifcruz in #357
- refactor: move miniaudio into shared tools by @luigifcruz in #358
- refactor: centralize and harden cross-platform I/O by @luigifcruz in #359
- refactor: centralize environment writes and test guards by @luigifcruz in #360
- refactor: centralize shared helpers and Sakura text utilities by @luigifcruz in #361
- feat: add JSON value adapters and null handling by @luigifcruz in #364
- feat: add window capture and shared transfer helpers by @luigifcruz in #365
- fix: composite transparent canvases with premultiplied alpha by @luigifcruz in #366
- feat: add node layout, surface capture, and nonblocking reconfiguration by @luigifcruz in #367
- feat: add manual gain control for SoapySDR devices by @luigifcruz in #368
- feat: expand retained components and improve input and text layout by @luigifcruz in #369
- feat: add retained chat and voice components by @luigifcruz in #370
- refactor: persist settings asynchronously and merge node geometry updates by @luigifcruz in #371
- fix: centralize tensor attribute validation to prevent plot crashes by @luigifcruz in #372
- fix: prevent NumPy reload failures in Python blocks by @luigifcruz in #373
- fix: share the CUDA primary context with CuPy by @luigifcruz in #374
- build: target CUDA 12 for Linux release binaries by @luigifcruz in #375
- fix: preserve unknown settings fields across versions by @luigifcruz in #376
- fix: keep dropdown options clickable over overlapping blocks by @luigifcruz in #377
- feat: add Airspy HF+ support by @luigifcruz in #385
- feat: add PlutoSDR support by @luigifcruz in #388
- feat: add built-in radio drivers, SDR Sweep, and live radio settings by @luigifcruz in #384
Full Changelog: v1.13.1...v1.14.0