Update 2.14
6/6/2026
v2.14.0BETA
Seymour
JP text decoder reads the 2-byte KANJI (payoff of today's crack):
- the
FfxEncodinglossless codec now recognizes the 2-byte font-bank leads (0x06/0x26-0x2F, proven indocs/reverse/FFX_EVENT_TEXT_ENCODING_CRACKED_2026-06-06.md) and surfaces readable glyph refs —<FTCX:n>(this event's kanji),<K:n>(base.ftckanji),<F2/F3/F5:n>(other banks) — instead of the old garbled<C..>+<MISS>. Fully symmetric encoder (token↔bytes exact). New gate--jptext-rt0PROVES on the event corpus (367 files, 18,935 JP scripts, 15,467 with 2-byte glyphs): glyph drift = 0 + codec idempotent (pre-existing single-byte char aliases canonicalize once then stay fixed = safe; no-edit already returns the original bytes). Directly benefitsBattleTextExplorer(uses the lossless codec).offline_ci= 23 gates PASS. csproj bump (user-visible capability)
v2.14.1BETA
Seymour
MonMagic Save is now byte-safe (the last drifting writer, killed):
Ability_Command.WriteListgot a preserve-only path: it captures the original text-pool offsets at read and, on a save WITHOUT a text edit, re-emits the original pool verbatim (placing each script at its original offset, so shared strings — e.g. monmagic's many empty fields all at offset 0 — stay SHARED instead of being duplicated). Read-back verification: any length/content-changing text edit falls back to the usual append. This kills the monmagic drift without the dedup that broke command/item (previously refuted).AbilityCommandLabgate: command/item RT0 4/4 + monmagic RT0 4/4 (was 0/4 drift) + 1-flag edit localized for all; monmagic PROMOTED to CERTIFIED (a drift now FAILS the gate).offline_ciPASS. csproj bump (the kernel editor's monmagic Save is now byte-faithful)
v2.14.2BETA
Seymour
BattleTextExplorer gains the JP source (real kanji, no more `<MISS>`) + 2 new gates:
BattleTextExplorer_DataModel.ReloadSourcesnow loadsjppc/battle/kernel/btl_txt.binthrough theJpDecoder— the visible payoff of the 2-byte crack (v2.14.0). Proven headless by the new--btltext-jp-decodegate (Tools/BtlTextJpDecodeRt0): JPbtl_txt.bin= 128 entries / 451 words → 44 kanji surface as<K:n>(base.ftcbank), 0<MISS>, with a lossless round-trip 451/451 (decode→encode==bytes). Reality refined the guess: battle text uses only the common<K:n>bank (no<FTCX>/F2/F3/F5— those are per-event). Phantom-flag bug fixed: the--btltexttable-rt0flag was advertised inBtlTextTableRt0.cs's header but never wired intoProgram.cs— running it in the background fell through to the GUI (WinExe, 0 stdout) and "died with no output". Now wired (JP default, language fallback): JP PASS (3982/3982) + US PASS (1910/1910).--wave1-rt0still 12/12 PASS;--btltext-jp-decodewired intooffline_ci.ps1→ 25 gates PASS (was 24). (The 2 gates would be doc-only; the csproj bump is for the JP source in the explorer UI.)
v2.14.3BETA
Seymour
Monster Commands (monmagic) open-crash KILLED + workspace persistence + Aurora names:
- Crash: opening "Monster Commands 1/2" killed the editor (NPE in
Ability_Command.WriteList→WriteBytesIntoTextFile, fired in the ctor'sBuildFile()). Root cause: the model was renamedUnusedText1/2*→JapaneseOnlyText1/2*and gainedOriginal*Offset(v2.14.1 preserve-only), but the UI wrappers (KernelCommands_Wrapper,MonsterStatSheet_Wrapper) kept the OLD names and lacked the offsets →PropertyUtil.CopyPropertiesdropped those fields onWrap/Unwrap→ null → preserve-only failed, fell to the append rebuild, and NPE'd on monmagic's empty JP-only fields. Fix: full round-trip in both wrappers (rename +Original*Offset) + null-safeFfxEncoding.WriteBytesIntoTextFile. New gate--kernelcmd-roundtrip(Tools/KernelCommandRoundtripRt0) proves the EXACT GUI path (ReadList→Wrap→Unwrap→WriteList) byte-identical 4/4 (command/item/monmagic1/2) — which theAbilityCommandLab(direct path) structurally couldn't see. Wired intooffline_ci→ 26 gates PASS. - Workspace persistence: the loaded
masterfolder is saved to%LocalAppData%\FFXProjectEditor\last-project.txtand auto-restored on startup (priority: CLI arg → last loaded → defaults). Load once, remembered forever; no more defaulting to the Steam-mod folder. - Global crash logger (
%LocalAppData%\FFXProjectEditor\crash.log, viaUtils/CrashLog) + defensive load inKernelCommands(explanatory red error instead of killing the app). - Aurora Chamber: monster anchors now show the NAME (
🔴 <name>) instead of "monster (live)". - Doc-only ride-along:
docs/governance/FFX_EDITOR_UI_CONVENTIONS.md(panel standard = Shop Explorer, not a 50-column DataGrid) + DINPUT8 rule revoked (probe is free) + multi-language/MagicViewer notes in the checklist. csproj bump (UI features).