node-sdr v1.0.0
First stable release of the multi-user WebSDR application.
Highlights
- Multi-source support — Local USB (rtl_sdr), RTL-TCP, AirSpy, HF+, SDRplay via TCP
- Dual audio paths — Client-side demod (IQ codec) with full stereo FM/AM/SSB/CW, or server-side Opus VBR encoding
- Stereo FM — PLL-based 19kHz pilot detection with SNR-proportional blend + RDS decoder
- C-QUAM AM Stereo — Full Motorola C-QUAM decode with pilot detection and auto-detection
- Interactive waterfall & spectrum — Canvas 2D with zoom, peak-hold, history, 5 color palettes
- Admin panel — GitHub-style modal with full dongle/profile configuration, presets, enable/disable, reorder
- Profile presets — 30 curated band presets (broadcast, amateur, aviation, marine, utility, satellite, weather)
- Compression — FFT: deflate (7.5–10:1 lossless), ADPCM (8:1); IQ: ADPCM (4:1); Opus (32–192kbps)
- Audio features — 5-band EQ, balance, loudness compression, squelch, noise blanker, adaptive jitter buffer
- Multi-user — Per-client IQ extraction, WebSocket backpressure, rate limiting (10 conn/IP)
- 3 UI themes (Default/CRT/VFD) + 5 waterfall palettes
- PWA — installable, offline-capable service worker
- Docker — multi-stage Dockerfile, GHCR publishing on release
Breaking Changes
- None (first stable release)
Requirements
- Node.js 22 LTS
- RTL-SDR dongle (local or remote via rtl_tcp) — or demo mode for testing