diff --git a/Content/UI/CharGen.uasset b/Content/UI/CharGen.uasset index 374f29e..aba6fdd 100644 Binary files a/Content/UI/CharGen.uasset and b/Content/UI/CharGen.uasset differ diff --git a/Content/UI/StatMenu.uasset b/Content/UI/StatMenu.uasset index 1593c3b..a1ec920 100644 Binary files a/Content/UI/StatMenu.uasset and b/Content/UI/StatMenu.uasset differ diff --git a/Docs/Migration/Journal_Modifications.md b/Docs/Migration/Journal_Modifications.md index 5a6384b..2b247ed 100644 --- a/Docs/Migration/Journal_Modifications.md +++ b/Docs/Migration/Journal_Modifications.md @@ -138,3 +138,29 @@ Tag d'entrée `L4-CX-B01-avant`. Sauvegarde : `D:\Game\LifePlay_Backup_5.5\L4-CX | ID | Date | Lot | Fichiers | Raison | Avant → après | Retour arrière | |---|---|---|---|---|---|---| | CHG-018 | 2026-09-29 | L4-CX-B01 | `Content/BPs/GI.uasset` | réimport de CX-B01 (`LPFixAssetRegistryPins`) | MD5 `F4550DA5…` (UE4) → `0AA14EDB…` (UE5, réenregistré par la commandlet) | `Tools\Restore.ps1 -Lot L4-CX-B01` ou `git checkout L4-CX-B01-avant -- Content/BPs/GI.uasset` | + +### Sous-lot L4-CX-B02 — `EditableTextBoxStyle` (ERR-021) : essai 1 **rejeté** + +Tag d'entrée `L4-CX-B02-avant`. Sauvegarde : `D:\Game\LifePlay_Backup_5.5\L4-CX-B02\`. +Preuves : `Docs/Migration/etat/L4-CX-B02_essai1_rejete/`. + +| Étape | Résultat | +|---|---| +| Simulation | 6 nœuds sur 6 attendus | +| Application | « 6 traités, 0 liaison non gérée, 0 échec » | +| Compilation | 0 erreur (6 avant), 98 avertissements, 0 broche orpheline | +| **Relecture du diff** | ❌ `CharGen::Make_64` a perdu sa liaison `Font` **sans** recevoir la liaison `TextStyle` : sa police retombe sur la valeur par défaut (aucune police, couleur magenta). Défaut **silencieux** : compilation et rapport de la commandlet au vert | + +Cause : `LPFixEditableTextBoxFont` coupait la broche `Font` de chaque nœud au fil du parcours. Dans +`CharGen`, `Break_62` est parcouru avant `Make_64` : la coupure effaçait aussi la liaison vue depuis +`Make_64`, qui n'était plus rebranché. Dépend de l'ordre des nœuds (sans effet dans `StatMenu`). La +campagne du 2026-09-07 avait utilisé cette commandlet : le défaut y était très probablement présent. + +| ID | Date | Lot | Fichiers | Raison | Retour arrière | +|---|---|---|---|---|---| +| CHG-019 | 2026-09-29 | L4-CX-B02 | `Content/UI/StatMenu.uasset`, `CharGen.uasset` | essai 1 appliqué puis **annulé** par `Tools\Restore.ps1 -Lot L4-CX-B02` (MD5 `34807BE0…`, `63CA2A78…` retrouvés) | sans objet | +| CHG-020 | 2026-09-29 | L4-CX-B02 | `Source/LifePlayEditorTools/LPFixEditableTextBoxFontCommandlet.cpp` | les broches `Font` ne sont coupées qu'après le relevé complet de la topologie | `git revert` | +| CHG-021 | 2026-09-29 | L4 | `Tools/ReimportCorrectif.ps1` (nouveau) | automatisation des étapes 1 à 6 du protocole | `git rm` | + +Enseignement pour le protocole : l'étape 5 (relecture du diff nœud par nœud) est indispensable ; ni la +compilation ni le rapport de la commandlet n'ont détecté ce défaut. diff --git a/Docs/Migration/Registre_Erreurs.md b/Docs/Migration/Registre_Erreurs.md index f9ced61..88f5eb3 100644 --- a/Docs/Migration/Registre_Erreurs.md +++ b/Docs/Migration/Registre_Erreurs.md @@ -29,3 +29,4 @@ | ERR-017 | `LogStreaming Failed to read file` (icônes moteur VisionOS, Interchange, Slate) | PIE 09-28 | 37 | cosmétique | — | accepté | | ERR-018 | Assets StreetMap fortement réduits (`CentralLondon` 202 → 13,6 Mo, `00BathCC`) | comparaison des tailles | 4 fichiers | à qualifier | L4 | ouvert | | ERR-019 | Plantages du resave de masse : `BulkData IsUnlocked`, `Array.h:783` (`fnt_new100/111`) | `Saved/Crashes` 09-07 | 2 | à surveiller | L4 | ouvert | +| ERR-025 | `LPFixEditableTextBoxFont` : un `Make EditableTextBoxStyle` peut perdre sa police sans rebranchement selon l'ordre de parcours (`CharGen::Make_64`) | relecture du diff L4-CX-B02 | 1 nœud | haute (silencieuse) | L4-CX-B02 | corrigé dans la commandlet (CHG-020) ; présent probablement dans le contenu du 2026-09-07 | diff --git a/Source/LifePlayEditorTools/LPFixEditableTextBoxFontCommandlet.cpp b/Source/LifePlayEditorTools/LPFixEditableTextBoxFontCommandlet.cpp index 80058af..48397b0 100644 --- a/Source/LifePlayEditorTools/LPFixEditableTextBoxFontCommandlet.cpp +++ b/Source/LifePlayEditorTools/LPFixEditableTextBoxFontCommandlet.cpp @@ -103,6 +103,7 @@ int32 ULPFixEditableTextBoxFontCommandlet::Main(const FString& Params) struct FPendingLink { UK2Node_BreakStruct* Break; UK2Node_MakeStruct* Make; }; TArray PendingLinks; TArray NodesToReconstruct; + TArray FontPinsToClear; for (UEdGraph* Graph : Graphs) { @@ -168,14 +169,11 @@ int32 ULPFixEditableTextBoxFontCommandlet::Main(const FString& Params) } } - // ReconstructNode conserve une broche orpheline dans DEUX cas : si elle - // porte des liaisons, et si elle porte une valeur differente du defaut. - // C'est le garde-fou d'UE contre la perte de donnees. Il faut donc lever - // les deux, APRES avoir releve la topologie et AVANT de reconstruire, - // sans quoi la broche Font survit et l'erreur persiste. - FontPin->BreakAllPinLinks(); - GetDefault()->ResetPinToAutogeneratedDefaultValue(FontPin, false); - + // Les liaisons ne sont coupees qu'APRES le releve complet (voir plus bas) : + // couper ici la broche Font d'un Break effacait aussi la liaison vue depuis + // les Make non encore parcourus, qui perdaient alors leur police sans + // rebranchement (CharGen, Make_64 - defaut releve le 2026-09-29, L4-CX-B02). + FontPinsToClear.AddUnique(FontPin); NodesToReconstruct.AddUnique(GraphNode); ++NodesFixed; @@ -183,6 +181,17 @@ int32 ULPFixEditableTextBoxFontCommandlet::Main(const FString& Params) } } + // ReconstructNode conserve une broche orpheline dans DEUX cas : si elle + // porte des liaisons, et si elle porte une valeur differente du defaut. + // C'est le garde-fou d'UE contre la perte de donnees. Il faut donc lever + // les deux, APRES avoir releve toute la topologie et AVANT de reconstruire, + // sans quoi la broche Font survit et l'erreur persiste. + for (UEdGraphPin* FontPin : FontPinsToClear) + { + FontPin->BreakAllPinLinks(); + GetDefault()->ResetPinToAutogeneratedDefaultValue(FontPin, false); + } + // La reconstruction invalide les broches : on la fait en bloc, puis on relie. for (UEdGraphNode* Node : NodesToReconstruct) {