Commit graph

763 commits

Author SHA1 Message Date
Broque Thomas
cd9acd115d Update web_server.py 2025-09-23 17:14:09 -07:00
Broque Thomas
96043ef530 library page updates 2025-09-23 15:15:29 -07:00
Broque Thomas
03b0b8c6c5 library page update 2025-09-23 14:19:11 -07:00
Broque Thomas
9485dfb03b start of library page 2025-09-23 11:42:58 -07:00
Broque Thomas
180413677c toggle to force the download of all tracks in modal 2025-09-23 10:42:10 -07:00
Broque Thomas
688aa6581f fixed multiple artist metadata update. style updates 2025-09-23 09:55:26 -07:00
Broque Thomas
35f4b25bad fix wishlist modal not auto restarting after initial run. 2025-09-23 08:44:47 -07:00
Broque Thomas
8de9df07e7 auto lyric download 2025-09-22 16:04:06 -07:00
Broque Thomas
e06f0ea372 auto scan after download completion and follow with auto incremental update for active server 2025-09-22 15:01:28 -07:00
Broque Thomas
8cceef0610 m4a support on search page stream 2025-09-22 12:41:05 -07:00
Broque Thomas
85d7dce943 status updates and album card download status 2025-09-22 11:34:39 -07:00
Broque Thomas
41df3d84b7 navidrome support 2025-09-22 07:49:48 -07:00
Broque Thomas
907ea21103 Update web_server.py 2025-09-21 21:41:35 -07:00
Broque Thomas
fcee0194e7 navidrome functionality start 2025-09-21 21:02:12 -07:00
Broque Thomas
0f64d17bf6 add navidrome to settings 2025-09-21 14:10:17 -07:00
Broque Thomas
627d062d3f track finished downloads 2025-09-21 11:12:57 -07:00
Broque Thomas
323eb5d0ba Update web_server.py 2025-09-20 21:00:46 -07:00
Broque Thomas
77a7cf160b preferred audio quality issue resolved 2025-09-20 20:27:05 -07:00
Broque Thomas
21d016fcbd Add configurable redirect URI for Spotify and Tidal
Redirect URIs for Spotify and Tidal OAuth are now configurable via the web UI and settings. Updated backend clients to use the configured redirect URI if provided, improving flexibility for deployments with custom callback URLs.
2025-09-12 21:56:26 -07:00
Broque Thomas
93ac55a709 Improve wishlist track sorting and cleanup logic
Wishlist tracks are now sorted by artist and track name for consistent display. The database query for wishlist tracks now orders by date_added instead of randomly. Added logic to remove completed tracks from the wishlist during failed track processing. Updated docker-compose.yml to mount the H: drive for transfer folders.
2025-09-12 15:19:36 -07:00
Broque Thomas
d746729c02 Update web_server.py 2025-09-11 18:01:46 -07:00
Broque Thomas
24b789660a Improve Docker path handling and filename extraction
Added helper functions to resolve Windows paths for Docker containers and to extract filenames in a cross-platform manner. Updated usage throughout web_server.py and soulseek_client.py to ensure correct path mapping and filename handling. Modified docker-compose.yml to use named volumes and mount the E: drive for better Docker compatibility.
2025-09-11 17:46:49 -07:00
Broque Thomas
008653a69c Improve Docker compatibility for host service URLs
Updated Soulseek client, web server, and docker-compose.yml to better handle service URLs when running inside Docker containers. Localhost URLs are now resolved to host.docker.internal, and Docker-specific volume mounts and extra_hosts are configured for improved interoperability between container and host services.
2025-09-11 13:53:36 -07:00
Broque Thomas
c4b4adf7fb Add web-based Spotify and Tidal OAuth flows
Introduces web server routes and UI buttons for initiating Spotify and Tidal OAuth authentication flows, with dedicated callback servers for token exchange. Updates Docker ports for OAuth callbacks and refines PKCE handling for Tidal. Improves user experience by allowing authentication directly from the web UI.
2025-09-11 13:24:15 -07:00
Broque Thomas
287d2fd2ec Add Docker support and improve headless compatibility
Introduces Docker deployment files (.dockerignore, Dockerfile, docker-compose.yml, docker-setup.sh, requirements-webui.txt, and README-Docker.md) for SoulSync WebUI. Refactors core/database_update_worker.py and core/media_scan_manager.py to support headless operation without PyQt6, enabling signal/callback compatibility for both GUI and non-GUI environments. Removes logs/app.log file.
2025-09-11 08:26:25 -07:00
Broque Thomas
4e30e90777 Update to SoulSync v1.0 with complete WebUI rebuild
Bumped version to 1.0 and updated all version references and changelog details to reflect the major release. SoulSync now features a fully rebuilt web-based UI, Docker container support, enhanced music management, and significant performance improvements.
2025-09-11 07:47:42 -07:00
Broque Thomas
ac7a8f1513 Add metadata updater system for artists
Introduces a metadata updater backend in web_server.py, including API endpoints for starting, stopping, and checking status, and a threaded worker for updating artist metadata from Spotify. Updates script.js to add UI controls, polling, and progress display for the metadata updater, with logic to hide the tool when Jellyfin is the active server.
2025-09-10 19:19:29 -07:00
Broque Thomas
ae9f426361 Add activity logging for key user actions
Introduces activity item logging for settings saves, connection tests, auto-detects, authentication flows, searches, batch cancellations, and discovery operations in web_server.py. Updates dashboard connection test API and UI to use a new endpoint and function, ensuring user actions are tracked and surfaced in the activity feed.
2025-09-10 17:16:01 -07:00
Broque Thomas
94d1c82674 Add activity feed and toasts to dashboard
Introduces a global activity feed system with API endpoints for recent activities and toasts, and integrates activity tracking for key backend events (downloads, syncs, database updates, etc.). Updates the dashboard frontend to periodically fetch and display activity feed items and show toasts for recent actions. Improves error logging and reduces noise for expected 404s in Soulseek client. Adds related CSS for activity feed separators.
2025-09-10 17:04:12 -07:00
Broque Thomas
135728ce89 Add system stats API and dashboard service status updates
Introduces a new /api/system/stats endpoint in web_server.py to provide system statistics such as uptime, memory usage, download speed, and sync counts. Enhances the dashboard in script.js to periodically fetch and display service connection status and system stats, including response times for Spotify, media server, and Soulseek.
2025-09-10 15:22:31 -07:00
Broque Thomas
6011c50304 Add artist watchlist feature with UI and API endpoints
Introduces a watchlist system for tracking artists, including backend API endpoints for managing the watchlist and scanning for new releases. Updates the frontend to allow users to add/remove artists to/from the watchlist from both artist cards and detail pages, view and scan their watchlist via a modal, and see real-time scan progress. Adds related styles for watchlist UI components.
2025-09-10 14:18:54 -07:00
Broque Thomas
42002d1b45 Add automatic and manual wishlist cleanup features
Introduces backend logic to automatically remove tracks from the wishlist if they already exist in the database after downloads or database updates. Adds a new API endpoint and frontend button for manual wishlist cleanup, allowing users to remove already-owned tracks from the wishlist. Enhances reliability and user experience by keeping the wishlist up-to-date.
2025-09-10 07:37:46 -07:00
Broque Thomas
219a36c05b Improve wishlist processing and modal sync logic
Sanitizes wishlist track data for consistent backend/frontend handling, enhances wishlist process state reporting for better UI sync, and refactors frontend modal logic to prevent auto-show conflicts and ensure user-driven visibility. Also improves polling and rehydration to keep frontend state in sync with server-side auto-processing.
2025-09-09 18:28:29 -07:00
Broque Thomas
38d19a1f2d Update web_server.py 2025-09-09 16:54:32 -07:00
Broque Thomas
db26ab8b15 Implement atomic cancel system V2 for downloads
Introduces a new atomic cancel system (V2) for download tasks, ensuring single-step cancellation with proper worker slot management and backend-driven state. Updates both backend (web_server.py) and frontend (script.js) to support V2 cancel API, persistent cancel state, and improved UI handling for cancelling tasks, eliminating race conditions and dual state management.
2025-09-09 16:39:01 -07:00
Broque Thomas
184c38bbb7 Add artist bubble snapshot and hydration system
Introduces backend API endpoints and frontend logic to persist and restore artist download bubble state across page refreshes. Snapshots are saved and hydrated with live download status, ensuring continuity of user progress and UI state. Includes debounce logic for efficient snapshot saving and automatic cleanup of outdated or invalid snapshots.
2025-09-08 13:53:48 -07:00
Broque Thomas
11717cbd38 Update web_server.py 2025-09-08 08:09:15 -07:00
Broque Thomas
f776f7c6f5 Update web_server.py 2025-09-08 07:38:46 -07:00
Broque Thomas
626c8b554b Update web_server.py 2025-09-08 00:27:20 -07:00
Broque Thomas
b7f01b1e65 Update web_server.py 2025-09-08 00:15:02 -07:00
Broque Thomas
2daa8227f9 Update web_server.py 2025-09-08 00:04:11 -07:00
Broque Thomas
d4112ae131 Update web_server.py 2025-09-07 23:53:44 -07:00
Broque Thomas
82253017d2 Update web_server.py 2025-09-07 20:16:24 -07:00
Broque Thomas
83c4921cdd Unify download retry logic and improve batch completion checks
Refactored download monitor to handle error and timeout retries directly and consistently, removing legacy retry methods. Improved batch completion logic to ensure batches are only marked complete when all tasks are truly finished, preventing premature completion. Updated client-side polling to never stop automatically, using exponential backoff on failures, and fixed worker counting to exclude post-processing tasks. Enhanced post-processing and verification workflows to avoid double completion callbacks and ensure proper task state transitions.
2025-09-07 19:57:32 -07:00
Broque Thomas
6773ef1c5f Add post-processing verification for downloads
Introduces a new post-processing workflow in web_server.py that verifies file existence and integrity before marking download tasks as completed. Updates status handling to include a 'post_processing' state and reflects this in the frontend UI, ensuring users see accurate progress and preventing premature completion status for downloads.
2025-09-07 12:36:28 -07:00
Broque Thomas
d8d12bcc2c Improve download worker management and UI polling
Adds server-side validation and healing for download batch worker counts to prevent ghost workers and orphaned tasks, including periodic batch state checks and recovery logic. Enhances thread safety with batch-specific locks and improves error handling in worker slot management. On the frontend, implements exponential backoff for polling failures, validates server responses, and logs worker count discrepancies for better debugging and UI consistency.
2025-09-06 09:25:15 -07:00
Broque Thomas
34c74d1186 Update web_server.py 2025-09-05 19:22:38 -07:00
Broque Thomas
c74d60b712 batch process 2025-09-05 13:41:24 -07:00
Broque Thomas
8e66a4f692 Update web_server.py 2025-09-04 19:54:52 -07:00
Broque Thomas
ae5582b9a2 Update web_server.py 2025-09-04 15:33:02 -07:00
Broque Thomas
58af02a954 Update web_server.py 2025-09-04 15:03:17 -07:00
Broque Thomas
871dc6cb1c Add artist album download management UI
Introduces backend API and frontend integration for downloading missing tracks from artist albums and singles. Adds artist download bubbles, management modal, and related state/UI logic to script.js, with supporting styles in style.css. Also refactors some type hints in web_server.py for consistency.
2025-09-04 13:23:54 -07:00
Broque Thomas
245c6dfbf2 scan db on artist page 2025-09-03 23:00:20 -07:00
Broque Thomas
cff48b2498 artist design 2025-09-03 18:40:25 -07:00
Broque Thomas
c29c5d6495 artists page 2025-09-03 18:02:44 -07:00
Broque Thomas
36cc15f0a9 fix 2025-09-03 13:32:52 -07:00
Broque Thomas
b08090ebe1 fix 2025-09-03 09:25:02 -07:00
Broque Thomas
f24eedd419 Update web_server.py 2025-09-03 00:04:37 -07:00
Broque Thomas
f39eb561dc download mising tracks 2025-09-02 23:13:41 -07:00
Broque Thomas
ae98bb8806 sync 2025-09-02 21:27:52 -07:00
Broque Thomas
2070e24394 consistency 2025-09-02 14:14:51 -07:00
Broque Thomas
417c76e68c move to backend 2025-09-01 20:34:40 -07:00
Broque Thomas
252eb32bf9 tidal 2025-09-01 19:33:07 -07:00
Broque Thomas
b2c1d21bf0 download missing functionality 2025-09-01 02:37:38 -07:00
Broque Thomas
bde755f6e5 move youtube processing to backend 2025-08-31 21:05:37 -07:00
Broque Thomas
f99c550484 youtube playlists 2025-08-31 14:54:16 -07:00
Broque Thomas
08c55217b6 youtube shell 2025-08-31 13:36:24 -07:00
Broque Thomas
79da4ca7e4 Update web_server.py 2025-08-31 00:02:56 -07:00
Broque Thomas
697a255047 move wishlist processing to backend 2025-08-30 21:18:10 -07:00
Broque Thomas
9f6a98a72d add to wishlist on fail 2025-08-29 22:16:50 -07:00
Broque Thomas
079ac5c81d fix wishlist additions 2025-08-29 18:15:41 -07:00
Broque Thomas
8feffd156b Update web_server.py 2025-08-29 17:27:52 -07:00
Broque Thomas
6f03ba8ed7 Update web_server.py 2025-08-29 16:45:30 -07:00
Broque Thomas
b88467f949 wishlist 2025-08-29 14:33:05 -07:00
Broque Thomas
017d72b38a wishlist button 2025-08-28 22:19:57 -07:00
Broque Thomas
c5617d874e stream 2025-08-28 17:57:04 -07:00
Broque Thomas
330bde6dea Update web_server.py 2025-08-28 14:12:07 -07:00
Broque Thomas
6f770c2d9f Update web_server.py 2025-08-28 14:00:41 -07:00
Broque Thomas
40817c3070 Update web_server.py 2025-08-28 13:29:49 -07:00
Broque Thomas
58e160aba5 cancel button 2025-08-28 13:04:58 -07:00
Broque Thomas
fd9fcf6c90 cleanup batch after closing completed modal 2025-08-27 21:27:10 -07:00
Broque Thomas
6ff6cc0e59 fix a break in front end content from backend 2025-08-27 15:32:20 -07:00
Broque Thomas
17533ae40b persistent when closed 2025-08-27 14:34:06 -07:00
Broque Thomas
ef21decb72 Update web_server.py 2025-08-26 12:21:23 -07:00
Broque Thomas
461718ccc7 Update web_server.py 2025-08-26 10:52:45 -07:00
Broque Thomas
8fa64e3511 Update web_server.py 2025-08-26 10:17:25 -07:00
Broque Thomas
fcdf41aac2 cancel button 2025-08-25 23:30:28 -07:00
Broque Thomas
68c1dca27e Update web_server.py 2025-08-25 23:06:46 -07:00
Broque Thomas
c5eeb4f33a Update web_server.py 2025-08-25 19:56:40 -07:00
Broque Thomas
ef6ad49fa3 Update web_server.py 2025-08-25 19:42:50 -07:00
Broque Thomas
7817e40f31 style 2025-08-25 18:29:39 -07:00
Broque Thomas
a0682b1ae0 Update web_server.py 2025-08-25 16:37:46 -07:00
Broque Thomas
b84a3ae108 progress 2025-08-25 16:16:31 -07:00
Broque Thomas
b9879c4375 closer 2025-08-25 14:36:25 -07:00
Broque Thomas
632f45c68e download missing tracks modal 2025-08-24 21:23:24 -07:00
Broque Thomas
e912be68e7 better 2025-08-24 20:45:40 -07:00
Broque Thomas
db34617978 connect to sync storage 2025-08-24 20:35:59 -07:00
Broque Thomas
628e8b7709 sync working 2025-08-24 19:47:24 -07:00
Broque Thomas
8cee3f0e33 sync page 2025-08-24 17:06:00 -07:00
Broque Thomas
cd9a466e9e database updater 2025-08-24 13:11:54 -07:00
Broque Thomas
2f535d8222 database updater 2025-08-24 12:36:30 -07:00
Broque Thomas
b5e5142910 background processing 2025-08-24 02:46:07 -07:00
Broque Thomas
f1837242e3 Update web_server.py 2025-08-23 23:40:29 -07:00
Broque Thomas
724f385768 matched album downloads 2025-08-23 23:27:30 -07:00
Broque Thomas
edbfe6bb74 matched downloads 2025-08-23 22:18:09 -07:00
Broque Thomas
c5d9b010c9 stream bug 2025-08-23 15:19:43 -07:00
Broque Thomas
886c2e84c8 stream functionality 2025-08-23 15:03:25 -07:00
Broque Thomas
afd5662afa progress 2025-08-23 10:39:12 -07:00
Broque Thomas
bb6be656e0 progress 2025-08-23 09:53:07 -07:00
Broque Thomas
557151b9e7 Revert "downloads page started"
This reverts commit 7c5c149a40.
2025-08-22 16:50:53 -07:00
Broque Thomas
7c5c149a40 downloads page started 2025-08-22 15:20:39 -07:00
Broque Thomas
36b3830a2f settings auto detect fixed 2025-08-22 14:36:30 -07:00
Broque Thomas
d631ad61f8 settings page ready 2025-08-22 12:57:20 -07:00