Release v1.3.0: Multi-source downloads, audio analyzer resilience, mobile improvements

Major Features:
- Multi-source download system (Soulseek/Lidarr with fallback)
- Configurable enrichment speed control (1-5x)
- Mobile touch drag support for seek sliders
- iOS PWA media controls (Control Center, Lock Screen)
- Artist name alias resolution via Last.fm
- Circuit breaker pattern for audio analysis

Critical Fixes:
- Audio analyzer stability (non-ASCII, BrokenProcessPool, OOM)
- Discovery system race conditions and import failures
- Radio decade categorization using originalYear
- LastFM API response normalization
- Mood bucket infinite loop prevention

Security:
- Bull Board admin authentication
- Lidarr webhook signature verification
- JWT token expiration and refresh
- Encryption key validation on startup

Closes #2, #6, #9, #13, #21, #26, #31, #34, #35, #37, #40, #43
This commit is contained in:
Your Name
2026-01-06 20:07:33 -06:00
parent 8fe151a0d1
commit cc8d0f6969
242 changed files with 20562 additions and 7725 deletions
+46 -3
View File
@@ -1,10 +1,38 @@
# Lidify Configuration
# Copy to .env and edit as needed
# ==============================================================================
# Database Configuration
# ==============================================================================
DATABASE_URL="postgresql://lidify:lidify@localhost:5433/lidify"
# ==============================================================================
# Redis Configuration
# ==============================================================================
# Note: Redis container port is mapped to 6380 to avoid conflicts with other Redis instances
REDIS_URL="redis://localhost:6380"
# ==============================================================================
# REQUIRED: Path to your music library
# ==============================================================================
MUSIC_PATH=/path/to/your/music
# DEVELOPMENT: Use your local path (e.g., /home/user/Music)
# DOCKER: This is the HOST path that gets mounted to /music in the container
# The backend inside Docker always uses /music, not this value.
# Example: MUSIC_PATH=~/Music (container mounts as ~/Music:/music)
# ==============================================================================
# REQUIRED: Security Keys
# ==============================================================================
# Encryption key for sensitive data (API keys, passwords, 2FA secrets)
# CRITICAL: You MUST set this before starting Lidify
# Generate with: openssl rand -base64 32
SETTINGS_ENCRYPTION_KEY=
# Session secret (auto-generated if not set)
# Generate with: openssl rand -base64 32
SESSION_SECRET=
# ==============================================================================
# OPTIONAL: Customize these if needed
@@ -16,9 +44,14 @@ PORT=3030
# Timezone (default: UTC)
TZ=UTC
# Session secret (auto-generated if not set)
# Generate with: openssl rand -base64 32
SESSION_SECRET=
# Logging level (default: debug in development, warn in production)
# Options: debug, info, warn, error, silent
LOG_LEVEL=debug
# Allow public access to API documentation in production (default: false)
# Set to 'true' to make /api/docs accessible without authentication in production
# Development mode always allows public access
# DOCS_PUBLIC=true
# DockerHub username (for pulling images)
# Your DockerHub username (same as GitHub: chevron7locked)
@@ -26,3 +59,13 @@ DOCKERHUB_USERNAME=chevron7locked
# Version tag (use 'latest' or specific like 'v1.0.0')
VERSION=latest
# ==============================================================================
# OPTIONAL: Audio Analyzer CPU Control
# ==============================================================================
# Audio Analyzer CPU Control
# AUDIO_ANALYSIS_WORKERS=2 # Number of parallel worker processes (1-8)
# AUDIO_ANALYSIS_THREADS_PER_WORKER=1 # Threads per worker for TensorFlow/FFT (1-4, default 1)
# Formula: max_cpu_usage ≈ WORKERS × (THREADS_PER_WORKER + 1) × 100%
# Example: 2 workers × (1 thread + 1 overhead) = ~400% CPU (4 cores)