- NowPlaying polling: only active while dropdown is open + respects
Page Visibility API — was firing every 10s unconditionally (~8.6k req/day)
- Connection check interval: 30s → 120s (4× reduction)
- Queue sync debounce: 1.5s → 5s (prevents burst on rapid skip)
- Rating prefetch: add 7-minute in-memory TTL cache for artist/album
ratings — repeated random album loads no longer re-fetch known ratings
Fixes server log flooding reported by users behind reverse proxies (Traefik).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
### 10-Band Graphic Equalizer
- Full EQ in Rust audio engine via EqSource<S> biquad peak filters
- 10 built-in presets + custom preset save/delete
- EqSource::try_seek() implemented — also fixes waveform seek which broke
silently when EQ was introduced (rodio returned SeekError::NotSupported)
- EQ state persisted in localStorage, synced to Rust on startup
### Connection Indicator
- LED in header (green/red/pulsing) with server name and LAN/WAN label
- Offline overlay with retry button when server is unreachable
- useConnectionStatus hook
### New App Icon
- New logo (logo-psysonic.png) applied across Login, Sidebar, Settings,
README and all Tauri platform icons (Windows, macOS, Linux, Android, iOS)
### Now Playing Page
- New /now-playing route added
### Fixes
- WaveformSeek: mousemove/mouseup on window to fix drag outside canvas
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>