Mise à jour 2.220
02/08/2026
v2.220.0.0BETAMINOR
Seymour2 août 2026
VIEWERHUB F2 : visualiseurs Magic/Model/Map migrés vers le hub + python retiré
- Routage de préfixes dans
StudioWebServer(MapPrefix) : multi-app sur un seul port —/= serve-dir noclip,/magic/= RuntimeTools/FFXMagicViewerWeb,/model/= FFXModelViewerWeb,/map/= FFXMapViewerWeb,/work/= repoRoot/work (actifs glTF absolus du Model Viewer). Le préfixe le plus long gagne ; testPrefixRouting_ServesAppUnderPrefix(9/9). - Nouvelles descs dans
ViewerHubService:magic-viewer,model-viewer,model-preview(model-preview.html pour la fusion/T-pose de MonEditor),map-scene-editor;BuildUrl(descId, extraQuery)avec cache-bust pour les web apps + query (ex.magic=004C) ;FindRepoRoot()(walk-up d'assembly). ViewerShellaccepteextraQuery(deep-link?magic=du MagicDllBrowser).- MonEditor migré : l'aperçu de modèle (fusion/T-pose) utilise désormais le hub (
model-preview+ query id1/id2/label1/label2/tpose/fusion) et leWebView2Hostcommun — adieu le launcher python 8767. - Aurora migrée :
AuroraViewerWindowetAuroraFieldExplorer_Controlutilisent leWebView2Hostcommun (namespace ModelViewerWeb supprimé). - RETIRED (git rm -f) :
MagicViewerWeb/(launcher + 3 embeds),ModelViewerWeb/(launcher + 3 embeds + WebView2Host original),MapSceneEditorWeb/(launcher + 3 embeds),MonsterStudioWeb/MonsterStudioLauncher.cs(launcher navigateur orphelin). Zéro python, zéro launcher dupliqué. - Câblage :
Main_Window—ShowMagicViewer/ModelViewerWeb/ModelViewerEmbedded/MapSceneEditorEmbedded ouvrent leViewerShell(Embedded 3D Viewer) ; les cas hérités fonctionnent toujours. - Porte : build 0 erreurs ; tests 9/9 PASS ; smoke éditeur (Extras → Magic Viewer / Model Viewer / Map Scene Editor — tous dans le shell, port unique 8769, préfixes).
v2.219.2.3
v2.220.0.1BETAPATCH
Seymour2 août 2026
i18n : couverture latine finale ~78-83 % (dict PT→ES 520 termes + EN→ES 201 + map UI 42 clés) + correctif de régénération ES
- Voie IFRT-2
- Dictionnaire PT→ES (
work/_i18n_pt_es_{1,2,3}.py, 520 termes : articles/pronoms/adjectifs/UI/gameplay/verbes) — l'ES était la seule latine sans couverture PT (les dicts PT étaient FR/DE/IT seulement) ; +EN→ES (work/_i18n_en_es_1.py, 201 termes : chance/selected/viewer/lab/writer + phrases composées « force battle »/« phase rotation »/« save editor »...). - Pipeline final consolidé (
work/_i18n_final_pipeline.py) : regex précompilées (7 dictionnaires), régénère les 4 latines depuis le neutre dans l'ordre glossaire > domaine > phrases EN > mots EN > PT > PT-ES/EN-ES ; l'ES manuelle ré-appliquée par-dessus ensuite (441) + 50 orphelines retirées. - Map UI basée sur clés (
work/_i18n_ui_map.py, 42 clés Common*/Action*/Lang*/Term*) : Undo→Annuler/Rückgängig, Language→Langue/Sprache/Lingua, Owner→Propriétaire/Besitzer/Proprietario... appliquée en dernier (forcer régénère depuis le neutre et écraserait). - Couverture finale : ES 83,4 %, FR 82,7 %, DE 78,3 %, IT 82,9 % (vs 50/58/56/60 % avant cette ronde). Reste = déchets techniques (hex/chemins/ids/noms propres de boss) qui restent EN selon la règle de la maison.
- Porte : build 0 erreurs ; suite 396/396 PASS ; 9/9 resx alignés (2199 clés). PT 10,2 % ; JA/KO/ZH en staging (banque de polices).
v2.220.0.0
v2.220.1.0BETAPATCH
Seymour2 août 2026
Modules désactivés (5) + MonEditor/Models sur Monster Studio + titres propres
- DISABLED 100 % (retirés du catalogue — disparus de l'UI ; blocs explicites dans
ModuleCatalogPolicy.csavec « 🚫 DISABLED — NOT FUNCTIONAL — do NOT re-enable without RT2 ») :magic-effects(Magic Effects — totalement non fonctionnel),ps3-magic(PS3 Magic HD — non fonctionnel/redondant),magic-viewer-web(Magic Viewer Web — redondant avec le Magic Studio du hub),model-viewer-embedded(doublon de Model Viewer HD — les deux ouvrent le shell),pointer-script-table(placeholder « ??? / Wave-1 sem editor »). - MonEditor → Models utilise désormais MONSTER STUDIO (noclip, vrai squelette PS2 animé) :
monster_studio.tsaccepte?monster=<modelID hex>(parse constructeur + sync du menu déroulant) etMonEditor_DataModeldérive le modelID de CatalogId (m021→0x1015) — l'aperçu du monstre édité s'ouvre animé, plus la T-pose three.js. La descmodel-preview(T-pose/fusion) reste disponible pour un usage futur. Bouton « Open preview in browser » caché (règle jamais-navigateur). - Titre corrigé :
map-scene-editora perdu le « Spira Forge · » (SPIRA FORGE est en pause par règle) + Notes/Scope mis à jour vers le hub (pas de python, pas de navigateur). - Porte : build 0 erreurs ; smoke : Monster Editor → Models (monstre animé dans Monster Studio) + catalogue sans les 5 cartes désactivées.
v2.220.0.1
v2.220.2.0BETAPATCH
Seymour2 août 2026
Modèles PS2 (RSD) désactivés (6e module)
ps2-rsd-models(Extras / PS2 Models RSD) — navigateur de comptes structurels en lecture seule des bundles RSD (manifeste @RSD/@PLY/@MAT + .tm2), pas de rendu 3D/édition/écrivain — très faible valeur, « inutile » pour l'utilisateur. Bloc de désactivation explicite dansModuleCatalogPolicy.cs. Le vrai visualiseur de modèles 3D = Model Viewer / Monster Studio (ViewerHub).- Porte : build 0 erreurs. Total désactivés : 6 (magic-effects, ps3-magic, magic-viewer-web, model-viewer-embedded, pointer-script-table, ps2-rsd-models).
v2.220.1.0
v2.220.3.0BETAPATCH
Seymour2 août 2026
PS2 Knowledge désactivé (7e module)
ps2-knowledge(Extras / PS2 Knowledge) — hub « provenance/structure » en lecture seule sans décodeurs/playback/écrivain — utilisateur : « no way to use this ». Bloc de désactivation explicite dansModuleCatalogPolicy.cs. La vraie connaissance vit dans les docs (KNOWLEDGE_BASE.md / docs/reverse/).- Porte : build 0 erreurs. Total désactivés : 7.
v2.220.2.0
v2.220.3.1BETAREVISION
Seymour2 août 2026
Nettoyages techniques : record consolidé du balayage hérité
- Doc
docs/ai/TECHNICAL_CLEANUP_2026-08-02.md— consolide TOUT ce qui a été retiré/désactivé cette session pour être hérité qui ne fonctionnait pas, dupliqué, et/ou de faible valeur structurelle : - 7 modules DÉSACTIVÉS (retirés du catalogue, avec blocs « 🚫 DISABLED — do NOT re-enable without RT2 ») :
magic-effects(Magic Effects — totalement non fonctionnel),ps3-magic(PS3 Magic HD — non fonctionnel/redondant),magic-viewer-web(Magic Viewer Web — doublon du Magic Studio du hub),model-viewer-embedded(doublon de Model Viewer HD),pointer-script-table(placeholder « no editor »),ps2-rsd-models(PS2 Models RSD — comptes en lecture seule, pas de rendu/édition/écrivain),ps2-knowledge(PS2 Knowledge — hub en lecture seule inutilisé). - 14 fichiers SUPPRIMÉS (git rm -f, F2) :
MagicViewerWeb/(launcher python 8766 + 3 embeds),ModelViewerWeb/(launcher python 8767 + 3 embeds + WebView2Host original),MapSceneEditorWeb/(launcher python 8768 + 3 embeds),MonsterStudioWeb/MonsterStudioLauncher.cs(launcher navigateur orphelin). - Duplication résolue : 5 visualiseurs + 6 îles → 1 hub (StudioWebServer in-process, port unique 8769, routage par préfixes ; 1 ViewerShell ; descs déclaratives). Zéro python, zéro navigateur externe, zéro processus fuyant.
- Autre : titre
map-scene-editornettoyé (pas de « Spira Forge · ») ; « Open preview in browser » de MonEditor caché ; MonEditor → Models migré vers Monster Studio (?monster=) ; Aurora migrée vers le WebView2Host commun.
v2.220.3.0
v2.220.4.0BETAPATCH
Seymour2 août 2026
Model Viewer (HD) désactivé (8e module) — option A+C approuvée
model-viewer-web(Model Viewer HD) — CASSÉ : les 816 glTF du catalogue pointent vers/work/phyre_chr_anim/(manquant sur disque — 0/816 chargent ; diagnostic documenté). Monster Studio (ViewerHub) couvre « voir les monstres » avec le vrai rendu PS2.- A+C : entrée désactivée (bloc explicite « 🚫 DISABLED » avec le chemin de ré-activation) + code et desc
model-viewerINTACTS et prêts pour que la voie HD ré-active (ré-exporter les glTF + pointer le catalogue correctement + retirer le bloc). Lemodel-preview(fusion/T-pose de MonEditor) reste actif (ne dépend pas de l'entrée). - Porte : build 0 erreurs. Total désactivés : 8.
v2.220.3.1
v2.220.5.0BETAPATCH
Seymour2 août 2026
Identité propre dans le ViewerShell : URL disparue, Games/About noclip purgés
- Shell v3 (identité FFX Mod Studio) : barre d'adresse/URL retirée de l'en-tête (règle utilisateur : pas d'emphase loopback/URL) ; marque « FFX Mod Studio » + titre du visualiseur + pilule de statut + Reload. Le layout global (sombre, 3D à droite) conservé.
- Skin purgé : les panneaux noclip écrivent leur titre dans
data-title(Panel.setTitle →toplevel.dataset.title) — le skin cache désormaisdiv[data-title="About"](crédits de noclip.website) etdiv[data-title="Games"](menu de jeux Wii/GC) par sélecteur d'attributs robuste + MutationObserver. Conservés : canvas 3D + panneau fonctionnel (menus déroulants) + Viewer Settings/Statistics (techniques, conservés). - Porte : build 0 erreurs. Suivant : navigation de scènes FFX dans le shell (arbre Zanarkand/Ruines/Besaid via routage de hash noclip — F3).
v2.220.4.0
v2.220.5.1BETAPATCH
Seymour2 août 2026
i18n : RÈGLE DE LA MAISON « ne jamais traduire les noms de fichiers » appliquée et protégée dans le pipeline
- Voie IFRT-2
- Bug trouvé par l'utilisateur : le dictionnaire de domaine (
command→commande/Kommando) corrompait les noms de fichiers via la correspondance\bcommand\bà l'intérieur decommand.bin→ 9 fichiers corrompus par langue (command.bin→commande.bin,item.bin→objet.bin,FFX.exe→F.exe,ps3data\magic→ps3data\magie...). - Correctif permanent :
PROTECT_REembarqué dansfull_translatede_i18n_final_pipeline.py— chemins (magicFiles\FFX), fichiers avec extensions (command.bin,kaizou.bin,.dds.phyre,magic_####.dll), acronymes techniques (ATEL, DINPUT8, RT0, RT2, EBP, EV01, FTCX, MSEQ, VBF, DDS, GLTF, PHYRE, monmagic1/2, a_ability, arms_rate...) et noms propres (Tidus, Rikku, Yunalesca, Sin, Seymour...) deviennent des placeholders~PTK~avant traduction et reviennent octet pour octet. Les mots UI communs (modules,command,item) restent libres. - Vérification : 0 nom de fichier corrompu sur les 4 latines (ES 83,4 % / FR 82,7 % / DE 78,2 % / IT 82,9 % préservés). Scripts :
_i18n_fix_filenames.py(correctif chirurgical) +_i18n_protect_tokens.py(régénère avec protection). - Porte : build 0 erreurs ; suite 396/396 PASS ; 9/9 alignés.
v2.220.5.0
v2.220.6.0BETAMINOR
Seymour2 août 2026
i18n : sélecteur de langue avec 6 options (PT/EN/ES/FR/DE/IT) — les 4 latines traduites sont désormais sélectionnables dans l'éditeur
- Voie IFRT-2
Strings.cs:ResolveLanguage/SetLanguage/CurrentLanguage/NormalizeLanguage/ApplyCultureétendus de PT/EN àpt|en|es|fr|de|it(CultureInfo pt-BR/es-ES/fr-FR/de-DE/it-IT) ; persistance (ui_lang.config) et envFFX_UI_LANGacceptent les 6 ; défaut restept.Main_Window.axaml: le MenuFlyout du sélecteur a gagné 4 nouveaux items (LangSpanish/LangFrench/LangGerman/LangItalian) + handlersMenuItem_Language_Es/Fr/De/It_Clicken code-behind (même fluxApplyLanguage→ redémarrage propre).- Resx : clés
LangSpanish/French/German/Italiandans les 9 resx, auto-localisées (chaque langue voit son propre nom : Français/Deutsch/Español/Italiano). - Porte : build 0 erreurs ; suite 396/396 PASS ; 9/9 alignés. Les traductions ES 83,4 % / FR 82,7 % / DE 78,2 % / IT 82,9 % sont désormais atteignables depuis l'UI.
v2.220.5.1
v2.220.7.0BETAPATCH
Lulu2 août 2026
Magic DLL Browser : onglets groupés en Structure | Runtime | RE (sélecteur à pilules) — répondant à la proposition UI de la voie
- Décision : appliquer la partie utile de la proposition (regrouper les 12 onglets lâches) au
MagicDllBrowser(Extras) — leMagicDllEditor(arbre+slots) reste INTACT (stable après le correctif du résolveur .rdata). - Groupes : Structure (Sections, Exports, Imports, WD3 Streams, Overlay Slots, PPP Opcodes) · Runtime (Sound/SeSep, Role Candidates) · RE (Family Comparator, Logical Decompile, Strings, Warnings).
- Implémentation : 3 pilules
tabPill/tabPillActive(thème) +Button_SetTabGroupen code-behind (filtreTabItem.IsVisible+SelectedIndex; aucun changement de données/liaisons). 2 nouvelles clés i18n (U_grupo_estrutura,U_grupo_re; Runtime réutiliseModeRuntime). - Portes : build 0 erreurs ; suite 396/396 PASS (dont StringsIntegrity).
v2.220.6.0
v2.220.8.0BETAPATCH
Seymour2 août 2026
CORRECTIF DE SKIN : application garantie du skin (repli ExecuteScriptAsync sur NavigationCompleted)
- Diagnostic (preuve WebView2) :
AddScriptToExecuteOnDocumentCreatedAsyncn'appliquait PAS le script au document (skin:falseconfirmé par une sonde surNavigationCompleted— le skin ne tournait jamais, c'est pourquoi About/Games persistaient même avec le bon build et des caches propres). - Correctif :
WebView2Hoststocke désormais le skin dans_pendingSkinScriptet le ré-applique viaExecuteScriptAsyncsurNavigationCompleted(le document existe déjà à ce moment — application garantie, couvre les reloads).AddScriptToExecuteOnDocumentCreatedAsyncreste le premier chemin (pour les futurs documents). - Diagnostics permanents légers :
NavigationCompletedécrit une sonde (skin/hash/about/games) dans%TEMP%\ffx-studio-diag.logà chaque navigation — outil pour la voie UI. - Porte : build 0 erreurs ; utilisateur confirmé : About et le menu de jeux (Games) ont disparu du visualiseur.
v2.220.7.0