Commit graph

11 commits

Author SHA1 Message Date
JohnBaumb
a0eb289d63 Merge origin/fix/downloads-page into dev 2026-04-23 11:13:45 -07:00
JohnBaumb
ddae75f0f9 Merge origin/fix/batch-queue-system into dev 2026-04-23 11:13:34 -07:00
JohnBaumb
0fed25b51a Route discover batch card clicks to discover download modal 2026-04-23 11:13:07 -07:00
JohnBaumb
d2bd66c0ce Show server push status in batch history 2026-04-23 00:55:46 -07:00
JohnBaumb
11b74d7c14 Widen batch panel to 400px, shorten stat labels 2026-04-23 00:46:54 -07:00
JohnBaumb
9b3e65c3d8 Two-line batch history layout with descriptive stats 2026-04-23 00:44:59 -07:00
JohnBaumb
332392f338 Improve batch history: thumbnails, source badges, detailed stats 2026-04-23 00:40:33 -07:00
JohnBaumb
c3b9f97afc Add analysis progress to downloads page batch cards 2026-04-22 15:21:11 -07:00
JohnBaumb
99a95dcc91 fix: replace 429 rejection with analysis queue and expand batch colors
- Queue batches for analysis instead of rejecting with 429
- Route all batch submissions through analysis queue
- Separate analysis executor to prevent thread starvation
- Expand batch color palette from 8 to 16 sequential colors
- Add queued phase display in batch panel
2026-04-22 11:58:01 -07:00
JohnBaumb
5415d0fe3c feat: add SoulSync Discover sync tab with ListenBrainz, progress tracking, and Navidrome push
Adds a full Discover Sync tab to the Sync page with:
- Core UI scaffolding, playlist modal, empty-state handling
- ListenBrainz playlist integration with auto-update toggle persistence
- Sync progress tracking with matched/total counts on cards
- Navidrome playlist push on batch completion (V1 and V2 paths)
- Active download state display with polling resume on page reload
- Stuck-download detection for downloading and catch-all states
- Serialized sync queue to prevent concurrent backend contention
- Source badges, compact card layout, URL fixes
2026-04-22 11:56:30 -07:00
JohnBaumb
a66c4d06e1 Split monolithic script.js (78K lines) into 17 domain modules
Extracts the single 77,957-line script.js into focused modules:

  core.js            (874)   - Global state, confirm dialog, websocket, constants
  init.js            (2358)  - Initialization, personal settings, navigation
  media-player.js    (2398)  - Media player, audio, visualizer, radio
  settings.js        (3657)  - Settings page, quality profiles, API keys, auth
  search.js          (1542)  - Search functionality, page data loading
  sync-spotify.js    (2538)  - Spotify sync, YouTube backend, hero section
  downloads.js       (6398)  - Wing It, batched polling, cancel, notifications
  wishlist-tools.js  (7234)  - Wishlist, matched downloads, tools, retag
  sync-services.js   (9076)  - Tidal, Deezer, Beatport, YouTube, ListenBrainz sync
  artists.js         (4610)  - Artists page, artist downloads
  api-monitor.js     (3798)  - API rate monitor gauges
  library.js         (6652)  - Library, artist detail, enhanced management
  beatport-ui.js     (3902)  - Beatport sliders, genre browser
  discover.js        (8920)  - Discover page and all sub-sections
  enrichment.js      (3551)  - All enrichment workers, library repair
  stats-automations.js (7575) - Stats, automations, issues, import
  pages-extra.js     (2874)  - Playlist explorer, server playlists, active downloads

Load order: core.js first (globals), init.js last (DOMContentLoaded).
All other modules define functions and load in any order.
No functional changes - pure extraction along existing section boundaries.
2026-04-21 23:52:30 -07:00