fix: invalidate index discographies after library rescan

The search index's Tier 3 (library artists) depends on MBIDs from
the artists table. If the index built before a rescan populated
those MBIDs, library artists like Flatbush Zombies wouldn't be
indexed — they're not in the sitewide top 1000 and their name
didn't match via fuzzy matching.

Fix: OnAllScansComplete hook now calls InvalidateIndexDiscographies
before StartIndexBuild. This clears the discog_built timestamp so
Tiers 2-4 re-run incrementally, picking up any new library artists
whose MBIDs were just populated by the scan.

The rebuild is incremental — only artists not already in the index
get their discographies fetched.
This commit is contained in:
2026-03-28 12:40:23 -04:00
parent 48a8713091
commit 15a0b94348
3 changed files with 18 additions and 0 deletions
+3
View File
@@ -218,6 +218,9 @@ func (yj *YellowJacketApp) OnStartup(ctx context.Context) {
yj.library.SetScanHooks(library.ScanHooks{
ResolvePhantoms: yj.playlist.ResolvePhantomTracksAfterScan,
OnAllScansComplete: func() {
// Force index Tiers 2-4 to re-check for new library
// artists whose MBIDs were just populated by the scan.
yj.explore.InvalidateIndexDiscographies()
yj.explore.StartIndexBuild()
},
})