v0.4.1 — tuneable beat detection + live BPM + analyzer punch
Tuning pass on v0.4.0's beat detection framework. Three quality-of-life wins, plus a plan doc for the stats-page tempo panel.
Install / upgrade
Download `tracklist-link.exe` below. Drop-in replacement for v0.4.0 — your existing config (paired token, autostart, preset folder) survives.
What changed since v0.4.0
Beat detection quality
- Sensitivity slider in the Visualizer Tune panel. Drops beat detection threshold from the previous hardcoded 1.6× stddev all the way to 0.5× if you want a hot trigger. Critical for streamers running Spotify at reduced volume under voice chat — the v0.4.0 default was tuned for "music at full blast," which nobody actually does.
- Slider applies live via Arc — no restart needed. Persists to config.
Visualizer reactivity
- Beat events now drive a +55% gain pulse on the analyzer spectrum in the companion viz + the overlay card's bar analyzer. 88%-per-frame decay → ~180 ms half-life. Every preset visibly "punches" on kicks regardless of whether the preset itself keys on bass.
- Overlay card's border-pulse CSS animation now has a beatPulse toggle in the dashboard Overlay tile. Defaults on; `?beat=0` URL param opts out.
BPM where it belongs
- Running beat counter was noise. Replaced with a median-based BPM estimate in both the Visualizer header and the dashboard companion-status tile.
- 8-beat rolling window + 12s staleness cutoff. Silence resets the display to "—" instead of hanging a stale 128.
- docs/STATS_BPM_DISTRIBUTION.md scopes the persistent per-streamer tempo panel for the stats page: Spotify audio-features ingestion, genre-bucketed chart, clickable filtering back into the session archive. Plan only; separate PR when we're ready.
Known caveats
- The default beat_sensitivity of 1.6 is unchanged. If your stream is quieter than most, open Settings → Tune panel → Beat detection and drop it to 0.9–1.2 until the visualizer starts pulsing reliably on kicks.
- Beat detection remains energy-based. Real onset detection (spectral flux, with distinct kick/snare topics) is a future direction — see docs/REACTIVE_SIGNALS.md for the planned topic slots.
Verify the binary
```bash
git clone https://github.com/ALunfb/tracklist-link.git
cd tracklist-link
git checkout v0.4.1
cd frontend && npm install && npm run build && cd ..
cargo build --release
sha256sum target/release/tracklist-link.exe
```