github gbozo/no-sdr v2.2.0
v2.2.0 — Admin Panel, Client State Sync & Connection Resilience

latest releases: v2.10.5, v2.10.4, v2.10.3...
4 months ago

What's New in v2.2.0

Admin Panel (Full Rewrite)

  • Full-page /admin route replacing the old modal — left nav with 5 sections
  • General Settings: station info, network, security, codecs, DSP/history, demo mode
  • SDR Devices & Profiles: full CRUD with breadcrumb nav, preset dropdown (27 presets across 8 categories), profile reordering, start/stop/delete
  • Bookmarks: name, frequency, mode, bandwidth — full CRUD
  • Feature Report: build info, runtime stats, supported codecs/sources/modes
  • System Monitor: live client list with dongle/profile/frequency, polling every 5s
  • Single global save with Ctrl+S/Cmd+S, unsaved changes indicator, dirty-state warning on navigation
  • Optimistic concurrency (ETag/version) — rejects stale saves from concurrent admin sessions

Backend Resilience

  • Server boots without dongles (zero-config first boot writes default YAML)
  • 5-retry with exponential backoff (1s → 16s) for auto-start dongles — failed dongles no longer kill the server
  • Dongle reinitialisation on hardware config changes (clients get notified and re-negotiate)
  • Active profile removal cascading: auto-switches to next profile or stops dongle

Real-Time Config Push (WebSocket)

  • 15 notification event types broadcast to all clients: dongle CRUD, profile CRUD, start/stop/error, server config, config saved
  • state_sync sent on every new WS connection — client no longer polls REST for dongle list
  • Config version tracking in all notifications for client-side staleness detection

Persistent Client Identity

  • Server generates/validates UUID per client, persisted in localStorage across sessions
  • Multi-tab support: connection index (1, 2, 3...) per persistent UUID
  • Full per-client state tracking: subscription, codec, mode, stereo, audio, tune offset, bandwidth — always in sync

Connection Resilience (Client)

  • Exponential backoff reconnect (1s × 1.5^n, max 30s, 20 attempts)
  • Full state restoration on reconnect (mode, bandwidth, tune offset, audio, codec, stereo, waterfall history)
  • Connection overlay UI: reconnecting/disconnected/unconfigured states with retry button
  • "Reconnected" flash indicator on recovery

UI Tweaks

  • FFT size shown in waterfall panel header
  • Sampling rate displayed in dongle info bar
  • Persistent client ID + connection index in status bar
  • Removed redundant ConnectionStatus sidebar section

API Additions

Endpoint Purpose
GET /api/admin/system-info Build info, features, runtime stats
GET /api/admin/clients Connected WS clients with full state
GET/POST/PUT/DELETE /api/admin/bookmarks Bookmark CRUD
GET /api/bookmarks Public bookmark list

Breaking Changes

  • Client no longer falls back to GET /api/dongles — requires server with state_sync support
  • Admin panel is now at /admin route (old modal removed from render)
  • shared/ workspace merged into client/src/shared/ (import paths changed)

Full Changelog: v2.1.0...v2.2.0

Don't miss a new no-sdr release

NewReleases is sending notifications on new releases.