Atualização 2.14
06/06/2026
v2.14.0BETA
Seymour
o decoder de texto JP lê o KANJI de 2 bytes (payoff da rachadura de hoje):
- o codec sem perdas
FfxEncodingagora reconhece os leads font-bank de 2 bytes (0x06/0x26-0x2F, provado emdocs/reverse/FFX_EVENT_TEXT_ENCODING_CRACKED_2026-06-06.md) e mostra refs de glifo legíveis —<FTCX:n>(o kanji deste evento),<K:n>(kanjibase.ftc),<F2/F3/F5:n>(outros bancos) — em vez do antigo<C..>+<MISS>embaralhado. Encoder totalmente simétrico (token↔bytes exato). Novo gate--jptext-rt0PROVES no corpus de eventos (367 arquivos, 18.935 scripts JP, 15.467 com glifos de 2 bytes): drift de glifo = 0 + codec idempotente (preexistente single-byte aliases de char canonicalizam uma vez e ficam fixos = seguro; no-edit já retorna os bytes originais). Beneficia diretamenteBattleTextExplorer(usa o codec sem perdas).offline_ci= 23 gates PASS. bump de csproj (capacidade user-visible)
v2.14.1BETA
Seymour
Save MonMagic agora é byte-safe (o último writer que driftava, morto):
Ability_Command.WriteListganhou um caminho preserve-only: captura os offsets text-pool originais na leitura e, num save com WITHOUT edição de texto, re-emits o pool original verbatim (colocando cada script no seu offset original, então strings compartilhadas — e.g. os muitos campos vazios do monmagic todos no offset 0 — ficam SHARED em vez de duplicadas). Verificação Read-back: qualquer edição de texto com mudança de tamanho/content-changing cai para o append usual. Isto mata o drift do monmagic sem a dedup que quebrou command/item (antes refutado). GateAbilityCommandLab: command/item RT0 4/4 + monmagic RT0 4/4 (era 0/4 drift) + edição de 1 flag localizada para todos; monmagic PROMOTED para CERTIFIED (um drift agora FAILS o gate).offline_ciPASS. bump de csproj (o Save monmagic do editor de kernel agora é byte-faithful)
v2.14.2BETA
Seymour
BattleTextExplorer ganha a fonte JP (kanji real, sem mais `<MISS>`) + 2 gates novos:
BattleTextExplorer_DataModel.ReloadSourcesagora carregajppc/battle/kernel/btl_txt.binatravés doJpDecoder— o payoff visível da rachadura de 2 bytes (v2.14.0). Provado headless pelo novo gate--btltext-jp-decode(Tools/BtlTextJpDecodeRt0): JPbtl_txt.bin= 128 entradas / 451 words → 44 kanji aparecem como<K:n>(bancobase.ftc), 0<MISS>, com um round-trip sem perdas 451/451 (decode→encode==bytes). A realidade refinou o palpite: o texto de batalha usa só o banco comum<K:n>(sem<FTCX>/F2/F3/F5— esses são per-event). Bug Phantom-flag corrigido: a flag--btltexttable-rt0era anunciada no header deBtlTextTableRt0.csmas nunca ligada emProgram.cs— rodá-la em background caía para o GUI (WinExe, 0 stdout) e "morria sem output". Agora ligada (default JP, fallback de idioma): JP PASS (3982/3982) + US PASS (1910/1910).--wave1-rt0ainda 12/12 PASS;--btltext-jp-decodeligado emoffline_ci.ps1→ 25 gates PASS (era 24). (Os 2 gates seriam doc-only; o bump de csproj é pela fonte JP no explorer UI.)
v2.14.3BETA
Seymour
Monster Commands (monmagic) open-crash KILLED + persistência de workspace + nomes da Aurora:
- Crash: abrir "Monster Commands 1/2" matava o editor (NPE em
Ability_Command.WriteList→WriteBytesIntoTextFile, disparado noBuildFile()do ctor). Causa raiz: o modelo foi renomeadoUnusedText1/2*→JapaneseOnlyText1/2*e ganhouOriginal*Offset(v2.14.1 preserve-only), mas os wrappers UI (KernelCommands_Wrapper,MonsterStatSheet_Wrapper) mantiveram os nomes OLD e faltavam os offsets →PropertyUtil.CopyPropertiesderrubava esses campos emWrap/Unwrap→ null → preserve-only falhava, caía no rebuild de append e NPE nos campos vazios de JP-only do monmagic. Fix: round-trip completo nos dois wrappers (rename +Original*Offset) + null-safeFfxEncoding.WriteBytesIntoTextFile. Novo gate--kernelcmd-roundtrip(Tools/KernelCommandRoundtripRt0) prova o caminho EXACT GUI (ReadList→Wrap→Unwrap→WriteList) byte-identical 4/4 (command/item/monmagic1/2) — que oAbilityCommandLab(caminho direto) estruturalmente não via. Ligado emoffline_ci→ 26 gates PASS. - Persistência de workspace: a pasta
mastercarregada é salva em%LocalAppData%\FFXProjectEditor\last-project.txte auto-restored no startup (prioridade: arg CLI → último carregado → defaults). Carrega uma vez, lembrado para sempre; sem mais default para a pasta Steam-mod. - Logger global de crash (
%LocalAppData%\FFXProjectEditor\crash.log, viaUtils/CrashLog) + load defensivo emKernelCommands(erro vermelho explicativo em vez de matar o app). - Aurora Chamber: as âncoras de monstro agora mostram o NAME (
🔴 <name>) em vez de "monster (live)". - Doc-only ride-along:
docs/governance/FFX_EDITOR_UI_CONVENTIONS.md(padrão de painel = Shop Explorer, não uma DataGrid de 50 colunas) + regra DINPUT8 revogada (probe é livre) + notas multi-language/MagicViewer no checklist. bump de csproj (recursos UI).