feat: data lifecycle rewrite, download clients, wanted list, and central catalog index
Build & publish Arch package / arch-package (push) Successful in 2m12s
Search index maintenance / maintain-index (push) Successful in 2h22m28s

Ships the fresh-start schema cleanup: rebuilt explore catalog index
pipeline (dump import, artifact fetch/build, incremental listen-count
refresh), a new download subsystem (Lidarr/Prowlarr/qBittorrent/SABnzbd/
slskd/yt-dlp providers, staging, reconciliation, wanted list), and the
supporting schema/query/store changes across backend and frontend.

Also includes two smaller follow-ups: bump the central index's
rebuild-after cadence from 90 to 180 days, and remove the Explore
"library only" online/offline toggle entirely (frontend-only, no
backend counterpart) rather than carry unused UI/state.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2Agd9af5hE7qzti2ackiS
This commit is contained in:
2026-08-06 17:12:01 -04:00
co-authored by Claude Sonnet 5
parent d0d86f85d5
commit e190fd75b9
165 changed files with 31088 additions and 5192 deletions
+13
View File
@@ -1,6 +1,7 @@
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
import {explore} from '../models';
import {time} from '../models';
import {context} from '../models';
import {jobs} from '../models';
@@ -18,6 +19,8 @@ export function CAALimiter():Promise<explore.RateLimiter>;
export function CheckLibraryMBIDs(arg1:Array<string>):Promise<Record<string, string>>;
export function CoreCatalogImported():Promise<boolean>;
export function CoverArtGroupURL(arg1:string):Promise<string>;
export function CoverArtURL(arg1:string):Promise<string>;
@@ -52,6 +55,12 @@ export function GetTrackThumbnail(arg1:string,arg2:string,arg3:string,arg4:strin
export function GetTrackThumbnails(arg1:Array<explore.TrackThumbnailRequest>):Promise<Record<string, string>>;
export function IndexBaselineSeries():Promise<number>;
export function IndexImportComplete():Promise<boolean>;
export function IndexLastImported():Promise<time.Time>;
export function InvalidateIndexDiscographies():Promise<void>;
export function InvalidateLibrarySync():Promise<void>;
@@ -70,12 +79,16 @@ export function PopulateLocalCrossReferencesIfNeeded():Promise<void>;
export function PrefetchReleases(arg1:Array<string>):Promise<void>;
export function PrepareIndexRebuild():Promise<void>;
export function RebuildLyricsIndex():Promise<void>;
export function RebuildLyricsIndexIfNeeded():Promise<void>;
export function RecordSearchClick(arg1:string,arg2:string,arg3:string):Promise<void>;
export function RefreshIndexNow(arg1:time.Duration):Promise<void>;
export function RefreshListenCounts():Promise<void>;
export function ResolveReleaseGroupMBIDs(arg1:Array<string>):Promise<Record<string, string>>;