JARVIS-UI
Update 2.161
6/22/2026
v2.161.0.0MINORJarvis-UI
Phase D COMPLETE: Command Palette `Ctrl+K` (Jarvis-UI)
- (new product capability: command palette with fuzzy search). Commit that closes the entire Phase D of
docs/ai/PROMPT_GLM_PHASE_D_TO_F_2026-06-20.md(D1+D2+D3+D4 + this D5). Scope: new rapid navigation surface — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE untouched. NewModules/Main/CommandPalette_Popup.axaml(.cs): a standalone UserControl (container-only, no handler knowledge) with aTextBox(placeholder "Search modules…") + anItemsControldata-bound toModuleRegistry.Allfiltered byTitle.Contains/Description.Contains/Id.Contains(OrdinalIgnoreCase). Each result shows an icon (viaIconKeyToGeometryConverter.ResolveGeometry) + Title + Description (2 lines). Enter opens the first result (implicit selection); Click on a row opens by Id; Esc closes. Wiring inMain_Window: new<Popup Name="CommandPalette" PlacementMode="Center" IsLightDismissEnabled="True">(empty in XAML — content instantiated in code-behind to avoid an extra XAML namespace);ToggleCommandPalette()caches the instance, wiresDispatchRequested/CloseRequested(events) and callsReset()before opening.OnKeyDowngainsif (ctrl && e.Key == Key.K) ToggleCommandPalette().Palette_DispatchRequested(id)closes the popup +Dispatch(id). Acceptance: Ctrl+K opens the centered palette, type "save" → Save Editor appears, Enter opens it. The entire Phase D delivered in 5 commits (v2.160.1.0→v2.160.4.0PATCHes + this MINOR): restorable back/forward across all ~72 controls viaIRestorableModule(8 editors + 9 hubs with explicit state; the rest stateless via default interface methods) + a Ctrl+K Command Palette over the 41 modules. Release build 0 errors (403 preexisting warnings)
v2.160.4.0
v2.161.1.0PATCHJarvis-UI
Phase E partial (E1-E8): `ModuleMasterDetail_Shell` in 8 Core Authoring modules (Jarvis-UI)
- (surface polish: layout migration; no new capability). First 8 commits of Phase E (
docs/ai/PROMPT_GLM_PHASE_D_TO_F_2026-06-20.md§4). Scope: visual container only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE untouched; DataContext/bindings/handlers/IRestorableModule unchanged. 8 modules migrated from hand-rolledAuto,*/2*,5*grid (bloatedPadding=16Border card + ScrollViewer) to the canonical shell (collapsible Expander,Padding=8, dense): E1 CtbBase, E2 PlayerGrowth, E3 Formation (field-context card became MasterHeader), E4 Treasure (kind-specific detail cards preserved), E5 KeyItem (2*,5*→Auto,*), E6 AutoAbility (8 detail cards preserved), E7 BukiGetTreasureCatalog (rootMargin=18removed + hex#C9A227→WarningBrush), E8 MonEditorSelector (already had a manual Expander — replaced by the shell; detail swap viaContentControl Name="ContentFrame"kept in the Detail slot). Each module gainedrsp:Responsive.Breakpoints="True"+ aUserControl.narrowstyle that collapses the master below 760px. E9-E12 remain (Customization/Shop/MixTable/KernelCommands — 3-col/matrix layouts, higher risk). Release build 0 errors (403 preexisting warnings)
v2.161.0.0
v2.161.2.0PATCHJarvis-UI
Phase E §E9: `CustomizationEditor` → `ModuleMasterDetail_Shell` (2 shells inside a TabControl) (Jarvis-UI)
- (surface polish: layout migration; no new capability). Continuation of Phase E (
docs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md§3.E9). Scope: visual container only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE untouched; DataContext/bindings/handlers/IRestorableModule unchanged.CustomizationEditor_Control.axaml(396 → ~340 lines) migrates the hand-rolled3*,7*grid (bloatedPadding=16Border card + ScrollViewer) from eachTabItemto the canonical shell — the outer<TabControl>(Gear / Aeon) is preserved; inside eachTabItemthere is now its ownModuleMasterDetail_Shellinstance (2 shells, header labels "Gear Recipes" / "Aeon Recipes"). The two binding sets (GearFilterText/DisplayedGearRecipes/SelectedGearRecipe/GearEditSessionvsAeonFilterText/DisplayedAeonRecipes/SelectedAeonRecipe/AeonEditSession) stay isolated in their shell — no mixing.AutoSaveIndicator_Control(Gear/Aeon) andAtlasEvidenceBadgeStrip(Aeon) preserved. Density applied: ListBox itemPadding=12→10,Margin=0,0,0,10→6, fonts16→14,sectionLabel/mutedgainedFontSize=11. Gainedrsp:Responsive.Breakpoints="True"+ aUserControl.narrowstyle that collapses both masters below 760px. E10-E12 remain (Shop/MixTable/KernelCommands). Release build 0 errors (403 preexisting warnings)
v2.161.1.0
v2.161.3.0PATCHJarvis-UI
Phase E §E10: `ShopExplorer` → `ModuleMasterDetail_Shell` (3-column cascading) (Jarvis-UI)
- (surface polish: layout migration; no new capability). Continuation of Phase E (
docs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md§3.E10). Scope: visual container only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE untouched; DataContext/bindings/handlers/IRestorableModule unchanged.ShopExplorer_Control.axaml(361 → ~360 lines) migrates the hand-rolledAuto,Auto,*grid (3-column cascading: source ListBox | shop rows ListBox | slot slice editor) to the canonical shell. Architectural decision: the source picker (Col0) becomes a compact ComboBox in the MasterHeader (LoadedSources/SelectedSource+LoadSummary+ Refresh); shop rows (Col1) become theMasterList(FilterText+DisplayedShops/SelectedShop+ filter feedback); the slot slice editor (Col2) becomes theDetail(denseSelectedSlotsWrapPanel with Image/ComboBox + the "Advanced details" Expander preserved).AutoSaveIndicator_ControlandAtlasEvidenceBadgeStrippreserved. Hex → tokens: the slot visual badge had inline#0D1621(background) and#274760(border) →{DynamicResource PanelDeepBrush}/{DynamicResource PanelStrokeBrush}. Gainedrsp:Responsive.Breakpoints="True"+ aUserControl.narrowstyle that collapses the master below 760px. E11-E12 remain (MixTable/KernelCommands). Release build 0 errors (403 preexisting warnings)
v2.161.2.0
v2.161.4.0PATCHJarvis-UI
Phase E §E11: `MixTableEditor` → `ModuleMasterDetail_Shell` (112×112 matrix, 3-column) (Jarvis-UI)
- (surface polish: layout migration; no new capability). Continuation of Phase E (
docs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md§3.E11). Scope: visual container only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE untouched; DataContext/bindings/handlers/IRestorableModule unchanged.MixTableEditor_Control.axaml(176 → ~200 lines) migrates the hand-rolled3*,3*,5*grid (112×112 matrix: origin ListBox | partner ListBox | result detail) to the canonical shell. Architectural decision: the matrix needs 2 chained selections (origin → partner → result) and doesn't fit the canonical master-detail directly. Origin (Col0) becomes theMasterList(shell only for the primary axis,OriginFilterText/DisplayedOrigins/SelectedOrigin); partner (Col1) becomes a selector inside the Detail in a collapsible Expander (expanded by default —ResultFilterText/DisplayedResults/SelectedResult, label "Partner Item"); the result detail (Col2) becomes the top of the Detail (heroheroBluepreserved + session + Combination Editor).AutoSaveIndicator_Control,GameIndex_TemplateandAtlasEvidenceBadgeStrippreserved. Gainedrsp:Responsive.Breakpoints="True"+ aUserControl.narrowstyle that collapses the master below 760px. E12 remains (KernelCommands — the repo's largest detail, highest risk). Release build 0 errors (403 preexisting warnings)
v2.161.3.0
v2.161.5.0PATCHJarvis-UI
Phase E §E12: `KernelCommands` → `ModuleMasterDetail_Shell` (the repo's LARGEST detail, 3-col + session bar + hex) (Jarvis-UI)
- (surface polish: layout migration; no new capability). Last commit of Phase E (
docs/ai/PROMPT_GLM_PHASE_E_HARD_AND_F_2026-06-22.md§3.E12 — the highest-risk item in the plan). Scope: visual container only — writers/save bytes/hooks/FfxLib/RT0/RT2/SGM/SPIRA FORGE untouched; DataContext/bindings/handlers/converters/IRestorableModule unchanged.KernelCommands_Control.axaml(977 → ~970 lines) migrates the 3-column layout (3*,6*,3*command list | editor detail | "Where Used") + session bar to the canonical shell. Architectural decision: the outerRowDefinitions="Auto,*"is kept — the TOP SESSION BAR stays above the shell (row 0, unchanged); the shell in row 1 hasMasterList= command ListBox (was Col0,DisplayedCommands/SelectedCommand+FilterText+ Clone/Delete/Add buttons),Detail= editor (was Col1, ~840 lines of dense fields preserved byte-for-byte: Identity/Animations/Battle SFX 3 tiers/Menu/Characters/Costs/Attack Data/Element/Properties/Status/Status Special/Extra); the 3rd "Where Used" column (was Col2) becomes a collapsible Expander inside the Detail (collapsed by default, label "Where Used — monster links").x:Names preserved (ThisControl,CommandList,MonsterLinksList) — the code-behind referencesMonsterLinksList.SelectedIteminOpenReferenceMonster.AutoSaveIndicator_Controland the 3 converters (Character/DamageFormula/HitCalcType) preserved. Hex → tokens in the same commit:#FF6B6B(LoadError foreground) →DangerBrush;#1A2A3A(Spira Ward note bg) →PanelDeepBrush;#3A6EA5(Spira Ward note border) →PanelStrokeBrush;#7EC8FF/#B8D4E8(Spira Ward note foreground) →AccentCoolBrush(exact token already exists). Gainedrsp:Responsive.Breakpoints="True"+ aUserControl.narrowstyle that collapses the master below 760px. Closes Phase E (E1-E12 complete). Release build 0 errors (403 preexisting warnings)
v2.161.4.0