feat(recipes): reconnect suggestions, undo, and base-model family tolerance

Enhance the deleted-LoRA reconnect flow in the recipe modal:

- Suggest local reconnect candidates when the panel opens, ranked by
  identity (same hash / same CivitAI version) then filename/name
  similarity, with a hard filter on confident base-model mismatches;
  the input gets a Combobox backed by the same endpoint as you type.
- Snapshot the pre-reconnect entry and offer a permanent restore:
  reconnected entries show an undo icon at the right end of the info
  row, with the original filename in the tooltip.
- Relax the manual reconnect base-model guard to a three-tier check:
  exact/unknown labels pass silently, same-architecture families
  (e.g. Pony <-> Illustrious) pass with a warning toast, and only
  cross-architecture mismatches stay hard-rejected.
This commit is contained in:
Will Miao
2026-08-30 08:17:35 +08:00
parent 6e31da7a70
commit 838a374a56
23 changed files with 1893 additions and 45 deletions
+12
View File
@@ -906,6 +906,15 @@
"reconnectInstructions": "Entrez la syntaxe ou le nom du LoRA à reconnecter:",
"reconnectExample": "Exemple: <lora:name:1> ou simplement le nom",
"reconnectPlaceholder": "Entrez le nom ou la syntaxe du LoRA",
"reconnectSuggestionsLoading": "Recherche dans la bibliothèque locale...",
"reconnectSuggestionsEmpty": "Aucun LoRA correspondant dans votre bibliothèque locale",
"reconnectMatchSameHash": "Hash identique",
"reconnectMatchSameVersion": "Même version du modèle",
"reconnectMatchSimilarFilename": "Nom de fichier similaire",
"reconnectMatchSimilarName": "Nom similaire",
"undoReconnect": "Annuler",
"undoReconnectTooltip": "Restaurer l'association que cette entrée avait avant la reconnexion",
"undoReconnectTooltipNamed": "Restaurer vers {name} (l'association avant la reconnexion)",
"viewOnCivitai": "Voir sur CivitAI",
"openLoraDetails": "Voir {name} dans la bibliothèque LoRA",
"openCheckpointDetails": "Voir {name} dans la bibliothèque de modèles"
@@ -2046,7 +2055,10 @@
"preparingForDownloadFailed": "Erreur lors de la préparation des LoRAs pour le téléchargement",
"enterLoraName": "Veuillez entrer un nom ou une syntaxe LoRA",
"reconnectedSuccessfully": "LoRA reconnecté avec succès",
"reconnectBaseModelMismatch": "Reconnexion effectuée, mais les modèles de base diffèrent (Recipe : {recipe}, LoRA : {lora}) — ils sont compatibles au niveau architectural",
"reconnectFailed": "Erreur lors de la reconnexion du LoRA : {message}",
"loraRestored": "LoRA restauré à son association précédente",
"loraRestoreFailed": "Erreur lors de la restauration du LoRA : {message}",
"noPromptToSend": "Aucun prompt à envoyer",
"cannotSend": "Impossible d'envoyer la recipe : ID de recipe manquant",
"sendFailed": "Échec de l'envoi de la recipe vers le workflow",