What's New in v2.2.0
Admin Panel (Full Rewrite)
- Full-page
/adminroute 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_syncsent 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 withstate_syncsupport - Admin panel is now at
/adminroute (old modal removed from render) shared/workspace merged intoclient/src/shared/(import paths changed)
Full Changelog: v2.1.0...v2.2.0