1) Scan only the MAPPED libraries — never fall back to 'all'. The scan path used _sections/_views with the selected name, but an empty name returned ALL sections of that type — so a missing/unreadable selection silently scanned every library (how the 4K movie + 'YouTube' TV libraries leaked in as movies/shows). New _scan_sections / _scan_views return [] when a kind isn't mapped; available_libraries still lists all (for the Settings dropdown). Now an unmapped kind scans NOTHING. 2) A library scan (full/incremental/deep) now pauses EVERY enricher, including the YouTube date enricher — a separate singleton outside engine.workers that kept running through scans. pause_for_scan/resume_after_scan pause+resume it too, only if it wasn't already manually paused (never override the user). kettui: source-scope tests (mapped-only / unmapped-scans-nothing / listing still shows all) + engine pause tests (pauses+resumes YT / preserves manual pause). 123 scanner/source/enrichment tests + isolation guard green. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| backfill.py | ||
| cache.py | ||
| clients.py | ||
| engine.py | ||
| worker.py | ||