Repository navigation
Feature Metadata Maintenance
Sidecar metadata drifts: models get delisted from CivitAI, a by-hash lookup writes the wrong record, or a file is renamed until nothing matches it any more. The Organization tab has two tools for that.
🔍 Verify local metadata checks every scanned model and reports two kinds of problem:
-
Removed from CivitAI — the
modelIdcached in the.jsonsidecar no longer resolves on CivitAI -
Mismatched metadata — the
.api_info.jsonnext to the file describes a different model
Transient API failures are not counted as delisting. A single model that returns a network error or an unexpected status is left unresolved rather than marked as removed, and if the API is globally unreachable the scan bails out with an explicit error instead of flagging your entire library as delisted — the difference between "CivitAI is down" and "your library was deleted" matters here.
The most common cause is a by-hash lookup: when a model was identified by SHA256 rather than by id, the resulting record could be written next to the wrong file, leaving one model claiming another's identity. That write path was fixed in v1.0.0, but sidecars already corrupted by it stay corrupted until you verify and re-resolve them — which is what this tool is for.
When the verification finds problems, 🛠️ Resolve issues appears. Each kind of problem is fixed from the source that can actually fix it:
- Removed from CivitAI — looked up on CivArchive, a mirror that keeps records of models removed from CivitAI, so delisted models keep working names, versions, and previews instead of decaying into unidentifiable files.
- Mismatched metadata — these models are still on CivitAI, so their info is downloaded again from CivitAI itself, using the exact version saved with the file (not the file hash, which is what caused the mix-up in the first place).
A recovered model shows its real page wherever the extension displays one: the Local Models card and detail panel, the popup from the CivitAI button on txt2img/img2img cards, "send to Browser", and saved .html files. That page has the model's name, creator, description, trigger words, sample images, a link to its CivArchive page, and the download mirrors CivArchive knows about. If a page was saved while the model was still on CivitAI, Resolve issues replaces it with the recovered one, because its links no longer work. The old page goes to your recycle bin.
Before anything is written, the result is checked against the model the file is supposed to be. If a source answers with a different model, or doesn't answer at all, the file is left exactly as it was. The final report shows how many were recovered, repaired, or left untouched.
📝 Update info & tags and 🖼️ Update previews get their data from CivitAI, so on their own they skip models that were removed from it. Tick Also update models missing from CivitAI using CivArchive in the scan options to include them. The update then runs in two passes:
- Every model still on CivitAI is updated from CivitAI, as usual.
- Every model CivitAI couldn't provide is looked up on CivArchive by its file hash, and gets the same update from there: trigger words, description, base model and tags (plus the HTML page if "Save an HTML file" is ticked), or its preview image.
A model only counts as missing once CivitAI confirms it. If a request fails, the model is skipped, so a network problem can never replace a live model's info with archive data. The model's CivitAI ID and page link in its .json are left unchanged. At the end, a summary shows how many models were updated from CivArchive and how many CivArchive doesn't have.
New downloads save their official CivitAI tags automatically, but models downloaded before that shipped — or added outside the extension — may have none. 🏷️ Fetch official tags backfills them: it reuses the CivitAI model id already cached in each sidecar, so it needs no re-hashing and no full library scan, and it groups files by model id so several files from the same listing cost a single request. Only files missing tags are touched, unless "Refresh tags that already exist" is checked.
Files with no cached model id are skipped and counted separately — run Update info & tags first to resolve those by hash. If a listing 404s, the tool falls back to CivArchive, the same mirror Resolve issues uses for delisted models.
Tags feed LoraDex's category auto-suggestion, so keeping them current improves how well categories get guessed.
The model detail panel and the model overlay have a Mark for review button for anything you want to revisit — a suspect duplicate, a file you may want to delete, a model whose metadata looks wrong. The status is stored in config_states/local_review_status.json, keyed by uppercase SHA256, so it survives renames and re-organization.
Each entry carries a status, a list of reasons, an optional manual note, and timestamps:
| Status | Meaning |
|---|---|
needs_review |
Default — flagged, no decision yet |
manual_delete_candidate |
You marked it as something to remove |
manual_keep |
Reviewed and deliberately kept |
The file is plain JSON with a schemaVersion, so it is safe to read, back up, or edit by hand.
Related: Browser Sources · Auto-Organization · Local Models