🎁 Added
  • 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
  • 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 )
🎁 Added
  • Native reactive UI particles via Hud.Particles / ParticleField
  • GPU SDF arbitrary-polygon shapes (points-texture packing), plus a stable-identity AddRange overload for keyed lists Position/offsets, PointerEvents and BorderRadius exposed on Scene, Svg and Web panels
  • Controls.Popover(open, trigger, content, anchor, onDismiss, gap, key) helper for controlled anchored popover (Top / Bottom / Left / Right / BelowStart) with click-away light-dismiss - adjacent to the engine's Sandbox.UI.Popup and BasePopup
🧼 Improved
  • Unified the shape surface onto GPU SDF: Sector, Arc and Polygon all render via SDF. Included ui_shape.shader for this functionality
  • All shapes gained HoverBackgroundColor + TransitionMs, with outline-accurate true mouse enter/leave gating across every Stateful panel
  • Style resolution is now last-declared-wins (was first-wins)
🚯 Removed
  • Deleted the unused HitShapes CPU library
⚠️ Known Issues
  • Please make sure if you are using this, update your code: Controls.DisabledOpacity moved to Container.DisabledOpacity
🪛 Fixed
  • Applier.cs pointer-events not clearing All, returning mouse input to the user
  • hover / active background workaround for engine bug
🎁 Added
  • Goo.PointerDrag - frame-polled move/resize drag
  • Container.SwallowClick - fixes click-bubbling
  • Container.Disabled - Pointer off and reduced opacity
  • LayoutTransition - GlideState -- unified animation state system
  • expanded Image blob - positioning, Border, Radius, ImageRendering
  • Text.Style, UniformValue.Time, motion token
  • Cell.Mount - replaces hand-rolling _seeded guards
  • damper Tick(dt) - all 9 damper types now have Tick delta time
  • KeyTracker.Pressed rising-edge query
🧼 Improved
  • Hover/ActiveBackgroundColor on same container fixed
  • ZIndex fix - paint order should adhere to Z values now
🚯 Removed
  • AnimationGate API - replaced with more coherent animation system
🎁 Added
  • ShaderEffect refactor: construct from a shader path with an indexer uniform bag.
  • Uniforms accept per-frame functions and a built-in clock:
  • Hud.Overlay() - full-screen HUD root column layout, pointer-through (does not swallow game input)
  • Hud.Fill() - absolute layer, pointer-through; the standard Hud for shader effects
  • Hud.Scrim(color) - edge-pinned tinted backdrop for modals. PointerEvents left to the caller so it can toggle on open/close
  • Hud.Wallpaper(texture, path) - background image layer by texture or by path
  • Hud.Anchored(anchor, content, padding) - pins content to a screen corner or edge center, pointer-through
  • Hud.Spacer() - flex-grow gap that pushes siblings apart
  • Hud.Divider(color) - 1px full-width horizontal rule. low-alpha white by default.
  • Controls.Button(...) ready-made button and Children.AddIf(condition, child)
  • Container.Disabled forces pointer-off and dims, per node, applied after state variants.
  • Container.SwallowClick stops a click from bubbling
  • PointerDrag frame-polled move/resize helper, UI-scale correct via Current(panel)
  • PaddingX/Y
  • MarginX/Y
  • BorderTopRadius
  • BorderBottomRadius
  • BorderLeftRadius
  • BorderRightRadius
  • All 9 animation dampers gain Tick(dt).
  • KeyTracker.Pressed(name) rising-edge query.
  • Text.Style takes a TextStyle bundle for one-shot font blocks.
  • Cell.Mount<TCell>(key, seed, configure): seed runs once at first mount, configure every rebuild.
  • Image gains a positioning subset and defaults BackgroundRepeat to NoRepeat, stopping ObjectFit.Contain tiling
🧼 Improved
  • ShaderEffect materials are created on the main thread (fixes a render-thread crash)
  • Disabled styling is applied after state variants so it wins over hover/active.
  • Theme motion tokens (MotionFast/Base/Slow) are ints, removed casts.
🎁 Added
  • goo updated to 275570:
  • TextEntry primitive
  • TextEntry auto-grow default to 2.5x with override
  • TextEntry character limiting, regex matching behavior, character limits
  • Separate click routing for left/right/middle click
  • Scroll behavior implemented
  • Added a "viewport" primitive allowing for pan/zoom "infinite" canvases
🪛 Fixed
  • Fixed pointer events for children being null instead of none, preventing pop-ups from appearing when mousing over the text itself
  • Fixed stylesheet bleed reconciliation
  • Fixed nullable warnings and suppressed some noisy CS warnings
🚯 Removed
  • Cleaning the repo of examples -- will author examples a different way (~6MB to ~500kb)