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": "Introduce la sintaxis o el nombre del LoRA para reconectar:",
"reconnectExample": "Ejemplo: <lora:name:1> o solo el nombre",
"reconnectPlaceholder": "Introduce el nombre o la sintaxis del LoRA",
"reconnectSuggestionsLoading": "Buscando en la biblioteca local...",
"reconnectSuggestionsEmpty": "No hay LoRAs coincidentes en tu biblioteca local",
"reconnectMatchSameHash": "Mismo hash",
"reconnectMatchSameVersion": "Misma versión del modelo",
"reconnectMatchSimilarFilename": "Nombre de archivo similar",
"reconnectMatchSimilarName": "Nombre similar",
"undoReconnect": "Deshacer",
"undoReconnectTooltip": "Restaura la asociación que esta entrada tenía antes de reconectar",
"undoReconnectTooltipNamed": "Restaurar a {name} (la asociación antes de reconectar)",
"viewOnCivitai": "Ver en CivitAI",
"openLoraDetails": "Ver {name} en la biblioteca de LoRAs",
"openCheckpointDetails": "Ver {name} en la biblioteca de modelos"
@@ -2046,7 +2055,10 @@
"preparingForDownloadFailed": "Error preparando LoRAs para descarga",
"enterLoraName": "Por favor introduce un nombre de LoRA o sintaxis",
"reconnectedSuccessfully": "LoRA reconectado exitosamente",
"reconnectBaseModelMismatch": "Reconectado, pero los modelos base difieren (receta: {recipe}, LoRA: {lora}) — son compatibles a nivel de arquitectura",
"reconnectFailed": "Error reconectando LoRA: {message}",
"loraRestored": "LoRA restaurado a su asociación anterior",
"loraRestoreFailed": "Error restaurando LoRA: {message}",
"noPromptToSend": "No hay prompt para enviar",
"cannotSend": "No se puede enviar receta: Falta ID de receta",
"sendFailed": "Error al enviar receta al workflow",