Commit graph

309 commits

Author SHA1 Message Date
Broque Thomas
2d61b0d076 Update to v1.2 with enhanced search and matching
Bumps SoulSync version to 1.2, introducing a unified multi-source search system, a major overhaul of the matching engine for improved accuracy, and significant wishlist and quality-of-life improvements. Updates version info and UI elements to reflect the new release and its features.
2025-12-30 19:47:54 -08:00
Broque Thomas
ca130e5000 Update script.js 2025-12-30 11:43:43 -08:00
Broque Thomas
420044387e Add streaming for enhanced search tracks
Introduces a backend API endpoint and frontend logic to allow users to stream individual tracks directly from enhanced search results. Updates the UI to include a play button for each track, adjusts the search mode toggle to default to enhanced search, and refines related styles for improved user experience.
2025-12-29 18:13:50 -08:00
Broque Thomas
0bd1cab9e2 Improve enhanced search results toggle UX
Updated the enhanced search button to toggle showing/hiding previous results, with dynamic icon and text changes. Prevented duplicate event listeners by ensuring single initialization. Improved dropdown visibility logic and user feedback when no results are available.
2025-12-29 15:54:47 -08:00
Broque Thomas
0743070c84 Update style.css 2025-12-29 15:07:52 -08:00
Broque Thomas
d20609c33b Add search bubble snapshot and download tracking system
Implements a persistent search bubble system for tracking album and track downloads in enhanced search. Adds backend API endpoints for saving and hydrating search bubble snapshots, frontend state management for search download bubbles, UI for displaying and managing active/completed downloads, and associated styles for search bubble cards. This enables users to resume and manage search downloads across page refreshes.
2025-12-29 14:33:59 -08:00
Broque Thomas
a431ec0bd6 Improve enhanced search UI and increase track results
Increased the number of tracks returned by enhanced search from 10 to 20. Updated CSS for enhanced search sections and artist cards to improve visual appearance, spacing, and responsiveness, including larger artist images, new backgrounds, and better layout for various screen sizes.
2025-12-29 12:37:05 -08:00
Broque Thomas
926de6d833 Update style.css 2025-12-29 12:14:21 -08:00
Broque Thomas
1d4fc3b96e include duration in unified search single results. 2025-12-29 11:02:37 -08:00
Broque Thomas
7272860696 Improve artist detail navigation and logging
Updated artist selection actions to log navigation events and use more direct navigation functions. Navigating to library artist details now uses navigateToArtistDetail, and Spotify artist details use selectArtistForDetail after a short delay, improving consistency and user experience.
2025-12-29 10:17:41 -08:00
Broque Thomas
a167a00a0a Add enhanced search with categorized dropdown UI
Implements an enhanced search endpoint in the backend that unifies Spotify and local database results, returning categorized artists, albums, and tracks. Updates the frontend with a new dropdown overlay for live search, debounced input, categorized result rendering, and direct integration with the main results area for album/track selection. Adds new CSS for the dropdown and result cards, and updates the Track dataclass to include image URLs for richer UI display.
2025-12-29 09:56:32 -08:00
Broque Thomas
14a5944ae1 Add enhanced search mode UI and retry logic for downloads
Introduces a search mode toggle in the downloads UI, allowing users to switch between basic and enhanced search modes. Adds new HTML structure, JavaScript logic, and CSS styles for the enhanced search interface (currently placeholder functionality). In the backend, implements a retry system for file discovery after download completion to handle race conditions, with cleanup of stale retry attempts to prevent memory leaks.
2025-12-28 22:24:23 -08:00
Broque Thomas
5d29131530 Add configurable Soulseek search timeout and buffer
Introduces 'search_timeout' and 'search_timeout_buffer' options to Soulseek settings in the config, backend, and web UI. The backend now uses these values to control search duration and polling, allowing users to fine-tune how long searches run and how long to wait for late results.
2025-12-28 21:02:01 -08:00
Broque Thomas
a2bdb93498 Improve matching logic and wishlist album display
Enhanced the music matching engine to use stricter version handling, rebalance title/artist/duration weights, and raise confidence thresholds to reduce false positives. Updated string normalization to better handle separators and special characters. In the web UI, improved album ID sanitization and added a placeholder for missing album images in the wishlist view.
2025-12-28 19:23:50 -08:00
Broque Thomas
b4e4d6f07a Update style.css 2025-12-15 21:39:40 -08:00
Broque Thomas
4c9f7f3b58 Fix wishlist modal overlay and enable vertical scrolling
Ensures the loading overlay is always hidden when opening the wishlist modal, including on error or early return. Updates CSS to allow vertical scrolling in the modal while keeping horizontal overflow hidden.
2025-12-15 11:21:17 -08:00
Broque Thomas
b50f6c8d9f Add limit parameter to wishlist tracks API
Introduces an optional 'limit' query parameter to the /api/wishlist/tracks endpoint for improved performance when fetching tracks. Updates the frontend to use this parameter, limiting requests to 50 tracks per category when fetching album and single covers.
2025-12-13 08:32:42 -08:00
Broque Thomas
e9c9021db0 Add animated mosaic backgrounds to wishlist categories
Introduces a dynamic mosaic grid background with scrolling album covers for the wishlist category cards in the overview modal. Adds supporting JavaScript functions to extract unique cover images and generate the mosaic HTML, and updates CSS to style and animate the mosaic, including fallbacks and hover effects for improved visual appeal.
2025-12-12 23:02:28 -08:00
Broque Thomas
fca3e641dc Improve artist name extraction in wishlist selection
Enhanced the logic for extracting artist name and ID to handle both object and string formats from Spotify API and sanitized data. Added fallbacks to ensure artist information is correctly retrieved from multiple possible data structures.
2025-12-12 21:19:29 -08:00
Broque Thomas
4587022877 Remove source prefixes from playlist names
Eliminates hardcoded source prefixes (e.g., [Tidal], [YouTube], [Beatport], [ListenBrainz]) from playlist names in both backend and frontend code. Source detection is now handled via virtualPlaylistId prefixes, improving consistency and simplifying playlist name handling throughout the application.
2025-12-12 12:36:45 -08:00
Broque Thomas
8f30f0ab91 Enhance matched downloads with full Spotify metadata
Adds robust track-to-track matching for album and single downloads, enabling enhanced metadata enrichment using Spotify data. Updates both backend and frontend to support matching Soulseek tracks to Spotify tracks, sending full Spotify track objects for improved organization and post-processing. Simplifies context handling for simple downloads and removes legacy flags, ensuring more accurate and consistent metadata for matched downloads.
2025-12-12 07:13:53 -08:00
Broque Thomas
c7e943034d Add customizable file organization templates
Introduces a template-based file organization system for downloads, allowing users to define custom folder and filename structures for albums, singles, and playlists. Updates the backend, config example, web UI, and client-side validation to support template editing, resetting, and error checking. Improves consistency in file placement and metadata handling across all download modes.
2025-12-10 09:46:22 -08:00
Broque Thomas
5e866463ea Prevent duplicate playlist syncs and update UI
Added checks to prevent starting multiple syncs for the same playlist and updated the sync button state immediately for better user feedback. The sync button is now disabled and shows a loading state while syncing is in progress.
2025-12-09 11:36:59 -08:00
Broque Thomas
bab31218bb Improve artist handling and preserve album data in sync
Enhanced handling of artist data to support both string and object formats across the database, sync service, and web server. The sync process now preserves full album and artist objects for tracks, enabling wishlist additions with album cover art. The frontend and API were updated to use the full artist objects, and the UI now formats artist names correctly.
2025-12-09 10:44:54 -08:00
Broque Thomas
c1561b15ab Add dynamic log level control via Web UI
Introduces API endpoints and UI elements to view and change the application's log level from the web interface. Log level changes are applied immediately and persisted in the database. Updates backend logic, logging utilities, and frontend scripts to support this feature.
2025-12-08 12:53:44 -08:00
Broque Thomas
25a8117733 Add wishlist track and album removal with confirmation
Introduces backend API endpoints to remove individual tracks or all tracks from an album in the wishlist. Updates the frontend to display delete buttons for tracks and albums, with confirmation modals before removal, and styles these new UI elements for clarity and usability.
2025-12-08 11:11:08 -08:00
Broque Thomas
b42d0252a1 Add Jellyfin music library selection support
Introduces backend and frontend functionality to list and select Jellyfin music libraries. Adds API endpoints, updates the client logic, and provides a UI selector for users to choose their preferred Jellyfin music library.
2025-12-08 10:20:15 -08:00
Broque Thomas
349d653ca0 Prevent race conditions in wishlist downloads
Adds support for sending specific track IDs from the frontend to the backend when starting wishlist missing downloads. This ensures only the tracks currently visible to the user are processed, preventing race conditions if the wishlist changes between modal open and analysis start. Category filtering remains for backward compatibility.
2025-12-07 14:43:43 -08:00
Broque Thomas
9575d8983c add timer to watchlist/wishlist 2025-11-26 12:14:08 -08:00
Broque Thomas
aba4129193 adjust auto watchlist scan ui 2025-11-26 11:58:29 -08:00
Broque Thomas
14548ec640 watchlist stuck fix 2025-11-26 11:11:28 -08:00
Broque Thomas
28d8dbf5e0 fix listenbrainz wishlist comp 2025-11-25 23:34:56 -08:00
Broque Thomas
e8f9803bd5 Update script.js 2025-11-25 22:07:26 -08:00
Broque Thomas
94fd39cf34 listenbrainz persistence bug 2025-11-25 18:36:59 -08:00
Broque Thomas
a61c581c25 listenbrainz fully connected to discovery modal 2025-11-25 17:41:22 -08:00
Broque Thomas
ffe02d5330 listenbrainz discovery fix 2025-11-25 15:13:41 -08:00
Broque Thomas
6db4409d08 better watchlist live status display for auto and manual scan 2025-11-25 09:21:33 -08:00
Broque Thomas
1749bb62a5 foundation for allowing user to decide which releases to grab per watchlist artist 2025-11-24 17:16:12 -08:00
Broque Thomas
bb816be280 update discoveyr modal to grab album data 2025-11-24 14:51:24 -08:00
Broque Thomas
3be1dc9ace update discovery modal to collect album info 2025-11-24 14:22:32 -08:00
Broque Thomas
178bb7696d update liked songs to include album info 2025-11-24 07:19:15 -08:00
Broque Thomas
c46e2c527e search bar for watchlist 2025-11-23 20:23:30 -08:00
Broque Thomas
8798522854 v1.1 modal udpated 2025-11-23 19:53:45 -08:00
Broque Thomas
cb87496857 clear/clean wishlist button in overview 2025-11-23 19:43:21 -08:00
Broque Thomas
0b2322f225 Wishlist overhaul near complete 2025-11-23 18:22:09 -08:00
Broque Thomas
573bd6080c Feat: Added 'add to wishlist' button on all download missing track modals. 2025-11-23 13:25:35 -08:00
Broque Thomas
3b936d6fdb Update script.js 2025-11-21 18:56:09 -08:00
Broque Thomas
b1391b9466 add failed scan items to wishlist. 2025-11-21 15:29:25 -08:00
Broque Thomas
08e3f6c900 fix liked songs 2025-11-21 13:31:26 -08:00
Broque Thomas
69ea705f5d fix wishlist duplicates 2025-11-19 09:47:56 -08:00