Use order-insensitive token comparison in calculate_filename_confidence
so variant names with reordered tokens (e.g., int8_convrot vs convrot_int8)
score higher. Replace first-match partial matching in HuggingFace source with
best-match selection based on filename confidence, and surface confidence in
search results.
Refactor searchMissingBatch to schedule each source independently via a
per-source promise chain (scheduleSource) instead of processing all targets
in a single serial loop. This keeps source ordering intact while allowing
different sources to advance in parallel across models.
Also update searchOnline to accept scheduleSource and emit a pending UI
state for queued searches, split pending/running source colors in CSS, and
add tests covering independent batch source progression plus error/cancel
survival.
Replace inline node_id/widget_index DOM key construction with the
centralized getMissingModelDomKey helper across search panel and
missing browser methods. This keeps search results and button IDs
stable when the same model appears in multiple workflows/widgets.
Also adds a regression test verifying that search progress stays
with its model when switching between shared widgets.
Reuse model metadata across _find_civitai_file_in_model calls within a single search, avoid resolve_urn when modelVersions already contains usable file lists, and add tests for request-count behavior.
Add a success color token and replace scattered textContent assignments
with setElementStatusText / setStatusMode so local DB, base models,
HF index, and cache-clearing statuses consistently use is-pending,
is-valid, and is-invalid classes.
Pass preferTemplate through forceSuggestedDownloadSubfolder so manual
subfolder suggestions use the same configured folder rule as post-search
autofill. Added a focused test for the manual path.