2 Commits

Author SHA1 Message Date
Your Name f2a443c6e3 v1.4.0: sequential enrichment, GPU auto-detection, repo cleanup
- Run audio analysis and vibe embedding phases sequentially to prevent
  resource contention (CPU/memory) from concurrent analyzers
- Auto-detect GPU availability in both audio analyzers (CUDA/ROCm)
- Fix false lite mode detection on startup by checking analyzer scripts
  on disk before falling back to heartbeat/DB checks
- Fix Dockerfile NEXT_PUBLIC_BACKEND_URL and frontend rewrite proxy
- Route enrichment failures through notification system instead of
  persistent error banner
- Remove playback error banner from player components
- Reduce enrichment cycle interval from 6h to 2h
- Comprehensive repo cleanup: remove 127 decorative comment dividers
  across 17 files, clean verbose comments, harden .gitignore, remove
  tracked docs from git

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 09:59:51 -06:00
Your Name 7e032211f9 release: v1.3.3 - Performance & Stability
## Performance Improvements

### Library Page
- Service Worker image caching with request throttling (8 concurrent, 10ms delay)
- React Query `select` option for memoized sorting (prevents re-sort on every render)
- Reduced grid image sizes from 300px to 200px (~44% smaller payloads)
- Removed legacy imageCache.ts and useCachedImage.ts in favor of SW caching

### Search
- Added 250ms debounce to prevent excessive API calls during typing
- AbortSignal support cancels in-flight requests when query changes
- Backend query optimizations (UNION ALL, EXISTS subqueries)

### UI
- PlayableCard: CSS-only hover (group-hover:) instead of useState re-renders
- Radio page: Fixed play button icon fill (fill-current class)

## Bug Fixes (Hotfixes included in release)

### Critical
- Firefox FLAC playback fix (#42/#17) - Manual range request handling
- Login "Internal Server Error" on NAS (#75) - Production build optimization
- Podcast seek crash - AbortController for upstream request cleanup
- API rate limiter crash - Proxy validation disabled

### Stability
- PostgreSQL bind mount permissions (#62) - Auto-create directories
- Audio analyzer memory limits (#53) - TensorFlow limits, MAX_ANALYZE_SECONDS
- LastFM array normalization (#39) - Prevents ".map is not a function"
- Wikidata 403 errors (#57) - Proper User-Agent headers
- Singles directory race conditions (#58) - Idempotent mkdir
- Skip Track fallback fix (#68) - Respects user preference
- Soulseek connection stability - Auto-disconnect on settings change

### Production Readiness
- ReDoS guard on regex patterns
- Race condition fixes (Spotify token, import jobs, search hooks)
- Memory leak fixes (failedUsers Map, jobLoggers Map)
- Database connection pool configuration

## New Features
- Selective enrichment controls (re-run artists/mood/audio individually)
- Desktop Releases navigation link (#41)
- iPhone Dynamic Island CSS fix (#54)
- deploy.sh script with automatic cleanup

## Contributors
- @arsaboo - Docker bind mount permissions
- @rustyricky - Audio analyzer memory limits
- @RustyJonez - LastFM array normalization
- @tombatossals - Testing and validation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 16:10:31 -06:00