Auto-rebuild and Each If Children

306537
5 July 2026
11 changes in this update

Added

8 changes
  • State<T> + Track<T>( initial ) on both GooPanel and Cell. Auto-dirtying state for mutation outside event handlers (timers, network, polls): writing a different Value marks the owner dirty, no manual Rebuild()

  • Each.Of( items, builder ) / Each.Of( items, keyOf, builder ) plus a Children.Add overload for it: keyed list building inline in a Children = { ... } initializer instead of a separate AddRange call

  • Children.Add( in T? child ): nullable-child overload, the conditional-child idiom that replaces AddIf

  • Layout.Stack() and Layout.Layer( child ) with overloads for Container, Sector, Arc, and Polygon

  • Hud.ScrollArea, Hud.DismissScrim, Hud.FillRect: factories for the three most common test case patterns (bounded-height scroll triple, invisible dismiss click-catcher, absolute left-anchored fill bar)

  • Controls.Slider optional palette params: trackColor, fillColor, thumbColor

  • Viewport.CenterOn( world, screenPoint ): pin a world position to a given screen point

  • Perf: opt-in live pipeline profiler (Perf.Enabled, Report(), Reset())

Improved

2 changes
  • Cell.Mount no longer allocates when seed and configure are both null.

  • Variant application is gated on raw inputs: identical variant inputs skip the StringBuilder and rgba string work, so per-frame style writes on variant-carrying panels no longer pay a CSS build per pass

Removed

1 change
  • Removed Children.AddIf( condition, child ). Replace with the new nullable Add: children.Add( cond ? child : null )