JARVIS-UI
Atualização 2.162
22/06/2026
v2.162.0.0MINORJarvis-UI
FASE E COMPLETA: `ModuleMasterDetail_Shell` em todos os 12 módulos Core Authoring (E1-E12) (Jarvis-UI)
- (marco de fim de fase — consolidação dos 5 PATCHes
v2.161.1.0→v2.161.5.0). A Fase E inteira dodocs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md(§2 padrão canônico + §3 E9-E12 + §4) está entregue: 12 módulos Core Authoring migrados do hand-rolledAuto,*/2*,5*/3*,6*,3*grid (Border cardPadding=16inchado + ScrollViewer) pro shell canônico (ModuleMasterDetail_Shellcom Expander colapsável,Padding=8, denso). Módulos: E1 CtbBase, E2 PlayerGrowth, E3 Formation, E4 Treasure, E5 KeyItem, E6 AutoAbility, E7 BukiGetTreasureCatalog, E8 MonEditorSelector (v2.161.1.0) + E9 CustomizationEditor (TabControl com 2 shells Gear/Aeon,v2.161.2.0) + E10 ShopExplorer (3-col cascading, hex→tokens,v2.161.3.0) + E11 MixTableEditor (matrix 112×112,v2.161.4.0) + E12 KernelCommands (o maior detail do repo, 977 linhas, hex→tokens,v2.161.5.0). Decisões arquiteturais hard (E9-E12): TabControl externo preservado em Customization (2 shells); source picker vira ComboBox no MasterHeader em Shop; partner axis vira Expander dentro do Detail em MixTable; session bar mantida acima do shell + "Where Used" vira Expander dentro do Detail em KernelCommands. Cada módulo ganhoursp:Responsive.Breakpoints="True"+ styleUserControl.narrowque colapsa o master em<760px. DataContext/bindings/handlers/converters/AutoSaveIndicator_Control/AtlasEvidenceBadgeStrip/IRestorableModule/x:Names inalterados em todos. Writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE intocados. Build Release 0 erros (403 warnings preexistentes — baseline Jarvis-UI). Próximo: Fase F (F1 ícones+emojis, F2 a11y, F3 tokens sweep, F4 i18n)
v2.161.5.0
v2.162.1.0PATCHJarvis-UI
Fase F §F1: ícones utilitários (13 novos) + sweep emojis (8 arquivos `.axaml`) (Jarvis-UI)
- (polish visual: iconografia; sem nova capacidade). Primeiro commit da Fase F (
docs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md§4.F1). Escopo: container visual only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE intocados. 13 ícones utilitários novos emStyles/StudioIcons.axaml(IconSearch/IconAdd/IconRemove/IconWarning/IconUndo/IconRedo/IconFilter/IconOpen/IconClose/IconChevronDown/IconChevronRight/IconCheck/IconX— Lucide-like, viewBox 24×24,<StreamGeometry>). Sweep emojis nos 8 arquivos.axamllistados: 🏐/💾/🌅/🗺️ removidos de títulossectionLabel/cardTitlee botões de Save. Botões de Save (💾 Salvar) ganharam<PathIcon Data="{DynamicResource IconSave}"/>+ texto (MonsterAiEditor ×2, EncounterTableExplorer ×1, AuroraChamber ×3). Títulos com emoji (🌅/🗺️/🏐) tiveram o emoji removido (cleaner que PathIcon inline em TextBlock).SphereGridCanvas_Control.axamljá estava limpo (emoji removido emv2.159.5.0OPT-A6). Bônus fora dos 8: 2 titlesSetModuleuser-visible ("Save Editor 💾","Sphere Grid 🧩"emMain_Window.axaml.cs) também limpos por consistência visual do header. Emojis em.cs(comentários + status strings) intocados (fora de escopo). Build Release 0 erros (403 warnings preexistentes)
v2.162.0.0
v2.162.2.0PATCHJarvis-UI
Fase F §F2: `AutomationProperties.Name` global em ~98 botões de ação (a11y) (Jarvis-UI)
- (polish de acessibilidade; sem nova capacidade). Segundo commit da Fase F (
docs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md§4.F2). Escopo: container visual only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE intocados. Acessibilidade de botões de ação: antes deste commit apenas ~8 botões nos módulos F2 tinhamAutomationProperties.Name(leitor de tela não conseguia anunciar botões icon-only). Adicionado em 98 botões: 87 via scriptwork/_a11y_name_sweep_20260622.ps1(deriva o nome do texto visível do botão; lê como UTF-8; pula botões com texto não-ASCII/glyphs de ícone como ◀/▶/… para evitar mojibake) nos 12 Core Authoring + SaveEditorHub + (Customization/Shop/MixTable/KernelCommands), + 4 explícitos no KernelCommands (◀/▶ "Previous/Next FSB sample", "Import fsbankcl", "Import custom WAV"), + 2 no MainDashboard (Open Workspace + QuickTile{Binding Title}— ícone-only, maior prioridade a11y), + 5 no Main_Window (Music/Settings/Workspace path/Back/Forward rail icons). Pós-commit: 164 ocorrências deAutomationProperties.Nameem 18 arquivos deModules/(vs ~8 no escopo F2 antes). Handlers/bindings/writers intocados. Build Release 0 erros (403 warnings preexistentes)
v2.162.1.0
v2.162.3.0PATCHJarvis-UI
Fase F §F3: tokens sweep — Padding uniform → `Spacing*` (518 literals em 67 arquivos); CornerRadius **não-tokenizado** (honestidade) (Jarvis-UI)
- (polish de design-system; sem nova capacidade). Terceiro commit da Fase F (
docs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md§4.F3 — "alto churn, baixo valor incremental"). Escopo: container visual only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE intocados. Padding sweep: 518 literaisPadding="N"uniformes (N ∈ {4,8,12,16,20}) migrados para{DynamicResource SpacingXs/Sm/Md/Lg/Xl}em 67 arquivos.axamldeModules/via script conservador (work/_padding_sweep_20260622.ps1— só substitui valores que batem exato com um token; deixou intactos os ~340 Paddings assimétricos/não-token comoPadding="10,6"/Padding="14").MonsterAiEditor2_Control.axamlnão migrado (discontinued). CornerRadius sweep (§F3b) = NO-OP honesto: os valoresCornerRadiusativos nos módulos são majoritariamente 5/6/7/14 — nenhum bate com os tokensRadiusSm=8/Md=10/Lg=12/Pill=999. Forçar o valor mais próximo seria mudança visual, não tokenização. O doc citava "158 CornerRadius" mas esse count incluíaMonsterAiEditor2_Control.axaml(discontinued, ~34 ocorrências de 8/10). Decisão documentada: deixar CornerRadius literal onde não há match exato. Pós-commit: 518Padding="{DynamicResource Spacing*}"em 67 arquivos; 0Padding="16"restantes. Handlers/bindings/writers intocados. Build Release 0 erros (403 warnings preexistentes)
v2.162.2.0
v2.162.4.0PATCHJarvis-UI
Fase F §F4: i18n foundation (`.resx`) (Jarvis-UI)
- (foundation; sem mudança de comportamento visível por default — cultura default continua en). Quarto e último commit da Fase F (
docs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md§4.F4). Escopo: container visual only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE intocados. Estabelece a infraestrutura de internacionalização: antes deste commit o repo tinha 0.resx; strings hardcoded em todo lugar. Criado:Resources/Strings.resx(neutral = en, ~17 keys load-bearing: hero titles, rail labels, palette placeholder, action labels, mode pills) +Resources/Strings.pt.resx(satélite PT-BR) +Resources/Strings.cs(accessor estático viaResourceManager, 1 propriedade estática por key — bindable em XAML como{x:Static res:Strings.Xxx}) +Strings.ApplyUiCulture()(lêFFX_UI_LANG=pt|en; default = neutral/en; setaDefaultThreadCurrentUICultureantes de qualquer binding XAML). Wiring:App.axaml.cs Initialize()chamaStrings.ApplyUiCulture()antes doAvaloniaXamlLoader.Load. Os.resxsãoEmbeddedResourceimplícitos pelo SDK glob (Resources/**/*.resx) — verificado que o satélitept\FFXProjectEditor.resources.dllé emitido. Demonstração de binding em 2 pontos load-bearing: MainDashboard CTA "Open workspace folder" ({x:Static res:Strings.DashboardCtaOpenWorkspace}+ a11y name) + Command Palette placeholder (Watermark="{x:Static res:Strings.RailSearchPlaceholder}"). Honestidade: full i18n é trabalho infinito (doc §4.F4). Este commit estabelece a fundação + demonstra o pattern; a migração dos ~50 ModuleRegistry Titles/Descriptions + centenas de strings internas fica como backlog futuro (adicionar key nos 2 resx + propriedade no Strings.cs + trocar o literal por{x:Static}). Não há usuário não-PT identificado hoje, entãoFFX_UI_LANGnão é exposto em UI (env var only). Handlers/bindings/writers/save bytes/hooks intocados. Build Release 0 erros (403 warnings preexistentes). Fecha a Fase F inteira (F1-F4)
v2.162.3.0
v2.162.5.0PATCHJarvis-UI
i18n: migração `ModuleRegistry` (41 módulos × 5 campos) + dashboard strings + §16–§17 DONE (Jarvis-UI)
- (reuso da fundação i18n F4; sem nova capacidade de produto). Pós-prompt
PROMPT_GLM_PHASE_E_HARD_AND_F: 205 keysMod_{id}_{Title|Description|Mode|Notes|Scope}emStrings.resx+Strings.pt.resx(geradorwork/_gen_module_i18n_20260622.ps1);Strings.Get/Strings.Modulelookup dinâmico;ModuleCatalogEntry.Localized*(dashboard, palette, rail tooltip, banner viaSetModuleoverlay quando_currentModuleIdbate no registry). +11 keys dashboard (hero loaded/empty, labels Workspace/Modules/Hook).MainDashboard_ControlbindaLocalizedTitle/Description/Mode+{x:Static res:Strings.*}.docs/specs/EDITOR_UI_OVERHAUL_PLAN.md§16–§17 marcados DONE (v2.160.0.0).PORT_STATUS.mdreconciliado (v2.162.4.0→v2.162.5.0). Honestidade: descrições PT completas onde o registry já era PT; títulos EN traduzidos no satélite; strings internas dos 68SetModuleliterais ficam backlog. Smoke RT1 + merge pendente Halyson. Escopo container-only. Build Release 0 erros
v2.162.4.0
v2.162.6.0PATCHJarvis-UI
fix: Command Palette `Ctrl+K` + drawer narrow `Ctrl+B` (Popup `IsOpen`, tunnel KeyDown) (Jarvis-UI)
- (corrige atalhos prometidos desde Fase D que nunca abriam overlay). Avalonia 11
PopupexigeIsOpen— o código usavaIsVisible(no-op). Atalhos migrados para handler tunnel (KeyDownEvent) para funcionar com foco em TextBox/editores filhos.PlacementTarget+Topmostnos popups. Build Release 0 erros
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, SKIP estendido (-861/-862), patch F858 só writers +0/+4, ALLOC-TRACE, producer watch, draw860 reabilitado quando buffers 861 prontos. RE:docs/reverse/FFX_SPHEREGRID_861_PRODUCER_RE_2026-06-20.md. Build DLL PASS; RT2 in-game Precisa Testar
v2.162.7.0
v2.162.9.0PATCHJarvis-UI
fix: bug MonsterAiEditor `{StaticResource Spacing*}` + cores Accent neon restauradas (Jarvis-UI)
- Dois problemas reportados pelo Halyson: (1) Bug:
MonsterAiEditor_Control.axamltinha 4 ocorrênciasPadding="{StaticResource SpacingLg/Md}"que não resolviam no boot (mesma classe do hotfixv2.159.6.1— tokensSpacing*vivem emApplication.Resourcesdepois doStyleInclude, entãoStaticResourcefalha; o F3 sweep usou{DynamicResource}mas essas 4 linhas eram piloto manual dov2.159.6.0que escaparam). Trocado pra{DynamicResource Spacing*}— corrige o bug. (2) Cores "feias, sem neon": ov2.159.6.0normalizou os 15Accent*FillBrush(Shell/Protect/Regen/Gold/Cycle/Forbidden/Crimson/Undo/Refresh/Move/Haste/Reflect/NulAll/Builder/Reaction) a tons bem escuros (#21506A/#1E5E45/etc.), soterrando o brilho das bordas neon. Restaurado a tons mais saturados/vivos (ex.: Shell#21506A→#1A6E8C, Protect#1E5E45→#1E8050, Gold#4A4226→#6E5E2A, Cycle#3D4F78→#3A5BB0) — meio-tom entre o fill escuro e a borda neon, dando presença sem virar neon sólido. Bordas/foregrounds neon (#66D8F0/#6FE3B7/#AAB4FF/etc.) intactos (já eram bonitos). Afeta todos os módulos que consomemAccent*(MonsterAi é o maior). Escopo: container visual only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE intocados. Build Release 0 erros (403 warnings preexistentes)
v2.162.8.0
v2.162.9.1REVISIONJarvis-MAGIC
Spira Reforge: design lock — Overdrive→AP out + recompensa por tier T
- Halyson: remover Overdrive→AP (farm AP chato); substituto TBD. Modo SIN: mobs com tier T também ganham stats base ↑ e mais drops (sem números neste 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: handoff RT2 test harness (grant skills antes do grid)
- Doc
docs/ai/PROMPT_SPIRA_REFORGE_COMMAND_RT2_TEST_HARNESS_2026-06-18.md— colar em chat paralelo: deploy mínimocommand.bin,GridTeach+ sidecargrid_teach_learned.bin, grant viaffxprobectl call 385D10, smoke por pack (manifest), checklist revert vanilla ao parar teste
v2.162.9.1
v2.162.9.4PATCH
Arena+ compose: deploy lab completo + debounce Enter (Jarvis-ARENA)
- Exit
2147516570=ArenaMultiBossLab.dllausente — deploy agora copia pasta inteira paramodules\tools\ArenaMultiBossLab\. Picker: rising-edge no Confirm + cooldown 20f pós-toggle (fix desmarcar ao apertar Enter)
v2.162.9.3