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:
@@ -19,6 +19,7 @@ CREATE TABLE "User" (
|
||||
"twoFactorSecret" TEXT,
|
||||
"twoFactorRecoveryCodes" TEXT,
|
||||
"moodMixParams" JSONB,
|
||||
"tokenVersion" INTEGER NOT NULL DEFAULT 0,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
||||
@@ -78,7 +79,7 @@ CREATE TABLE "SystemSettings" (
|
||||
"downloadRetryAttempts" INTEGER NOT NULL DEFAULT 3,
|
||||
"transcodeCacheMaxGb" INTEGER NOT NULL DEFAULT 10,
|
||||
"downloadSource" TEXT NOT NULL DEFAULT 'soulseek',
|
||||
"soulseekFallback" TEXT NOT NULL DEFAULT 'none',
|
||||
"primaryFailureFallback" TEXT NOT NULL DEFAULT 'none',
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
@@ -826,6 +827,9 @@ CREATE INDEX "DownloadJob_lidarrRef_idx" ON "DownloadJob"("lidarrRef");
|
||||
-- CreateIndex
|
||||
CREATE INDEX "DownloadJob_artistMbid_idx" ON "DownloadJob"("artistMbid");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "DownloadJob_targetMbid_idx" ON "DownloadJob"("targetMbid");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "ListeningState_userId_idx" ON "ListeningState"("userId");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user