v0.6.0 — One-click OBS install + silence detection + more polish
Big release. The companion's "Add to OBS" button becomes a real one-click install via obs-websocket, silence detection joins beat detection on the reactive-signals bus, and a handful of web-side features round out the stats and overlay stories.
Companion-side (tracklist-link v0.6.0)
One-click OBS install
- New "One-click install" tab in the Add-to-OBS modal. Paste your OBS WebSocket password (from Tools → WebSocket Server Settings → Show Connect Info), hit Connect to OBS, then Install into "". The companion creates a Browser Source pointing at the visualizer URL, places it in your active scene, tells you it's done.
- Remember-password option stores it in the companion's localStorage (Windows user profile scope).
- Connection errors map to actionable messages: "OBS not running," "WebSocket server not enabled," "wrong password." Not silent.
- The "Copy URL" tab remains for streamers who prefer to paste manually or use Streamlabs.
- Zero new Rust dependencies — hand-rolled obs-websocket v5 client (~200 LOC) over the native WebSocket API that ships in Tauri's webview.
Silence detection
- Second reactive-signal producer on the bus alongside beat detection. Emits `audio/silence` events on silence entry + exit with hysteresis — 1.5 s enter debounce, 250 ms exit debounce, so single dropouts don't trip and a single kick wakes it.
- Edge-triggered, not per-frame. State-change semantics match future CS2 GSI events so the same consumers can bind.
- Default RMS threshold 0.02 (tuneable in a future settings pass).
Other
- CSP expanded to allow `ws:` in connect-src — needed for obs-websocket, nothing else. Everything else still locked.
- docs/VERIFICATION_CHECKLIST.md captures the 7-step smoke test for this multi-commit landing.
Web-side (shipped alongside, auto-deploys)
Sessions BPM filter
- /sessions accepts `?bpmMin=&bpmMax=` URL params. The Tempo panel's bucket rows link into this; click a bucket, see every session that played at least one track in that tempo range.
- Active filter shows as a dismissible pill so the streamer always knows why results are scoped.
Mood chapter on /stats
- Three-axis horizontal-rail view of the streamer's Spotify audio-features averages: Energy, Danceability, Valence (musical positivity). Coarse derived label at the top ("Dancey intense & moody," "Warm & melodic," etc.) as an identity hook.
Overlay ticker
- `?ticker=bottom` renders a scrolling marquee under the card with the last 10 tracks + artists. CSS keyframe, 30 s loop, duplicated content so the scroll is seamless. Opt-in — most streamers want the minimal card, but VOD viewers joining mid-song love the backfill context.
Verify
After downloading the binary:
- Open it. Paste your OBS WebSocket password (Tools → WebSocket Server Settings → Show Connect Info) into the One-click install tab.
- Click Connect to OBS → Install into "".
- Check OBS — a new "Tracklist Visualizer " Browser Source should be in your scene, rendered at 1920 × 1080.
- Play audio. The viz flashes on kicks. When you pause, silence is detected after 1.5 s (no consumer UI yet — that's a future feature).
```bash
git clone https://github.com/ALunfb/tracklist-link.git
cd tracklist-link
git checkout v0.6.0
cd frontend && npm install && npm run build && cd ..
cargo build --release
sha256sum target/release/tracklist-link.exe
```