Commit Graph

180 Commits

Author SHA1 Message Date
joshpatra e3adaae924 fix global playlist cache scope for injection 2026-04-06 10:37:43 -04:00
joshpatra 67db8b185f fix scoped injected playlist matching 2026-04-06 04:10:04 -04:00
joshpatra 579c1e04d8 fix search serialization and warm playlist matching
CI / build-and-test (push) Has been cancelled
2026-04-06 03:51:31 -04:00
joshpatra 885c86358d fix cache serialization fallback for Jellyfin metadata 2026-04-06 03:28:12 -04:00
joshpatra 7550d01667 fix(search): restore album ordering helpers after cherry-pick 2026-04-06 03:14:31 -04:00
joshpatra af54a3eec1 perf(cache): use ValueTask on hot sync paths 2026-04-06 03:13:08 -04:00
joshpatra 7beac7484d perf(images): support conditional ETag responses 2026-04-06 03:13:08 -04:00
joshpatra 997f60b0a8 perf(search): stream merged JSON responses 2026-04-06 03:13:08 -04:00
joshpatra 6965bdc46d perf(jellyfin): stream JSON proxy parsing 2026-04-06 03:10:35 -04:00
joshpatra ad6f521795 perf(json): finish source-generated hot-path serialization 2026-04-06 03:10:35 -04:00
joshpatra 81bae5621a fix(jellyfin): handle external contributing artist album requests as appears-on results 2026-04-06 03:10:35 -04:00
joshpatra dc225945f8 feat(jellyfin): add per-request multi-user support 2026-04-06 03:10:35 -04:00
joshpatra 8be544bdfc feat(cache): add IMemoryCache tier in front of Redis and cover invalidation paths 2026-04-06 03:10:35 -04:00
joshpatra e34c4bd125 perf: add System.Text.Json source generators for hot-path serialization 2026-04-06 03:10:34 -04:00
joshpatra b1808bd60c perf: use named HttpClient with SocketsHttpHandler connection pooling for Jellyfin backend 2026-04-06 03:10:34 -04:00
joshpatra 8239316019 chore: version bump 2026-04-06 03:02:50 -04:00
joshpatra e8e7f69e13 fix(search): add jellyfin-compatible external item fields
CI / build-and-test (push) Has been cancelled
2026-04-05 17:41:24 -04:00
joshpatra 815a75fd56 feat(search): implement fifo queue merge scoring 2026-04-05 17:39:46 -04:00
joshpatra 9d58cdd1bd tune(search): restore jellyfin lead boost 2026-04-05 17:16:20 -04:00
joshpatra 806511d727 fix(search): preserve native source ordering 2026-04-05 17:14:49 -04:00
joshpatra 02967c8c67 chore: version bump
CI / build-and-test (push) Has been cancelled
2026-04-04 17:34:38 -04:00
joshpatra bf6fa4e647 Add support footer and login badge to admin UI 2026-04-04 16:19:30 -04:00
joshpatra 04e0c357aa fix(search: true interleaving 2026-04-04 16:18:03 -04:00
joshpatra ee98464475 fix(jellyfin): return cached search responses as raw json
CI / build-and-test (push) Has been cancelled
2026-04-03 15:17:29 -04:00
joshpatra 66f64d6de7 fix: preserve Jellyfin remote control sessions
Forward session control requests transparently and avoid synthetic websocket or capability state overriding proxied client sockets.
2026-04-03 14:02:54 -04:00
joshpatra 8d3fde8fb9 fix: stale playlist artwork
CI / build-and-test (push) Has been cancelled
2026-03-30 02:40:29 -04:00
joshpatra 51d3d784b5 fix: performance improvements 2
CI / build-and-test (push) Has been cancelled
2026-03-30 02:12:22 -04:00
joshpatra dbc7bd6ea1 fix: performance improvements 2026-03-30 02:01:58 -04:00
joshpatra b54d41f560 feat: performance improvement for uninjected playlists 2026-03-30 01:56:26 -04:00
joshpatra 877d2ffddf v1.4.4: re-releasing tag
Docker Build & Push / build-and-test (push) Has been cancelled
Docker Build & Push / docker (push) Has been cancelled
v1.4.4
2026-03-25 16:30:51 -04:00
joshpatra 0a5b383526 v1.4.3: fixed .env restarting from Admin UI, re-release of prev ver v1.4.3 2026-03-25 16:11:27 -04:00
joshpatra 5c184d38c8 v1.4.2: added an env migration service, fixed DOWNLOAD_PATH requiring Subsonic settings in the backend
Docker Build & Push / build-and-test (push) Has been cancelled
Docker Build & Push / docker (push) Has been cancelled
v1.4.2
2026-03-24 11:11:46 -04:00
joshpatra 4b423eecb2 Updated funding sources in funding.yml
Docker Build & Push / build-and-test (push) Has been cancelled
Docker Build & Push / docker (push) Has been cancelled
2026-03-23 13:12:22 -04:00
joshpatra d4230a2f79 v1.4.1: MAJOR FIX - Moved from Redis to Valkey, added migration service to support, Utilizing Hi-Fi API 2.7 with ISRC search, preserve local item json objects, add a quality fallback, added "transcoding" support that just reduces the fetched quality, while still downloading at the quality set in the .env, introduced real-time download visualizer on web-ui (not complete), move some stuff from json to redis, better retry logic, configurable timeouts per provider v1.4.1 2026-03-23 11:20:28 -04:00
joshpatra 299cb025f1 v1.3.3: MAJOR FIX - fix auto logging out behavior, harden Jellyfin Auth, block bot probes earlier, let Jellyfin handle playback sessions, add [E] tag to explicit external tracks
Docker Build & Push / build-and-test (push) Has been cancelled
Docker Build & Push / docker (push) Has been cancelled
v1.3.3
2026-03-12 19:14:17 -04:00
joshpatra b737db93be whoops, forgot version bump v1.3.2 2026-03-12 15:36:07 -04:00
joshpatra 953719e796 version bump 2026-03-12 15:35:36 -04:00
joshpatra ecdd514579 v1.3.1: MAJOR FIX - fix auto logging out behavior, harden Jellyfin Auth, block bot probes earlier, let Jellyfin handle playback sessions, add [E] tag to explicit external tracks v1.3.1 2026-03-12 15:35:04 -04:00
joshpatra 48b40f89c0 v1.3.0: Massive WebUI cleanup, Fixed/Stabilized scrobbling, Significant security hardening, added user login to WebUI, refactored searching/interleaving to work MUCH better, Tidal Powered recommendations for SquidWTF provider, Fixed double scrobbling, inferring stops much better, fixed playlist cron rebuilding, stale injected playlist artwork, and search cache TTL
Docker Build & Push / build-and-test (push) Has been cancelled
Docker Build & Push / docker (push) Has been cancelled
v1.3.0
2026-03-06 01:59:30 -05:00
joshpatra dfac3c4d60 Update issue templates
Docker Build & Push / build-and-test (push) Has been cancelled
Docker Build & Push / docker (push) Has been cancelled
2026-02-21 00:24:59 -05:00
joshpatra f3091624ec v1.1.3: version bump, removed duplicate method; this is why we run tests... v1.1.3 2026-02-20 20:02:27 -05:00
joshpatra 375b7c6909 v1.1.1: SCROBBLING, fixed and rewrote caching, refactored and fixed WebUI, fixed logs, fixed cron scheduling bugs, hardened security, added Global Mappings, made the proxy more 'transparent', added playlists from Tidal to search
Docker Build & Push / build-and-test (push) Has been cancelled
Docker Build & Push / docker (push) Has been cancelled
v1.1.1
2026-02-20 18:59:37 -05:00
joshpatra 40338ce25f v1.0.0: Lots of WebUI fixes, API fixes, refactored all of caching, general bug fixes, redid all log messages
Docker Build & Push / build-and-test (push) Has been cancelled
Docker Build & Push / docker (push) Has been cancelled
v1.0.0
2026-02-11 23:24:40 -05:00
joshpatra f68706f300 Release v1.1.1 - Download Structure Fix
Docker Build & Push / build-and-test (push) Has been cancelled
Docker Build & Push / docker (push) Has been cancelled
Fixed cache and permanent files to use unified downloads/ structure instead of separate paths.
2026-02-08 01:51:18 -05:00
joshpatra 9f362b4920 Release v1.1.0 - Configuration Simplification
Configuration Changes:
- Removed sync window logic from Spotify Import (no more SYNC_START_HOUR, SYNC_START_MINUTE, SYNC_WINDOW_HOURS)
- Simplified to: fetch on startup if cache missing, check every 5 minutes for stale cache
- Unified download folder structure: downloads/{permanent,cache,kept}/ instead of separate paths
- Removed Library:KeptPath config, now uses downloads/kept/

Documentation:
- Updated README with clearer Spotify Import configuration
- Updated .env.example to reflect simplified settings
- Removed MIGRATION.md from repository (local-only file)

Bug Fixes:
- Web UI now correctly displays kept tracks in Active Playlists tab
- Fixed path handling for favorited tracks
2026-02-08 01:33:09 -05:00
joshpatra 2b09484c0b Release v1.0.0 - Production Ready
Major Features:
- Spotify playlist injection with missing tracks search
- Transparent proxy authentication system
- WebSocket session management for external tracks
- Manual track mapping and favorites system
- Lyrics support (Spotify + LRCLib) with prefetching
- Admin dashboard with analytics and configuration
- Performance optimizations with health checks and endpoint racing
- Comprehensive caching and memory management

Performance Improvements:
- Quick health checks (3s timeout) before trying endpoints
- Health check results cached for 30 seconds
- 5 minute timeout for large artist responses
- Background Odesli conversion after streaming starts
- Parallel lyrics prefetching
- Endpoint benchmarking and racing
- 16 SquidWTF endpoints with load balancing

Reliability:
- Automatic endpoint fallback and failover
- Token expiration handling
- Concurrent request optimization
- Memory leak fixes
- Proper session cleanup

User Experience:
- Web UI for configuration and playlist management
- Real-time progress tracking
- API analytics dashboard
- Manual track mapping interface
- Playlist statistics and health monitoring
2026-02-08 00:43:47 -05:00
joshpatra fa9739bfaa docs: update README
Docker Build & Push / build-and-test (push) Has been cancelled
Docker Build & Push / docker (push) Has been cancelled
2026-01-31 11:16:00 -05:00
joshpatra 0ba51e2b30 fix: improve auth, search, and stability
Docker Build & Push / build-and-test (push) Has been cancelled
Docker Build & Push / docker (push) Has been cancelled
2026-01-31 01:14:53 -05:00
joshpatra bc4e5d9442 fix: enable deduplication for cache mode
Docker Build & Push / build-and-test (push) Has been cancelled
Docker Build & Push / docker (push) Has been cancelled
- Cache mode now registers downloaded songs in mappings
- Prevents duplicate downloads in cache mode
- Fixes wasted API calls and duplicate cache files
- Both cache and download modes benefit from deduplication
2026-01-30 14:11:47 -05:00
joshpatra 2297455923 fix: prevent duplicate downloads by registering before releasing lock
- Race condition fixed where multiple threads could download same song
- RegisterDownloadedSongAsync now called before lock release
- Second thread finds registered mapping and skips download
- Eliminates duplicate files with (1), (2) suffixes
2026-01-30 13:38:36 -05:00