Mise à jour 2.185
30/06/2026
v2.185.0.0BETAMINOR
Seymour27 juin 2026
Overdrive : tag « LAB » retiré + sélecteur de cible par étape
- Retiré « LAB » de toutes les chaînes de blocs Overdrive visibles par l'utilisateur. Chaque étape de séquence de finisher a désormais sa propre ComboBox de cible (Random frontline / Lowest HP).
AddOverdriveFinisherSequencea perdu les paramètrestemplateetfallbackTarget— chaque commande porte sa propre cible. Classe VMOverdriveFinisherStep. Build 0 erreurs. Porte RT0 330/330 PASS
v2.184.1.0
v2.185.1.0BETAPATCH
Wakka26 juin 2026
Arena+ restauration différée cross-map : ne pas corrompre les bins d'encounter aléatoire
- Ajoute
ArenaPlus_ArmDeferredFileRestore+ArenaPlus_TickDeferredFileRestoredans dllmain.cpp. Après le succès du lancement cross-map 781D60, arme un minuteur ~30s (1800 frames). À expiration, restaure.spiraforge.bakpar-dessus le bin composé. Cause racine : le déploiement cross-map (ex. Macalania Forest) écrivait des Dark Aeons dansmcfr00_00.bin, qui est aussi une formation d'encounter aléatoire — les encounters aléatoires spawnaient des Dark Aeons au lieu des fiends normaux. DLL construite + déployée
v2.185.0.0
v2.185.4.0BETAPATCH
Sin27 juin 2026
Sin Anathème Lab v2 : AiQueryProperty retiré, SinScaleInject v2 CLI, docs
- Hook AiQueryProperty (RVA 0x3B2DD0) retiré — c'était FFX_Battle_AggregateActorProperty, le détour crashait le menu. Sous-menu F7 Zone revenu en arrière. g_sinPreset[93] VAR conservé. SinScaleInject v2 CLI : --area, --seed, --intensity, --save-clean, --restore, --dry-run, RNG XorShift32, mise à l'échelle HP/stats. Injection ATEL désactivée (en attente de la réécriture AiInstruction). Docs : SIN_CURSE_LAB_SESSION_2026-06-27.md (13 sections), SIN_CURSE_V2_BIN_FIRST_PLAN_2026-06-27.md (plan .bin-first)
v2.185.3.0
v2.185.5.0BETAPATCH
Sin27 juin 2026
Sin Anathème Lab v2 : SinScaleInject fonctionne + hook simplifié
- SinCurseHook.cpp : MonsterLoad, SetScaleAxis, AiQueryProperty, LaunchRestore retirés. Filtre btlmap. CREATE_NO_WINDOW. SinScaleInject v2 utilise Monster_StatSheet.ReadSingle/WriteSingle. Bins propres régénérés depuis le dépôt. 62 DLL managées déployées
v2.185.4.0
v2.185.6.0BETAPATCH
Sin27 juin 2026
Sin Lab v2.1 : revue de code + bugfixes + sync de menace
- SinScaleInject : les noms de kernel se restaurent désormais depuis le propre avant chaque
--area(ProcessArea, SaveClean, RestoreAll). SaveClean et RestoreAll couvrent désormais kernel/monster*.bin. RNG aligné avec C++ :seed = seed ^ (seed << 16). g_sinPreset[93] retiré (code mort). time(nullptr) retiré du seed (RNG déterministe). kAreaTable (C++) et AREA_T (C#) synchronisés avec les plafonds de menace CSV : 14 valeurs corrigées, tMin=0 toujours, régions ajoutées (zanarkand, postgame, thunder_plains_cross, macalania_bosses)
v2.185.5.0
v2.185.7.0BETAPATCH
Rikku28 juin 2026
Polish UI : palette plus douce + sélection visible
- Accent de StudioTokens.axaml
#5DD0B4→#2A9D8F, remplissages/bordures plus calmes, sélection ListBox de StudioTheme.axaml#15323B→#1A3040avec une bordure visible de 1px. Tokens de sélection/onglet/expander/statut mis à jour. Build Release 0 erreurs
v2.185.6.0
v2.185.8.0BETAPATCH
Sin28 juin 2026
Suivi de revue du patch SIN : durcissement CLI + porte de sanity de build de hooks
SinScaleInject:--restore-areaexige désormais un id ;--seed,--tet--intensityinvalides échouent tôt avec des messages clairs ;--tnégatif rejeté ;--intensitylimité à0..100;MonsterStatSheetStruct.StatSheeta désormais un init par défaut pour retirer l'avertissement de nullabilité.build_hooks.ps1: gardeversion.resembarqué viacl.exeet rejette désormais les builds PolyHook quand leffx-hooks.dllfinal sort bizarrement petit, empêchant les régressions silencieuses d'artefacts. Revue/suivi documentés dansdocs/ai/SIN_PATCH_REVIEW_2026-06-28.md
v2.185.7.0
v2.185.9.0BETAPATCH
Sin28 juin 2026
Déploiement propre de SinScaleInject vers `modules\\tools`
- Nouveau
RuntimeTools/SinScaleInject/deploy-sinscaleinject.ps1publieSinScaleInjectdans un dossier propre et remplacemodules\\tools\\SinScaleInject\\par un payload autonome minimal (SinScaleInject*,SinCoreLib.dll,Xe.BinaryMapper.dll), retirant le traînement accidentelFFXProjectEditor.exe/Avalonia du dossier du jeu.Program.csdérive désormaisGameRootdeAppContext.BaseDirectoryquand il tourne depuismodules\\tools\\SinScaleInject, donc il ne dépend plus duSteamLibrary\\...codé en dur pour les chemins de données en jeu. Validé localement : build Release0 errors / 0 warnings, publication propre, et vrai déploiement vers le chemin du jeu. Statut :Needs Testingen jeu ; les chemins du dépôt (clean-base/roster-dir) restent locaux à la machine par design
v2.185.8.0
v2.185.10.0BETAPATCH
Lulu28 juin 2026
Rotation de Phase Monster AI : ids de variables stables + opener immédiat au début de bataille
- Le
Phase Rotation Managerne dérive plusvar[N]d'un parse textuel d'IndexLabel:AiPhaseVariableAuditRowporte désormais unVariableIndexnumérique stable, et l'UI afficheID###directement pour que les alias/texte ne puissent pas être pris pour le vrai id de variable. Les phases utilisantAs soon as the battle startsémettent désormaisforcePerformCommand (0x705A)au lieu deperformCommand (0x700B), donc l'opener ne dépend pas de la file d'actions régulière au démarrage.RuntimeTools/AiScriptLab --phase-rotation-rt0inclut désormais un cas d'opener de début de bataille et PASSE toujours319/319; le build Release de l'éditeur s'est fermé avec 0 erreurs. Statut :Needs Testingen jeu, surtout l'ordre/l'animation de l'opener et le vrai casm020
v2.185.9.0
v2.185.11.0BETAPATCH
Lulu28 juin 2026
Rotation de Phase Monster AI : ids d'authoring portables + matérialisation de vars non destructrice
- Le
Phase Rotation Managersépare désormais lereal IDde chaque variable de sonauthoring/template ID: l'UI montre les deux, stocke l'id préféré dans les métadonnées locales, et laisse les recettes demander unvar[N]plus haut sans confondre les alias avec le vrai opérande. À l'apply, l'éditeur matérialise des descripteurs supplémentaires quand nécessaire en appendant des alias pour le même stockage/slot, sans écraser les vars existantes ; si l'IDdemandé est déjà occupé par une autre variable, la recette passe à l'index libre suivant. Les gardes de phase sont aussi remappées vers l'index matérialisé.RuntimeTools/AiScriptLab --var-growreste PASS185/185et--phase-rotation-rt0reste PASS319/319; le build Release de l'éditeur s'est fermé avec 0 erreurs. Statut :Needs Testingen jeu, surtout l'import/export de recettes entre monstres avec des tables de vars différentes
v2.185.10.0
v2.185.12.0BETAPATCH
Lulu28 juin 2026
Rotation de Phase Monster AI : vrai top-insert de début de bataille + round-trip `forcePerformCommand`
- Le
Phase Rotation Managergère désormais les étapesAs soon as the battle startscomme une vraie insertion physique en haut du point d'entrée au lieu de seulement chaîner un nouveau bloc à la fin du code. Cela garde l'opener littéralement au-dessus du corps du handler plus ancien et réduit le mode d'échecm020où une action immédiate pouvait consommer le pass avant les openers restants. Le lecteur de brouillon reconnaît désormais aussiforcePerformCommand (0x705A), donc rouvrir/réappliquer les recettes d'opener n'ignore plus ces blocs.RuntimeTools/AiScriptLab --phase-rotation-rt0reste PASS319/319et le build Release de l'éditeur s'est fermé avec 0 erreurs. Statut :Needs Testingen jeu, surtout l'ordre d'ouverture du vraim020 - Teste Não Funcional 2.bin
v2.185.11.0
v2.185.13.0BETAPATCH
Lulu28 juin 2026
Rotation de Phase Monster AI : début de bataille AI désactivé ; déclencheur honnête déplacé vers le travail runtime/CTB edge en attente
- Le
Phase Rotation Managerne prétend plus queAs soon as the battle startsest un déclencheur de gameplay sûr dans l'AiFile. L'écrivain rejette désormais les tentatives d'applyBattleStart, l'UI re-étiquette ce chemin commeCombatHandler init (disabled LAB), et les avertissements pointent vers la bonne route : un hook runtime sur l'edge CTB pour le comportement voulu « après qu'un tour valide soit passé ».RuntimeTools/AiScriptLab --phase-rotation-rt0a été ramené à une recette entièrementonTurnet passe toujours ; le fichier de test localm020.bina été restauré à la baseline propre hors du dépôt
v2.185.12.0
v2.185.14.0BETAPATCH
Lulu29 juin 2026
Rotation de Phase Monster AI : vrai dispatch `AfterAnyValidTurn` sur l'edge CTB
PhaseTurnEdgeHookn'est plus probe-only : le callback runtime résout désormais l'acteur d'edge, dérive lem###live, scanne chaque entrée sidecar correspondante pour ce monstre, et met en file les commandes authored via le pont structurel (resolveTargetMask -> queue script command) dans le même contexte d'edge CTB. Le runtime garde l'étatonlyOnceparentry x actorSlot, réinitialise cet état quand la signature de bataille change, et journalise désormais les vrais succès/échecs de dispatch au lieu de simples lignes de sonde. Dans l'éditeur, les sidecarsAfterAnyValidTurnsont désormais exportés vers lemodules\\configdu jeu quand le projet peut résoudreGameInstallRoot, et l'UI/les avertissements ont été durcis pour refléter le vrai périmètre : runtime v1 = dispatch de commande immédiat, mieux utilisé en one-shot ;guardVarreste des métadonnées, pas un chemin de mutation de var hors tour.RuntimeTools/PhaseTurnEdgeLaba été synchronisé avec le vrai format de logn6/a2. Statut :Needs Testingen jeu — les builds hors ligne sont verts, le RT2 est toujours en attente
v2.185.13.0
v2.185.15.0BETAPATCH
Seymour29 juin 2026
Coffre Obsidian + frontmatter de docs + infra d'outillage
- Coffre Obsidian configuré à la racine du dépôt : graph.json avec 11 groupes de couleurs par dossier/tag, snippets CSS (colorful-graph, colorful-folders) avec lueur de graphe et couleurs vives. docs/obsidian-vault/ avec 30+ notes interconnectées (hubs, notes RE, Battle AI, Spira Reforge, sessions, références) + 4 diagrammes Mermaid (arch SinScaleInject, flux Phase Rotation, VM ATEL, structure Monster Porteur Al Bhed). L'organiseur DeepSeek a traité ~1900 fichiers .md en ajoutant du frontmatter (tags, aliases, date) pour enrichir la vue de graphe. 5 compétences spécialistes FFX créées (monster-ai-specialist, runtime-hooks-engineer, wpf-module-architect, re-ida-analyst, data-diff-patch-engineer) avec auto-routage dans AGENTS.md. MCP GitHub configuré avec token en variable d'env + mise à jour .bashrc. .gitignore mis à jour (.mcp.json inclus). Frontmatter standardisé ajouté à AGENTS.md
v2.185.14.0
v2.185.16.0BETAPATCH
Seymour29 juin 2026
Rééquilibrage de stats/Gils/AP de monstres : Macalania, Bikanel, Calm Lands + 7 designs OD
- Iguanor (m026) et Mafut (m004) buffés selon les motifs de familles. Pampa (m208) buffé (HP 800→1500, AGI 24→40, MDEF 255 conservé). Calm Lands : AGI et stats secondaires buffées pour 10 monstres. Gils/AP augmentés sur 3 zones (Macalania, Bikanel, Calm Lands) avec bonus OD. APovk standardisé à 2×. 7 OD designés : Mushussu (Sand Breath), Zu (Sonic Storm), Pampa (10,000 Needles), Couguar (Blaster Cannon), Kimaira (Mighty Guard + Psychic Storm), Ogre (Ogre Smash×2). Sync à 4 cibles (repo/steam/extract/clean-bins) documentée comme règle de projet
v2.185.15.0
v2.185.17.0BETAPATCH
Seymour30 juin 2026
Rotation de Phase Monster AI P1+P2 + RE Seymour seconde couche + proposition d'éditabilité IDU
- Lecteur sensible aux branches P1+P2 :
AiDetectedBranchActionporte désormaisTargetProvenance/CommandProvenanceavec provenance locale au chemin préservée par le walker (PUSHV/POPV, findMatchingChr). L'UI deMonster AI Editoraffiche des blocs multi-lignes en lecture seule avec les origines cmd/cible/label. 0 erreurs de build, RT0 PASS. Seymour m124 : RE de seconde couche terminée — opcode 0x6051 (SetupWaitTimer) identifié via le compte à rebours CTB, 0x604D (MenuAnimationKind) mappé, 0x604B (BattleEventString) structuré comme table de chaînes avec code machine interne. Flux de setup CTB investigué : événement de début de bataille 0x01→0x704A (couche de scripting QtMG/engine), pas de l'ATEL pur. Indirect Dispatch Unit : recherche terminée — 57 tables indirectes, 147 opérations de dispatch, proposition d'éditeur visuel. Home (Gundappo) : formations azit03 commitées. Knowledge Base + FastEntrypoints + Session Handoff synchronisés
v2.185.16.0
v2.185.18.0BETAPATCH
Seymour30 juin 2026
Preuve d'opener Seymour promue dans Bible/Atlas + garde-fou in-app
- L'ouverture
Shell/Protect before the party actsest désormais fermée sans hooks externes :mcyt06_00 ?StartEndHooks2::HookStartposeAllMonsters.FirstStrike = true,AllMonsters.CurrentTurnDelay = 0,Monster#01.CurrentTurnDelay = 1, et pousse la party/les réserves de+2; avec la vraie formationslot0=m141,slot1=m124,slot2=m141,slot3=m125, cela prouve que l'opener est un setup natif piloté par encounter, pas un tourperformCommandcaché de Seymour. Le constat a été promu dans les docs durables (ATEL Bible,Monster AI Corpus Atlas) et dans laBIBLE OF SPIRAin-app viaAiBibleCatalog, avec une frontière produit honnête :Battle Corpus Crosswalk/Aurorapeuvent faire remonter cela en lecture seule, maisHookStart/ l'authoring du seed CTB initial n'est toujours pas une surface d'écrivain publique. Les docs consolidées de preuve native Seymour ont été versionnées avec le paquet
v2.185.17.0