- total_scraped: unique songs ever seen playing (not per-run sum)
- total_missing: unique songs ever reported not in Plex library
- total_matched: matched_count from most recent successful run
- Added (144) stays cumulative — each add is a real playlist event
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
total_scraped and station_counts now reflect distinct songs seen
across all history, not the sum of scraped_count per run.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- SSE-based live sync log drawer (ThreadingHTTPServer + queue.Queue log handler)
- Playlist tab: load tracks from Plex, sort, per-track remove
- Match rate donut chart alongside station bar on Overview
- Expandable history rows showing per-station breakdown chips
- Buy list dedup (POST /api/buy-list-dedup) + Copy All Links button
- Date range filter on History run log
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>