Broque Thomas
ef43e4b5a6
Add album pre-flight search to find complete album folders before track-by-track downloading
2026-03-12 10:23:29 -07:00
Broque Thomas
4d2487db81
Guard all direct Spotify API calls against rate limit ban
2026-03-12 10:00:06 -07:00
Broque Thomas
9557e6bdd3
Fix sync stuck at 80% — serialize datetime in SyncResult for WebSocket emit
2026-03-12 08:52:08 -07:00
Broque Thomas
691e026208
Fix Tidal API search — correct endpoint casing, JSON:API Accept header, and best-match selection
2026-03-11 22:51:51 -07:00
Broque Thomas
ac2c710a1e
Tidal & Qobuz Background Enrichment Workers
2026-03-11 21:26:20 -07:00
Broque Thomas
fb04d0f4bc
Full qobuz support
2026-03-11 17:43:27 -07:00
Broque Thomas
f4d8280642
css & error notification fixes
2026-03-11 14:56:45 -07:00
Broque Thomas
d329dd4fe8
Fix Tidal playlist endpoints redundantly re-fetching all playlists — use direct single-playlist fetch
2026-03-11 13:50:53 -07:00
Broque Thomas
e42f373f80
Isolate service client initialization so one failure doesn't break the entire app
2026-03-11 11:25:15 -07:00
Broque Thomas
bde2be1cfa
Spotify rate limit re-trigger loop caused by periodic auth probes
2026-03-11 08:28:36 -07:00
Broque Thomas
0aa8950436
fix build a playlist functionality and update the ui
2026-03-11 07:52:58 -07:00
Broque Thomas
e5450d9f89
Help Docs Overhaul & Settings Fixes
2026-03-10 23:50:21 -07:00
Broque Thomas
c06fd044a1
Profile Permissions & Page Access Control
2026-03-10 23:23:43 -07:00
Broque Thomas
a159ac3fd6
Fix activity feed blinking and show live relative timestamps
2026-03-10 20:34:57 -07:00
Broque Thomas
b75f115a85
update latest updates
2026-03-10 15:50:31 -07:00
Broque Thomas
58a2f1ac4a
Fix iTunes country setting not persisting on save
2026-03-10 13:27:30 -07:00
Broque Thomas
08cc10c909
update latest updates
2026-03-10 12:59:13 -07:00
Broque Thomas
7138125b9e
Fix post-processing race condition logging errors on already-moved files
2026-03-10 11:30:55 -07:00
Broque Thomas
dbe0ce4db4
Fix playlist folder mode race condition where second thread deletes successfully moved file
2026-03-10 10:01:39 -07:00
Broque Thomas
6506c2f163
update latest updates
2026-03-10 09:28:55 -07:00
Broque Thomas
dc7140c459
Add Last.fm and Genius to on-demand enrichment, settings reload, and enrich dropdown parity
2026-03-10 09:12:36 -07:00
Broque Thomas
f8d23ec37c
Add Last.fm and Genius API clients with settings integration
2026-03-09 22:35:10 -07:00
Broque Thomas
aa93458ed3
Configurable ListenBrainz API endpoint for self-hosted instances
2026-03-09 20:52:33 -07:00
Broque Thomas
bbccd3524f
Explicit content filter with configurable toggle to skip explicit tracks during downloads
2026-03-09 20:39:40 -07:00
Broque Thomas
16e01f6039
Pause enrichment workers during discovery to prioritize user-initiated API calls
2026-03-09 19:42:48 -07:00
Broque Thomas
d1890c768c
cleanup staging folder same as download folder
2026-03-09 17:10:35 -07:00
Broque Thomas
07a79e7af6
Full Cleanup automation: combined housekeeping sweep for quarantine, downloads, staging, and search history
2026-03-09 16:39:29 -07:00
Broque Thomas
6e16596b9d
update recent updates
2026-03-09 16:07:43 -07:00
Broque Thomas
eac97a6c2b
Smart Spotify rate limit detection with global ban, auto-suppression, and frontend modal
2026-03-09 16:05:33 -07:00
Broque Thomas
1ea262c749
fix cover images not appearing in music player modal
2026-03-09 14:55:23 -07:00
Broque Thomas
cc4502e5f8
Add server sync option to enhanced library write-tags flow
2026-03-09 14:17:56 -07:00
Broque Thomas
7411bd1eab
Clarify update notification for Docker users that image will follow
2026-03-09 13:15:03 -07:00
Broque Thomas
b3d607752b
Add version tracking to database backup manager & Fix radio mode next track closing modal and losing playback state
2026-03-09 13:10:25 -07:00
Broque Thomas
abec2965ac
Fix playlist folder downloads marked as failed despite successful processing
2026-03-09 12:04:57 -07:00
Broque Thomas
aebaa900c9
recent updates updated
2026-03-09 11:53:23 -07:00
Broque Thomas
8d46d3746b
Fix Docker upgrade crashes from stale volume mounts and partial DB migrations
2026-03-09 11:44:00 -07:00
Broque Thomas
ea1441d09d
"Write Tags to File" in the Enhanced Library Manager
2026-03-09 11:17:01 -07:00
Broque Thomas
5f58432ca4
Redesigned media player with expanded Now Playing modal and smart radio
2026-03-09 10:13:42 -07:00
Broque Thomas
acc88441c2
update latest updates.
2026-03-08 23:39:40 -07:00
Broque Thomas
7c50f350c0
Add a library management interface to the artist detail page with inline metadata editing, per-service manual matching, bulk operations, and full track/album management.
2026-03-08 23:37:02 -07:00
Broque Thomas
5f94352b40
Add cancellation support to all discovery workers
2026-03-08 18:12:37 -07:00
Broque Thomas
3f4770a735
Fix quality scanner stop button, rate limiting, and redundant Spotify client
2026-03-08 12:58:14 -07:00
Broque Thomas
b0761a6e62
update version modal
2026-03-08 12:33:41 -07:00
Broque Thomas
5daa8c0596
Add rich stats to automation run history
2026-03-08 12:20:50 -07:00
Broque Thomas
266d044797
Add Backup Manager dashboard tool card with list, download, restore & delete
2026-03-08 10:46:03 -07:00
Broque Thomas
b1cb9f9964
Add scheduled database backup system automation
2026-03-08 08:24:49 -07:00
Broque Thomas
2ef0c75a25
Fix sync completion not reaching UI after WebSocket reconnect
2026-03-07 22:53:15 -08:00
Broque Thomas
8b3b82702a
Add deep library scan automation for enrichment-safe sync
2026-03-07 18:39:45 -08:00
Broque Thomas
ddd7f2d9b5
Persist mirrored playlist discovery results & retry failed
2026-03-07 17:28:17 -08:00
Broque Thomas
e11ee8622e
Fix discovery modal persistence, artist dict handling, and rate limiter scope
2026-03-07 13:05:49 -08:00
Broque Thomas
d97b3d1846
Fix automation timezone bug
2026-03-07 11:42:44 -08:00
Broque Thomas
dbe9745794
Add new automations for refreshing beatport, cleaning download folder and cleaning search history.
2026-03-07 11:11:43 -08:00
Broque Thomas
93a83f0417
Guard against string album values in wishlist spotify_data to prevent AttributeError
2026-03-07 10:17:06 -08:00
Broque Thomas
b34e348937
keep a history of automation runs
2026-03-07 09:39:08 -08:00
Broque Thomas
ba6aea5435
Add rich progress tracking to all automation cards with stall detection and timeout handling
2026-03-07 00:57:03 -08:00
Broque Thomas
41e895d254
Batch watchlist status checks to eliminate rate limit errors
2026-03-06 23:41:01 -08:00
Broque Thomas
cdcaa245d1
Add post-scan phase progress to watchlist automation card
2026-03-06 23:15:30 -08:00
Broque Thomas
c2af4152ab
Add live status feed to database update automation card
2026-03-06 21:42:43 -08:00
Broque Thomas
4fa66b8981
Fix batch completion detection for post-processing race condition
2026-03-06 20:53:06 -08:00
Broque Thomas
156c37d907
Replace hardcoded post-download chain with system automations
2026-03-06 19:48:48 -08:00
Broque Thomas
8b6a2c0adc
allow multiple notification calls per automation as well as a new signal fire utility
2026-03-06 18:10:15 -08:00
Broque Thomas
7647ac22ed
Add Discovery Pool dashboard tool card and revamp modal with premium category-card design
2026-03-06 11:59:45 -08:00
Broque Thomas
c9d83d5d13
Fix Tidal OAuth PKCE verification on Flask callback route
2026-03-06 10:27:17 -08:00
Broque Thomas
d264ec70f3
Add sync match cache and fix discovery clear to purge cache
2026-03-06 09:41:44 -08:00
Broque Thomas
b775d290ae
Update web_server.py
2026-03-06 08:41:28 -08:00
Broque Thomas
7485ba8aa2
fix issue with tracking auto sync playlist node
2026-03-06 08:01:17 -08:00
Broque Thomas
69d16ec402
Fix sync playlist node
2026-03-05 22:18:58 -08:00
Broque Thomas
3af8c941b0
speed up discovery node
2026-03-05 22:10:28 -08:00
Broque Thomas
db03735183
Update web_server.py
2026-03-05 22:04:33 -08:00
Broque Thomas
17babb1fc8
fix spotify playlist discover automation
2026-03-05 21:17:58 -08:00
Broque Thomas
9f416475e2
Live automation progress tracking with real-time output panels
2026-03-05 20:39:26 -08:00
Broque Thomas
d57b48a62a
Playlist discovery pipeline with official metadata enforcement for automated sync
2026-03-05 18:32:18 -08:00
Broque Thomas
f99f873d60
Replace hardcoded wishlist/watchlist timers with system automations + add Pushbullet & Telegram notifications
2026-03-05 16:50:09 -08:00
Broque Thomas
da707dcf0a
Full automation engine expansion with scheduling, triggers, actions, and UI polish
2026-03-05 15:13:32 -08:00
Broque Thomas
75f9b7364a
User configurable youtube rate limiting and optional cookies for bot detection
2026-03-05 10:50:06 -08:00
Broque Thomas
aef056cfcb
DB-first metadata updater
2026-03-05 10:03:39 -08:00
Broque Thomas
5938f6fec7
Fix download retry fallback not cycling through available sources
2026-03-04 20:16:24 -08:00
Broque Thomas
60f93d5858
hydrabase changes
2026-03-04 19:48:12 -08:00
Broque Thomas
f051292e0d
update version modal
2026-03-04 18:32:03 -08:00
Broque Thomas
b30e1f60bd
Add Mirrored Playlists — persistent cross-service playlist archive
...
Automatically mirrors every parsed playlist (Spotify, Tidal, YouTube, Beatport) to a local database so they're always accessible — even if a service subscription lapses or the browser closes.
- New "Mirrored" tab on the Sync page with source-branded cards showing discovery/download status
- Auto-mirrors on successful parse (upsert — re-parsing updates the existing mirror, no duplicates)
- Click any mirrored playlist to browse its full track list, then run it through the discovery pipeline
- Cards dynamically reflect live state: Discovering → Discovered → Downloading → Downloaded
- Download modal rehydrates after page refresh — click a "Downloading..." card to resume viewing progress
- All phase transitions (start, complete, cancel, error, modal close) keep card and backend state in sync
- Profile-scoped via profile_id, consistent with other features
2026-03-04 18:27:18 -08:00
Broque Thomas
114af496c7
Track version
2026-03-04 11:32:40 -08:00
Broque Thomas
1bec9320b4
update version modal
2026-03-04 11:11:31 -08:00
Broque Thomas
2d6c55e294
Fix chromaprint crash on surround audio and Spotify worker status display
2026-03-04 11:00:34 -08:00
Broque Thomas
4fee005dee
Add multi-profile support with Netflix-style profile picker
...
Allow multiple users to share a single SoulSync instance with isolated personal data. Each profile gets its own watchlist, wishlist, discovery pool, similar artists, and bubble snapshots — while sharing the same music library, database, and service credentials.
- Netflix-style profile picker on startup when multiple profiles exist
- Optional PIN protection per profile; admin PIN required when >1 profiles
- Admin-only profile management (create, edit, rename, delete)
- Profile avatar images via URL with colored-initial fallback
- Zero-downtime SQLite migration — all existing data maps to auto-created
admin profile
- Single-user installs see no changes — profile system is invisible until
a second profile is created
- WebSocket count emitters scoped to profile rooms (watchlist/wishlist)
- Background scanners (watchlist, wishlist, discovery) iterate all profiles
2026-03-04 10:46:08 -08:00
Broque Thomas
84de4ad16b
Redesign watchlist modal with enriched artist detail view
2026-03-03 20:26:21 -08:00
Broque Thomas
0f428dc45c
Add WebSocket real-time updates with automatic HTTP polling fallback
...
Migrates 38 HTTP polling loops to WebSocket push events across 6 phases: service status, dashboard stats, enrichment workers, tool progress, sync/discovery progress, and scan status. All original HTTP polling is preserved as automatic fallback — if WebSocket is unavailable or disconnects, the app seamlessly reverts to its previous behavior. Includes 162 tests verifying event delivery, data shape, and HTTP parity. Also fixes a copy-paste bug in Beatport sync error cleanup.
2026-03-03 18:26:29 -08:00
Broque Thomas
7b854baba8
Detect and remove deleted content during incremental database updates
...
Incremental database updates now detect when artists or albums have been removed from your media server (Plex, Jellyfin, or Navidrome) and automatically clean them up from SoulSync's database. Previously, deleted content would persist as ghost entries until you ran a full refresh. Removal counts are reported in the scan results. Includes safety checks to prevent accidental mass deletion if the server is unreachable or returns incomplete data.
2026-03-03 13:13:38 -08:00
Broque Thomas
65bae58cfe
Reverse proxy fix
2026-03-03 12:04:53 -08:00
Broque Thomas
d9aa8303a7
Add SoulSync REST API (v1) with API key authentication
...
Adds a full public REST API at /api/v1/ with 32 endpoints covering library, search, downloads, wishlist, watchlist, playlists, system status, and settings. Includes API key authentication (Bearer token), per-endpoint rate limiting, and consistent JSON response format. API keys can be generated and managed from the Settings page. No changes to existing functionality — the API delegates to the same backend services the web UI uses.
2026-03-03 09:49:00 -08:00
Broque Thomas
7a4cbc066f
Fix infinite monitor loop on post-processing completed tasks
2026-03-02 12:50:20 -08:00
Broque Thomas
c4778bc269
wishlist should always 'force download all'
2026-03-02 12:46:39 -08:00
Broque Thomas
df33adf6a7
include 'add to watchlist' button to each artist in library.
2026-03-02 10:04:10 -08:00
Broque Thomas
1f73ba4f94
view recommended artists.
2026-03-02 09:12:35 -08:00
Broque Thomas
8f2dd66aee
add a 'watch all' button on hero slider to quickly add all artists in slider.
2026-03-02 08:40:22 -08:00
Broque Thomas
db2f7e999c
Fix ListenBrainz database path not respecting DATABASE_PATH env var
2026-03-02 07:46:42 -08:00
Broque Thomas
c279f2e4fa
Design retag layout
2026-03-01 22:52:27 -08:00
Broque Thomas
6df61d6ba1
use watchlist artist name
2026-03-01 19:24:12 -08:00
Broque Thomas
4fba18b25e
Feat: Custom accent colors.
2026-03-01 15:29:37 -08:00
Broque Thomas
1aa6cdc9b6
Rebuild the import feature and move it to its own page.
2026-03-01 14:18:55 -08:00
Broque Thomas
e38c0adc57
Fix: Various artist compilations caused failure on acoustID check.
2026-03-01 11:39:04 -08:00