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)
Viewport.CenterOn( world, screenPoint ): pin a world position to a given screen point
Perf: opt-in live pipeline profiler (Perf.Enabled, Report(), Reset())
🧼 Improved
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
Removed Children.AddIf( condition, child ). Replace with the new nullable Add: children.Add( cond ? child : null )