Commit Graph
13 Commits
Author SHA1 Message Date
nmemmertandClaude Sonnet 4.6 7efb9265e6 Add per-playlist station selection
Each playlist now has its own station checkboxes in Settings.
Sync scrapes the union of all stations once, then filters songs
by source before syncing each playlist separately.

Config stored as PLAYLISTS JSON: [{name, stations}, ...].
Backward-compatible with flat PLAYLIST_NAME + SELECTED_STATIONS.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-26 09:04:34 -04:00
nmemmertandClaude Sonnet 4.6 ff174a70ce Add multiple playlist support; fix settings save in container
- PLAYLIST_NAMES config key (comma-separated list); falls back to PLAYLIST_NAME
- run_update_job syncs songs to every configured playlist, merges results
- Settings form: dynamic add/remove playlist rows instead of single input
- get_web_config reads config.json directly so form is consistent in
  container environments where env vars override runtime config
- Playlist tab: dropdown to pick which playlist to browse when multiple exist

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-26 08:57:00 -04:00
nmemmertandClaude Sonnet 4.6 389376e43e Fix Top Songs: accumulate play counts per scrape, deduplicate only stat card
song_counts tallies how many times each song appears across all runs
(powers the Top Songs ranking). total_scraped uses the unique seen
set separately so the stat card stays deduplicated.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-25 16:22:27 -04:00
nmemmertandClaude Sonnet 4.6 8f28d9c9ce Deduplicate missing/scraped stats; show matched from latest run
- 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>
2026-08-25 13:45:10 -04:00
nmemmertandClaude Sonnet 4.6 b394416ed7 Count unique scraped songs instead of cumulative per-run totals
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>
2026-08-25 13:35:24 -04:00
nmemmertandClaude Sonnet 4.6 12b6b15206 Add live sync log, playlist viewer, donut chart, history expand, buy list dedup, and date filter
- 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>
2026-08-25 12:18:02 -04:00
nate.emmert ad672b201d Deduplicate top song counting across refreshes 2026-03-26 09:08:26 -04:00
nate.emmert 2d5b23f5bb Disable auto meta-refresh to keep Buy List/History tabs stable 2026-03-26 09:04:18 -04:00
nate.emmert 283d683b29 Add error trace output for /api/refresh and friendly UI display 2026-03-26 08:58:17 -04:00
nate.emmert 88b9d96af5 Integrate desktop features into web UI tabs with API endpoints 2026-03-26 08:46:30 -04:00
nate.emmert 8b06b4d277 Add tabbed dashboard nav + raw API section 2026-03-26 08:36:41 -04:00
nate.emmert 21d34b7562 Add per-song per-station playback counts to dashboard 2026-03-26 08:24:41 -04:00
nate.emmert 946e8cd92c Add web dashboard with live refresh + fade transitions and CLI/GU integration 2026-03-26 08:00:24 -04:00