JARVIS-UI
Update 2.162
6/22/2026
v2.162.0.0MINORJarvis-UI
PHASE E COMPLETE: `ModuleMasterDetail_Shell` across all 12 Core Authoring modules (E1-E12) (Jarvis-UI)
- (phase-end milestone — consolidates the 5 PATCHes
v2.161.1.0→v2.161.5.0). The entire Phase E ofdocs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md(§2 canonical pattern + §3 E9-E12 + §4) is delivered: 12 Core Authoring modules migrated from the hand-rolledAuto,*/2*,5*/3*,6*,3*grid (bloatedPadding=16Border card + ScrollViewer) to the canonical shell (ModuleMasterDetail_Shellwith a collapsible Expander,Padding=8, dense). Modules: E1 CtbBase, E2 PlayerGrowth, E3 Formation, E4 Treasure, E5 KeyItem, E6 AutoAbility, E7 BukiGetTreasureCatalog, E8 MonEditorSelector (v2.161.1.0) + E9 CustomizationEditor (TabControl with 2 Gear/Aeon shells,v2.161.2.0) + E10 ShopExplorer (3-col cascading, hex→tokens,v2.161.3.0) + E11 MixTableEditor (112×112 matrix,v2.161.4.0) + E12 KernelCommands (the repo's largest detail, 977 lines, hex→tokens,v2.161.5.0). Hard architectural decisions (E9-E12): outer TabControl preserved in Customization (2 shells); source picker becomes a ComboBox in the MasterHeader in Shop; the partner axis becomes an Expander inside the Detail in MixTable; the session bar stays above the shell + "Where Used" becomes an Expander inside the Detail in KernelCommands. Each module gainedrsp:Responsive.Breakpoints="True"+ aUserControl.narrowstyle that collapses the master below 760px. DataContext/bindings/handlers/converters/AutoSaveIndicator_Control/AtlasEvidenceBadgeStrip/IRestorableModule/x:Names unchanged everywhere. Writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE untouched. Release build 0 errors (403 preexisting warnings — Jarvis-UI baseline). Next: Phase F (F1 icons+emojis, F2 a11y, F3 tokens sweep, F4 i18n)
v2.161.5.0
v2.162.1.0PATCHJarvis-UI
Phase F §F1: utility icons (13 new) + emoji sweep (8 `.axaml` files) (Jarvis-UI)
- (visual polish: iconography; no new capability). First commit of Phase F (
docs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md§4.F1). Scope: visual container only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE untouched. 13 new utility icons inStyles/StudioIcons.axaml(IconSearch/IconAdd/IconRemove/IconWarning/IconUndo/IconRedo/IconFilter/IconOpen/IconClose/IconChevronDown/IconChevronRight/IconCheck/IconX— Lucide-like, viewBox 24×24,<StreamGeometry>). Emoji sweep across the 8 listed.axamlfiles: 🏐/💾/🌅/🗺️ removed fromsectionLabel/cardTitletitles and Save buttons. Save buttons (💾 Salvar) gained<PathIcon Data="{DynamicResource IconSave}"/>+ text (MonsterAiEditor ×2, EncounterTableExplorer ×1, AuroraChamber ×3). Emoji titles (🌅/🗺️/🏐) had the emoji stripped (cleaner than an inline PathIcon in a TextBlock).SphereGridCanvas_Control.axamlwas already clean (emoji removed inv2.159.5.0OPT-A6). Bonus beyond the 8: 2 user-visibleSetModuletitles ("Save Editor 💾","Sphere Grid 🧩"inMain_Window.axaml.cs) also cleaned for header visual consistency. Emojis in.cs(comments + status strings) untouched (out of scope). Release build 0 errors (403 preexisting warnings)
v2.162.0.0
v2.162.2.0PATCHJarvis-UI
Phase F §F2: `AutomationProperties.Name` on ~98 action buttons (a11y) (Jarvis-UI)
- (accessibility polish; no new capability). Second commit of Phase F (
docs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md§4.F2). Scope: visual container only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE untouched. Action-button accessibility: before this commit only ~8 buttons in the F2 scope hadAutomationProperties.Name(a screen reader could not announce icon-only buttons). Added on 98 buttons: 87 via scriptwork/_a11y_name_sweep_20260622.ps1(derives the name from the button's visible text; reads as UTF-8; skips buttons with non-ASCII text/icon glyphs like ◀/▶/… to avoid mojibake) across the 12 Core Authoring + SaveEditorHub + (Customization/Shop/MixTable/KernelCommands), + 4 explicit in KernelCommands (◀/▶ "Previous/Next FSB sample", "Import fsbankcl", "Import custom WAV"), + 2 in MainDashboard (Open Workspace + QuickTile{Binding Title}— icon-only, highest a11y priority), + 5 in Main_Window (Music/Settings/Workspace path/Back/Forward rail icons). Post-commit: 164 occurrences ofAutomationProperties.Nameacross 18Modules/files (vs ~8 in the F2 scope before). Handlers/bindings/writers untouched. Release build 0 errors (403 preexisting warnings)
v2.162.1.0
v2.162.3.0PATCHJarvis-UI
Phase F §F3: tokens sweep — uniform Padding → `Spacing*` (518 literals across 67 files); CornerRadius **not tokenized** (honest) (Jarvis-UI)
- (design-system polish; no new capability). Third commit of Phase F (
docs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md§4.F3 — "high churn, low incremental value"). Scope: visual container only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE untouched. Padding sweep: 518 uniformPadding="N"literals (N ∈ {4,8,12,16,20}) migrated to{DynamicResource SpacingXs/Sm/Md/Lg/Xl}across 67.axamlfiles inModules/via a conservative script (work/_padding_sweep_20260622.ps1— only replaces values that exactly match a token; left untouched the ~340 asymmetric/non-token Paddings likePadding="10,6"/Padding="14").MonsterAiEditor2_Control.axamlnot migrated (discontinued). CornerRadius sweep (§F3b) = honest NO-OP: the activeCornerRadiusvalues in the modules are mostly 5/6/7/14 — none match the tokensRadiusSm=8/Md=10/Lg=12/Pill=999. Forcing the nearest value would be a visual change, not tokenization. The doc cited "158 CornerRadius" but that count includedMonsterAiEditor2_Control.axaml(discontinued, ~34 occurrences of 8/10). Documented decision: leave CornerRadius literal where there is no exact match. Post-commit: 518Padding="{DynamicResource Spacing*}"across 67 files; 0Padding="16"remaining. Handlers/bindings/writers untouched. Release build 0 errors (403 preexisting warnings)
v2.162.2.0
v2.162.4.0PATCHJarvis-UI
Phase F §F4: i18n foundation (`.resx`) (Jarvis-UI)
- (foundation; no visible behavior change by default — default culture stays en). Fourth and final commit of Phase F (
docs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md§4.F4). Scope: visual container only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE untouched. Establishes the internationalization infrastructure: before this commit the repo had 0.resx; strings hardcoded everywhere. Created:Resources/Strings.resx(neutral = en, ~17 load-bearing keys: hero titles, rail labels, palette placeholder, action labels, mode pills) +Resources/Strings.pt.resx(PT-BR satellite) +Resources/Strings.cs(static accessor viaResourceManager, one static property per key — XAML-bindable as{x:Static res:Strings.Xxx}) +Strings.ApplyUiCulture()(readsFFX_UI_LANG=pt|en; default = neutral/en; setsDefaultThreadCurrentUICulturebefore any XAML binding). Wiring:App.axaml.cs Initialize()callsStrings.ApplyUiCulture()beforeAvaloniaXamlLoader.Load. The.resxare implicitEmbeddedResourcevia the SDK glob (Resources/**/*.resx) — verified thept\FFXProjectEditor.resources.dllsatellite emits. Binding demo at 2 load-bearing spots: MainDashboard CTA "Open workspace folder" ({x:Static res:Strings.DashboardCtaOpenWorkspace}+ a11y name) + Command Palette placeholder (Watermark="{x:Static res:Strings.RailSearchPlaceholder}"). Honesty: full i18n is infinite work (doc §4.F4). This commit establishes the foundation + demonstrates the pattern; migrating the ~50 ModuleRegistry Titles/Descriptions + hundreds of internal strings is future backlog (add a key to both resx + a property to Strings.cs + swap the literal for{x:Static}). No non-PT user is identified today, soFFX_UI_LANGis not exposed in UI (env var only). Handlers/bindings/writers/save bytes/hooks untouched. Release build 0 errors (403 preexisting warnings). Closes the entire Phase F (F1-F4)
v2.162.3.0
v2.162.5.0PATCHJarvis-UI
i18n: `ModuleRegistry` migration (41 modules × 5 fields) + dashboard strings + §16–§17 DONE (Jarvis-UI)
- (reuses F4 i18n foundation; no new product capability). Post-
PROMPT_GLM_PHASE_E_HARD_AND_F: 205 keysMod_{id}_{Title|Description|Mode|Notes|Scope}inStrings.resx+Strings.pt.resx(generatorwork/_gen_module_i18n_20260622.ps1); dynamicStrings.Get/Strings.Module;ModuleCatalogEntry.Localized*(dashboard, palette, rail tooltip, banner viaSetModuleoverlay when_currentModuleIdmatches registry). +11 keys dashboard (hero loaded/empty, Workspace/Modules/Hook labels).MainDashboard_ControlbindsLocalizedTitle/Description/Mode+{x:Static res:Strings.*}.docs/specs/EDITOR_UI_OVERHAUL_PLAN.md§16–§17 marked DONE (v2.160.0.0).PORT_STATUS.mdreconciled. Honesty: full PT descriptions where registry was already PT; EN titles translated in satellite; internalSetModuleliterals remain backlog. RT1 smoke + merge pending Halyson. Container-only scope. Release build 0 errors
v2.162.4.0
v2.162.6.0PATCHJarvis-UI
fix: Command Palette `Ctrl+K` + narrow drawer `Ctrl+B` (Popup `IsOpen`, tunnel KeyDown) (Jarvis-UI)
- (fixes shortcuts promised since Phase D that never opened an overlay). Avalonia 11
PopuprequiresIsOpen— code usedIsVisible(no-op). Shortcuts moved to tunnelKeyDownEventhandler so they work when a child TextBox/editor has focus.PlacementTarget+Topmoston popups. Release build 0 errors
v2.162.5.0
v2.162.8.0PATCH
fix: SGM 861 OOB slot 860 hook v1.30 (Jarvis-MAGIC-SGM)
SphereGridFullGridCompilerHook v1.30: boot bump942B6041252→41328, extended SKIP (-861/-862), F858 patch writers +0/+4 only, ALLOC-TRACE, producer watch, draw860 re-enabled when 861 buffers ready. RE:docs/reverse/FFX_SPHEREGRID_861_PRODUCER_RE_2026-06-20.md. DLL build PASS; in-game RT2 Needs Testing
v2.162.7.0
v2.162.9.0PATCHJarvis-UI
fix: MonsterAiEditor `{StaticResource Spacing*}` bug + Accent neon colors restored (Jarvis-UI)
- Two issues reported by Halyson: (1) Bug:
MonsterAiEditor_Control.axamlhad 4 occurrences ofPadding="{StaticResource SpacingLg/Md}"that failed to resolve at boot (same class as thev2.159.6.1hotfix —Spacing*tokens live inApplication.Resourcesafter the themeStyleInclude, soStaticResourcefails; the F3 sweep used{DynamicResource}but these 4 lines were a manualv2.159.6.0pilot that escaped). Changed to{DynamicResource Spacing*}— fixes the bug. (2) "Ugly, no neon" colors:v2.159.6.0normalized the 15Accent*FillBrushtokens (Shell/Protect/Regen/Gold/Cycle/Forbidden/Crimson/Undo/Refresh/Move/Haste/Reflect/NulAll/Builder/Reaction) to very dark tones (#21506A/#1E5E45/etc.), burying the neon border glow. Restored to more saturated/vivid tones (e.g. Shell#21506A→#1A6E8C, Protect#1E5E45→#1E8050, Gold#4A4226→#6E5E2A, Cycle#3D4F78→#3A5BB0) — a mid-tone between the dark fill and the neon border, giving presence without becoming solid neon. Neon borders/foregrounds (#66D8F0/#6FE3B7/#AAB4FF/etc.) untouched (already pretty). Affects every module consumingAccent*(MonsterAi is the biggest consumer). Scope: visual container only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE untouched. Release build 0 errors (403 preexisting warnings)
v2.162.8.0
v2.162.9.1REVISIONJarvis-MAGIC
Spira Reforge: design lock — Overdrive→AP out + tier T rewards
- Halyson: remove Overdrive→AP (annoying AP farm mini-glitch); replacement TBD. Modo SIN: mobs assigned tier T also get scaled base stats and more item drops (no numbers in this doc). Docs:
FFX_SPIRA_REFORGE_VANILLA_OFFENSIVE_REBALANCE_2026-06-16.md,SIN_DIFFICULTY_MODE_SPEC.md§3.4
v2.162.9.0
v2.162.9.2REVISIONJarvis-MAGIC
Spira Reforge: RT2 test harness handoff (grant skills before grid)
- Doc
docs/ai/PROMPT_SPIRA_REFORGE_COMMAND_RT2_TEST_HARNESS_2026-06-18.md— paste into parallel chat: minimalcommand.bindeploy,GridTeach+grid_teach_learned.binsidecar, grant viaffxprobectl call 385D10, per-pack smoke (manifest), revert vanilla checklist when stopping tests
v2.162.9.1
v2.162.9.4PATCH
Arena+ compose: full lab deploy + Enter debounce (Jarvis-ARENA)
- Exit
2147516570= missingArenaMultiBossLab.dll— deploy now copies full folder tomodules\tools\ArenaMultiBossLab\. Picker: confirm rising-edge + 20f cooldown after toggle (fixes accidental deselect on Enter)
v2.162.9.3