Feature/python api image discovery (#34)
* Expose chat.analyzeMediaImage in Python API for batch image metadata generation * Fix updateMedia losing linkedPostIds by reading existing sidecar before overwriting * Also preserve author from sidecar when DB value is null (data drift) * Extend MetadataDiffEngine to cover media, scripts, and templates * Redesign MetadataDiffPanel: item-first view with field pills, filtering, and per-item multi-field diffs * Fix task:progress startsWith crash (taskId not id) and nested button violation in field pills * Populate field diffs for file-missing items and show fileMissing badge in UI * feat: extended meta diff * feat: meta diff als reconstructs orphans * chore: updated documentation --------- Co-authored-by: hugo <hugoms@me.com>
This commit is contained in:
@@ -374,7 +374,7 @@
|
||||
"tabBar.error.fetchTemplateTitle": "Impossibile caricare il titolo del modello:",
|
||||
"tabBar.error.fetchCommitTitle": "Impossibile caricare i titoli dei commit:",
|
||||
"metadataDiff.title": "Strumento diff metadati",
|
||||
"metadataDiff.description": "Confronta i metadati dei post tra database e file markdown. Correggi incongruenze causate da bug o modifiche manuali.",
|
||||
"metadataDiff.description": "Confronta i metadati tra database e file per post, media, script e modelli. Correggi incongruenze causate da bug o modifiche manuali.",
|
||||
"metadataDiff.error.loadStats": "Impossibile caricare le statistiche del database",
|
||||
"metadataDiff.error.scan": "Impossibile analizzare le differenze",
|
||||
"metadataDiff.progress.starting": "Avvio scansione...",
|
||||
@@ -386,19 +386,47 @@
|
||||
"metadataDiff.stats.published": "Pubblicati",
|
||||
"metadataDiff.stats.drafts": "Bozze",
|
||||
"metadataDiff.stats.mediaFiles": "File multimediali",
|
||||
"metadataDiff.stats.scripts": "Script",
|
||||
"metadataDiff.stats.templates": "Modelli",
|
||||
"metadataDiff.summary.noDiffs": "✅ Nessuna differenza trovata! Tutti i {total} post pubblicati sono sincronizzati.",
|
||||
"metadataDiff.summary.withDiffs": "⚠️ Trovati {count} post con differenze su {total} post pubblicati.",
|
||||
"metadataDiff.summary.mediaNoDiffs": "✅ Nessuna differenza trovata! Tutti i {total} file multimediali sono sincronizzati.",
|
||||
"metadataDiff.summary.mediaWithDiffs": "⚠️ Trovati {count} file multimediali con differenze su {total}.",
|
||||
"metadataDiff.summary.scriptNoDiffs": "✅ Nessuna differenza trovata! Tutti i {total} script sono sincronizzati.",
|
||||
"metadataDiff.summary.scriptWithDiffs": "⚠️ Trovati {count} script con differenze su {total}.",
|
||||
"metadataDiff.summary.templateNoDiffs": "✅ Nessuna differenza trovata! Tutti i {total} modelli sono sincronizzati.",
|
||||
"metadataDiff.summary.templateWithDiffs": "⚠️ Trovati {count} modelli con differenze su {total}.",
|
||||
"metadataDiff.group.differences": "Differenze {label}",
|
||||
"metadataDiff.group.postsCount": "{count} post",
|
||||
"metadataDiff.group.itemsCount": "{count} elementi",
|
||||
"metadataDiff.fieldFilter.toggle": "Filtra per {field}",
|
||||
"metadataDiff.tab.posts": "Post",
|
||||
"metadataDiff.tab.media": "Media",
|
||||
"metadataDiff.tab.scripts": "Script",
|
||||
"metadataDiff.tab.templates": "Modelli",
|
||||
"metadataDiff.orphanFiles.title": "File orfani ({count})",
|
||||
"metadataDiff.orphanFiles.description": "Questi file esistono sul disco ma non hanno una voce corrispondente nel database. Potrebbero essere residui di modifiche allo slug o modifiche manuali.",
|
||||
"metadataDiff.orphanFiles.badge": "File orfano",
|
||||
"metadataDiff.orphanFiles.slug": "Slug",
|
||||
"metadataDiff.orphanFiles.path": "Percorso",
|
||||
"metadataDiff.orphanFiles.importButton": "D \u2192 DB",
|
||||
"metadataDiff.orphanFiles.importTitle": "Importa tutti i file orfani nel database",
|
||||
"metadataDiff.orphanFiles.importing": "Importazione…",
|
||||
"metadataDiff.orphanFiles.importSuccess": "{success} file orfani importati{failed}",
|
||||
"metadataDiff.orphanFiles.importError": "Impossibile importare i file orfani",
|
||||
"metadataDiff.sync.failed": "fallito",
|
||||
"metadataDiff.sync.dbToFile.title": "Aggiorna i file con i valori del database",
|
||||
"metadataDiff.sync.dbToFile.short": "DB\u2192F",
|
||||
"metadataDiff.sync.dbToFile.success": "Sincronizzati {success} post nei file{fallito}",
|
||||
"metadataDiff.sync.dbToFile.error": "Impossibile sincronizzare nei file",
|
||||
"metadataDiff.sync.fileToDb.title": "Aggiorna il database con i valori dei file",
|
||||
"metadataDiff.sync.fileToDb.short": "F\u2192DB",
|
||||
"metadataDiff.sync.fileToDb.success": "Sincronizzati {success} file nel database{fallito}",
|
||||
"metadataDiff.sync.fileToDb.error": "Impossibile sincronizzare nel database",
|
||||
"metadataDiff.value.database": "Database locale",
|
||||
"metadataDiff.value.file": "File sorgente",
|
||||
"metadataDiff.fileMissing": "File mancante",
|
||||
"metadataDiff.value.fileMissing": "(mancante)",
|
||||
"metadataDiff.empty": "Fai clic su \"Scansiona differenze\" per confrontare i metadati del database con quelli dei file.",
|
||||
"sidebar.archive": "Archivio",
|
||||
"sidebar.clearFilter": "Cancella filtro",
|
||||
|
||||
Reference in New Issue
Block a user