JARVIS-UI
Atualização 2.161
22/06/2026
v2.161.0.0MINORJarvis-UI
Fase D COMPLETA: Command Palette `Ctrl+K` (Jarvis-UI)
- (capacidade nova de produto: palette de comandos com fuzzy search). Commit que fecha a Fase D inteira do
docs/ai/PROMPT_GLM_PHASE_D_TO_F_2026-06-20.md(D1+D2+D3+D4 + este D5). Escopo: nova superfície de navegação rápida — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE intocados. NovoModules/Main/CommandPalette_Popup.axaml(.cs): UserControl próprio (container-only, não conhece handlers) comTextBox(placeholder "Search modules…") +ItemsControldata-bound aoModuleRegistry.Allfiltrado porTitle.Contains/Description.Contains/Id.Contains(IgnoreCase). Cada resultado mostra ícone (viaIconKeyToGeometryConverter.ResolveGeometry) + Title + Description (2 linhas). Enter abre o primeiro resultado (seleção implícita); Click num row abre pelo Id; Esc fecha. Wiring noMain_Window: novo<Popup Name="CommandPalette" PlacementMode="Center" IsLightDismissEnabled="True">(vazio no XAML — conteúdo instanciado em code-behind pra evitar namespace XAML extra);ToggleCommandPalette()cacheia a instância, ligaDispatchRequested/CloseRequested(eventos) e chamaReset()antes de abrir.OnKeyDownganhaif (ctrl && e.Key == Key.K) ToggleCommandPalette().Palette_DispatchRequested(id)fecha o popup +Dispatch(id). Aceite: Ctrl+K abre palette central, digita "save" → Save Editor aparece, Enter abre. Fase D inteira entregue em 5 commits (v2.160.1.0→v2.160.4.0PATCHes + este MINOR): back/forward restaurável em todos os ~72 controles viaIRestorableModule(8 editores + 9 hubs com estado explícito; resto stateless via default interface methods) + Command Palette Ctrl+K sobre os 41 módulos. Build Release 0 erros (403 warnings preexistentes)
v2.160.4.0
v2.161.1.0PATCHJarvis-UI
Fase E parcial (E1-E8): `ModuleMasterDetail_Shell` em 8 módulos Core Authoring (Jarvis-UI)
- (polish de superfície: migração de layout; sem nova capacidade). Primeiros 8 commits da Fase E (
docs/ai/PROMPT_GLM_PHASE_D_TO_F_2026-06-20.md§4). Escopo: container visual only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE intocados; DataContext/bindings/handlers/IRestorableModule inalterados. 8 módulos migrados do hand-rolledAuto,*/2*,5*grid (Border cardPadding=16inchado + ScrollViewer) pro shell canônico (Expander colapsável,Padding=8, denso): E1 CtbBase, E2 PlayerGrowth, E3 Formation (field-context card virou MasterHeader), E4 Treasure (cards kind-specific preservados no Detail), E5 KeyItem (2*,5*→Auto,*), E6 AutoAbility (8 cards de detail preservados), E7 BukiGetTreasureCatalog (rootMargin=18removido + hex#C9A227→WarningBrush), E8 MonEditorSelector (já tinha Expander manual — substituído pelo shell; detail swap viaContentControl Name="ContentFrame"mantido no slot Detail). Cada módulo ganhoursp:Responsive.Breakpoints="True"+ styleUserControl.narrowque colapsa o master em<760px. Faltam E9-E12 (Customization/Shop/MixTable/KernelCommands — layouts 3-col/matrix, maior risco). Build Release 0 erros (403 warnings preexistentes)
v2.161.0.0
v2.161.2.0PATCHJarvis-UI
Fase E §E9: `CustomizationEditor` → `ModuleMasterDetail_Shell` (2 shells dentro de TabControl) (Jarvis-UI)
- (polish de superfície: migração de layout; sem nova capacidade). Continuação da Fase E (
docs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md§3.E9). Escopo: container visual only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE intocados; DataContext/bindings/handlers/IRestorableModule inalterados. OCustomizationEditor_Control.axaml(396 → ~340 linhas) migra o grid hand-rolled3*,7*(Border cardPadding=16inchado + ScrollViewer) de cadaTabItempro shell canônico — o<TabControl>externo (Gear / Aeon) é preservado; dentro de cadaTabItemhá agora uma instância própria doModuleMasterDetail_Shell(2 shells, header labels "Gear Recipes" / "Aeon Recipes"). Os 2 conjuntos de bindings (GearFilterText/DisplayedGearRecipes/SelectedGearRecipe/GearEditSessionvsAeonFilterText/DisplayedAeonRecipes/SelectedAeonRecipe/AeonEditSession) ficam isolados no seu shell — sem mistura.AutoSaveIndicator_Control(Gear/Aeon) eAtlasEvidenceBadgeStrip(Aeon) preservados. Densidade aplicada: ListBox itemPadding=12→10,Margin=0,0,0,10→6, fontes16→14,sectionLabel/mutedganharamFontSize=11. Ganhoursp:Responsive.Breakpoints="True"+ styleUserControl.narrowque colapsa ambos os masters em<760px. Faltam E10-E12 (Shop/MixTable/KernelCommands). Build Release 0 erros (403 warnings preexistentes)
v2.161.1.0
v2.161.3.0PATCHJarvis-UI
Fase E §E10: `ShopExplorer` → `ModuleMasterDetail_Shell` (3-col cascading) (Jarvis-UI)
- (polish de superfície: migração de layout; sem nova capacidade). Continuação da Fase E (
docs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md§3.E10). Escopo: container visual only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE intocados; DataContext/bindings/handlers/IRestorableModule inalterados. OShopExplorer_Control.axaml(361 → ~360 linhas) migra o grid hand-rolledAuto,Auto,*(3-col cascading: source ListBox | shop rows ListBox | slot slice editor) pro shell canônico. Decisão arquitetural: source picker (Col0) vira um ComboBox compacto no MasterHeader (LoadedSources/SelectedSource+LoadSummary+ Refresh); shop rows (Col1) viram oMasterList(FilterText+DisplayedShops/SelectedShop+ feedback de filtro); slot slice editor (Col2) vira oDetail(WrapPanel denso de cardsSelectedSlotscom Image/ComboBox + Expander "Advanced details" preservado).AutoSaveIndicator_ControleAtlasEvidenceBadgeStrippreservados. Hex → tokens: o visual badge do slot tinha#0D1621(background) e#274760(border) inline →{DynamicResource PanelDeepBrush}/{DynamicResource PanelStrokeBrush}. Ganhoursp:Responsive.Breakpoints="True"+ styleUserControl.narrowque colapsa o master em<760px. Faltam E11-E12 (MixTable/KernelCommands). Build Release 0 erros (403 warnings preexistentes)
v2.161.2.0
v2.161.4.0PATCHJarvis-UI
Fase E §E11: `MixTableEditor` → `ModuleMasterDetail_Shell` (matrix 112×112, 3-col) (Jarvis-UI)
- (polish de superfície: migração de layout; sem nova capacidade). Continuação da Fase E (
docs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md§3.E11). Escopo: container visual only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE intocados; DataContext/bindings/handlers/IRestorableModule inalterados. OMixTableEditor_Control.axaml(176 → ~200 linhas) migra o grid hand-rolled3*,3*,5*(matrix 112×112: origin ListBox | partner ListBox | result detail) pro shell canônico. Decisão arquitetural: a matriz exige 2 seleções encadeadas (origin → partner → result) e não cabe direto no master-detail canônico. Origin (Col0) viraMasterList(shell só pro primary axis,OriginFilterText/DisplayedOrigins/SelectedOrigin); partner (Col1) vira um seletor dentro do Detail num Expander colapsável (default expandido —ResultFilterText/DisplayedResults/SelectedResult, label "Partner Item"); result detail (Col2) vira o topo do Detail (heroheroBluepreservado + session + Combination Editor).AutoSaveIndicator_Control,GameIndex_TemplateeAtlasEvidenceBadgeStrippreservados. Ganhoursp:Responsive.Breakpoints="True"+ styleUserControl.narrowque colapsa o master em<760px. Falta E12 (KernelCommands — maior detail do repo, maior risco). Build Release 0 erros (403 warnings preexistentes)
v2.161.3.0
v2.161.5.0PATCHJarvis-UI
Fase E §E12: `KernelCommands` → `ModuleMasterDetail_Shell` (MAIOR DETAIL DO REPO, 3-col + session bar + hex) (Jarvis-UI)
- (polish de superfície: migração de layout; sem nova capacidade). Último commit da Fase E (
docs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md§3.E12 — o de MAIOR RISCO do plano). Escopo: container visual only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE intocados; DataContext/bindings/handlers/converters/IRestorableModule inalterados. OKernelCommands_Control.axaml(977 → ~970 linhas) migra o layout 3-col (3*,6*,3*command list | editor detail | "Where Used") + session bar pro shell canônico. Decisão arquitetural: outerRowDefinitions="Auto,*"mantido — a TOP SESSION BAR fica acima do shell (row 0, inalterada); o shell na row 1 temMasterList= command ListBox (era Col0,DisplayedCommands/SelectedCommand+FilterText+ botões Clonar/Apagar/Adicionar),Detail= editor (era Col1, ~840 linhas de campos densos preservados byte-a-byte: Identity/Animations/Battle SFX 3 tiers/Menu/Characters/Costs/Attack Data/Element/Properties/Status/Status Special/Extra); a 3ª coluna "Where Used" (era Col2) vira um Expander colapsável dentro do Detail (default colapsado, label "Where Used — monster links").x:Names preservados (ThisControl,CommandList,MonsterLinksList) — o code-behind referenciaMonsterLinksList.SelectedItememOpenReferenceMonster.AutoSaveIndicator_Controle os 3 converters (Character/DamageFormula/HitCalcType) preservados. Hex → tokens no mesmo commit:#FF6B6B(LoadError foreground) →DangerBrush;#1A2A3A(Spira Ward note bg) →PanelDeepBrush;#3A6EA5(Spira Ward note border) →PanelStrokeBrush;#7EC8FF/#B8D4E8(Spira Ward note foreground) →AccentCoolBrush(token exato já existe). Ganhoursp:Responsive.Breakpoints="True"+ styleUserControl.narrowque colapsa o master em<760px. Fecha a Fase E (E1-E12 completa). Build Release 0 erros (403 warnings preexistentes)
v2.161.4.0