Skip to content

Release August 2, 2026

Choose a tag to compare

Gum Release — August 2, 2026

Breaking Changes

  • GraphicalUiElement.GetAbsoluteWidth() / GetAbsoluteHeight() are renamed to the AbsoluteWidth / AbsoluteHeight properties, matching the existing AbsoluteLeft/Top/Right/Bottom. This is just an [Obsolete] warning, nothing breaks. (#4016)

For more information, see the upgrade guide: https://docs.flatredball.com/gum/gum-tool/upgrading/migrating-to-2026-august

Biggest Changes

New JSON Project File Format

Gum projects can now be saved as JSON (.gumj/.gusj/.gucj/.gutj/.behj/.ganj) alongside the existing XML format, via a new Content → Convert to JSON… menu action or gumcli convert-to-json. See https://docs.flatredball.com/gum/gum-tool/project-files

New JSON Project Format

Continued GC Allocation Reduction Across the Runtime

This release continues a systematic pass at cutting per-frame garbage-collector allocations: text word-wrap/layout, full text relayout, idle Forms UI updates, data-binding property-change notifications, text render-target rebuilds (down to zero, plus an always-allocated unused 16MB buffer removed entirely), stacked-layout relayout, sprite-sheet/state-keyframe animation playback, adding/removing child elements at runtime, and render draw-list building. Lower GC pressure means fewer/smaller GC pauses, which matters most for UIs with lots of text, animation, or frequent layout changes.

New ColorPicker Forms Control

Added a ColorPicker Forms control — a saturation/value square plus a hue bar, drag to pick a color, SelectedColorChanged event. Available on MonoGame/KNI/FNA at first; raylib and Skia catch up this release with their own default visuals. See https://docs.flatredball.com/gum/code/controls/colorpicker

New ColorPicker Forms Control

Variable References Get More Powerful

Variable References (a variable whose value is an expression referencing another object) pick up three upgrades: they can now resolve an object's true resolved position/size (AbsoluteX/Y/Left/Top/Right/Bottom/Width/Height) instead of only raw authored units, enabling CSS-style relative sizing regardless of how the target's own size is expressed; composite references (e.g. Color = Other.Color) can now cross differently-named properties (e.g. DropshadowColor = Source.FillColor); and a global::Localization.CurrentLanguage identifier lets a property switch directly off the current language (e.g. picking a CJK font) with no custom code, reflected live in the tool's Language preview.

Variable References Get More Powerful

Gum Tool

  • New JSON project file format — see Biggest Changes. (#4171, #4178, #4184, #4181)
  • Import HTML (experimental preview): a new Import HTML feature (Content → Import HTML…) converts a web page into a Gum project via a Node/Playwright-based converter (thanks @devinguthrie for the original plugin). This release adds importing from a remote URL with a choosable destination subfolder, ~4x faster conversion by reusing the built Gum CLI instead of rebuilding it every time, correct handling of CSS oklch() colors and SVG images, and fixes for multi-line text wrapping, flexbox child margins, and mixed bold/plain text alignment. (#4002 (thanks @devinguthrie), #4004, #4007, #4009, #4011, #4012, #4013)
  • Corner radius fields (top-left/top-right/bottom-left/bottom-right) now support click-and-drag scrubbing, matching the uniform Corner Radius field; fixed a stale green "default value" tint; clamped to a minimum of 0. (#4008)
  • Fixed the Variables panel letting StrokeWidth be dragged or typed below zero; clamped to a minimum of 0. (#3990)
  • Fixed KernSmith-generated fonts with a large dropshadow splitting across multiple texture pages instead of fitting on one. (#4023)
  • Fixed code generation wrongly falling back to the obsolete pre-2026 GueDeriving API for NuGet-referenced Gum runtime projects using the <PackageReference><Version> XML form, or where the runtime's version metadata lived in a separate referenced package. (#4086)
  • Added Gum.SilkNet to the Code tab's Output Library picker. (#4114)
  • Fixed NineSlice Red/Green/Blue color changes silently not applying in the tool's live wireframe view. (#4076)
  • Fixed the Gum tool dropping behind other windows (e.g. Visual Studio) after generating a font. (#4081)
  • Fixed a crash selecting or drag+dropping a polygon in single-file-published builds of the tool. (#4066)
  • Fixed the Alignment tab and Add Variable button staying stale after right-click > Add Object on an already-selected Screen. (#4069)
  • Fixed unreadable (white-on-yellow/pink) text in the state-editing and custom/animated-state banners in dark mode. (#4073)
  • Fixed the Variables tab color swatch showing solid gray instead of the resolved color for a color driven by a Variable Reference. (#4074)
  • Bubblegum Forms theme's shared styling/component files are now namespaced, so importing a second Forms theme no longer overwrites Bubblegum's colors/styles; all Bubblegum controls now consistently pull from the shared Styles object. (#4064)
  • Fixed the Bubblegum theme's bundled fonts (e.g. Nunito) silently failing to load and falling back to the default font. (#4143)
  • Added the Hazard theme to Add Forms. (#4136)
  • Fixed a faint seam where SliderThumb/RadioButton circle fill and border edges met, across all bundled themes (code and Add-Forms-imported). (#4147, #4150)
  • Fixed localization editing bugs: duplicate (loc) suffixes on repeated edits, the Language dropdown having no visible effect, a crash on CSV files with fewer language columns than expected, a CSV off-by-one that misaligned languages to their columns, and "Show Localization" off not reverting to the literal string ID. (#4052)
  • You can now drag search results from the Project window's search box directly onto the Wireframe view to create an instance. (#4131)
  • Fixed Ctrl+=/Ctrl+- zooming the app's font size instead of the wireframe/texture-coordinate canvas when one of those was focused. (#4226)
  • Fixed clicking a tree-view item's expand/collapse arrow also changing the selection. (#4230)
  • Load Recent now shows the file extension (.gumx vs .gumj) so same-named projects are distinguishable. (#4232)
  • Importing many elements via Forms/gumx import no longer rebuilds the tree view once per element — noticeably faster on large imports. (#4234)
  • Fixed the Textures tab's selection rectangle always snapping to the grid for display even when not being dragged, and fixed moving a selection also snapping its size (or vice versa). (#4215)
  • Fixed the wireframe editor's middle-mouse pan sometimes jumping the camera a large, wrong distance; fixed fractional camera position drift while panning/scrolling. (#4218)
  • Fixed Undo/Redo and other app-wide hotkeys not working while the Textures tab's coordinate selector had focus. (#4220)
  • Sped up project load for larger projects: removed a duplicate full project file-scan that ran twice on load, and fixed an internal element-lookup cache that was disabled during file-watch/font-generation scans. (#4250, #4253)
  • Fixed slow project/screen loads when a font reference was broken (missing .ttf, unresolvable system font) — failures are now cached for 30 seconds instead of retried and re-logged per instance. (#4256)
  • Fixed a spurious "Error trying to watch ...FontCache" message on a fresh project before any font had been generated; clearing the font cache now deletes only the folder's contents instead of the folder itself. (#4262)
  • Added an "Open Settings Folder" item under Help to open the global settings folder directly in Explorer. (#4263)
  • The STANDARDS chip palette now lists element types alphabetically, matching the classic Standard tree folder. (#4265)
  • Font-generation summary now says fonts are "already up to date" instead of always claiming fonts were created. (#4268)
  • Fixed the previously-selected instance staying highlighted in the tree view after editing a Standard's defaults from the palette. (#4269)
  • gumcli fonts/gumcli pack now correctly bundle and resolve fonts referenced only through the untaken branch of a conditional (ternary/locale-style) Font variable reference. (#4043)
  • gumcli screenshot has a new --background option to render against an opaque backdrop instead of transparent; fixed non-fully-opaque alpha in --background exports. (#4206)
  • Fixed building Gum from source outside Visual Studio (JetBrains Rider, dotnet build, or CI without the VS CodeSharing workload) crashing with an MSBuild exception. (thanks @ultimateownsz) (#4051)

Gum Runtimes

  • Continued GC allocation reduction across the runtime — see Biggest Changes. (#3977, #3978, #3980, #3981, #3982, #3983, #3984, #4192, #4202)
  • Variable References get more powerful — see Biggest Changes. (#4017, #4151, #4167, #4048)
  • Added AbsoluteWidth/AbsoluteHeight properties to GraphicalUiElement — see Breaking Changes. (#4016)
  • Fixed several crashes and silently no-op'ing behavior in trimmed/self-contained (PublishTrimmed) builds across MonoGameGum, KniGum, FnaGum, RaylibGum, and SkiaGum: project loading, Behavior-declared Forms properties, and GumService initialization on MonoGame/KNI. Added a lambda-expression SetBinding overload on GraphicalUiElement (plus a build-time trim-safety warning for string-path bindings) as a safer alternative to string-based binding paths. (#4113, #4117, #4119, #4106, #4122)
  • SkiaGum now supports render targets (an IsRenderTarget container bakes its subtree to an offscreen surface, matching MonoGame/raylib) and post-process shaders on render targets; two new inline BBCode tags, [font=Name] for per-run font swaps and [OutlineThickness=N] for per-run text outlines; a fix for text outlines never rendering at all (OutlineColor secretly defaulted to transparent); and Sprite, NineSlice, Container, and Polygon properties now correctly apply when set via Gum states or data binding instead of only direct code assignment. (#3991, #3997, #3999, #4038, #4075, #4083, #4107, #4108, #4109, #4110)
  • Text now supports Has Dropshadow in the Variables panel (works with both the built-in font generator and KernSmith); drop shadows render in their own independent color instead of being tinted by the text's color (MonoGame/KNI/FNA); a [HasDropshadow=true/false] BBCode tag toggles a run's shadow independently; LocalizeText excludes a specific Text instance from translation; and a crash rendering bitmap fonts with a too-small or space-less character table is fixed. (#4018, #4056, #4058, #4103, #4134, #4260)
  • New ColorPicker Forms control — see Biggest Changes. (#4055, #4245)
  • Gamepad/spatial navigation: Gum.SilkNet gained gamepad-driven Forms navigation; containers can opt into spatial (any-angle) gamepad/stick focus navigation via GamepadNavigationMode as an alternative to tab order; AnalogStick.RadialPushedRepeatRate() adds a direction-agnostic push/hold-repeat query; Slider.ValueChangedByUi and Forms Buttons' Push event now correctly fire for keyboard/gamepad activation, not just mouse. (#4039, #4132, #4130, #4127, #4197)
  • Visual-quality fixes across shapes and text: dashed circle/rectangle/arc stroke bugs and thin fill/stroke seams on raylib and Skia, a gradient-fill-plus-stroke bug, raylib text drop shadows not rendering at all, KernSmith drop shadows silently dropped on MonoGame/raylib, Dropshadow properties being ignored when set via Variable References/animations/the wireframe preview, and RaylibGum blend-mode render targets rendering too transparent. (#4025, #4026, #4030, #4031, #4032, #4060, #4065, #4187, #4210)
  • Apos.Shapes bumped to 0.7.8 — MonoGame/KNI shape rendering no longer needs the Content Pipeline .xnb workaround. (#4021)
  • Added AnimationController.PlayAnimationAsync to await an animation finishing instead of polling or subscribing to an event. (#4046)
  • Named events authored on a Gum animation timeline now actually fire at runtime via AnimationController.NamedEventOccurred. (#4054)
  • Added HitTestTransformMatrix for correct cursor hit-testing against UI drawn into an externally-managed, scaled render target. See https://docs.flatredball.com/gum/code/events-and-interactivity/mouse-and-touch-screen-cursor#several-coordinate-spaces-at-once-hittesttransformmatrix (#4098)
  • Fixed a crash pasting text into a Forms TextBox whose Text was null. (#4101)
  • Fixed a TwoWay-bound TextBox losing a just-typed edit when switching selection (e.g. a different row in a master-detail list) before a real LostFocus fired. (#4140)
  • Fixed a multi-line TextBox scroll bug that could put the caret in the wrong place and make text disappear, on both MonoGame/KNI/FNA and raylib. (#4152)
  • Fixed several raylib rendering-walk bugs: clipped elements drawing outside their own clip region, non-GraphicalUiElement children failing to render, invisible top-level elements not being skipped; and Rectangle/Circle appearance properties not applying when set via states or data binding on raylib. (#4159, #4177)
  • Fixed Menu popups not closing on an outside click when the Menu is drawn manually via GumBatch instead of added through AddToRoot/AddToManagers. (#4162)
  • Fixed a crash rendering to a render target on the first frame when the target contained clipped content; render-target baking now culls off-screen content when a clip is active. (#4189)
  • Fixed MinAlpha-masked render target content bleeding past its clip bounds instead of being fully masked out. (#4095)
  • Fixed Android: TextBox always falling back to the modal on-screen-keyboard dialog instead of the inline soft keyboard; the on-screen keyboard not dismissing when a TextBox lost focus. (#4242, #4248)

Tutorials and Templates

  • Fixed new NineSlice/Sprite/Text instances added to a project after using "Add Forms" silently inheriting unrelated baked-in theme defaults instead of normal blank defaults. (#4097)
  • Fixed the Gum.SilkNet sample solution's Forms screen to match the MonoGameGumInCode sample's default styling. (#3967)
  • Fixed the Bubblegum theme's bundled Nunito font failing to load (referenced without the Fonts/ path segment), and fixed font generation not recognizing a bundled .ttf referenced by a nested Text instance inside a themed component. (#4257)

What's Changed

  • Clear tree-view selection when editing a standard's defaults (#4269)
  • Report accurate font-generation summary when fonts are cache hits (#4268)
  • Sort STANDARDS palette chips alphabetically (#4265)
  • Add Help menu item to open the global settings folder (#4263)
  • Ensure FontCache/ always exists and clear-font-cache preserves the folder (#4262)
  • Fix BitmapFont's space-character fallback throwing IndexOutOfRangeException (#4260)
  • Fix Bubblegum theme's bundled Nunito Font values to include Fonts/ path segment (#4257)
  • Fix ObjectFinder.GetElementSave to consult fallback standard elements on cache miss (#4258)
  • Cache failed font generation attempts to avoid retry storms (#4256)
  • Enable ObjectFinder's element cache during ProjectLoad's dependency walk/font collection (#4253)
  • Drop two obsoleted Android keyboard APIs (CA1422) (#4248)
  • Diagnostics + fix: remove duplicate ProjectLoad file-watch scan (#4250)
  • Extract the shared PixelDataTextureApplier pool bookkeeping into GumCommon (#4249)
  • Enable the V3 ColorPicker default visual on raylib and Skia (#4245)
  • Dispatch the inline soft keyboard at runtime instead of #if ANDROID (#4242)
  • Remove dead FRB/platform #if branches from FormsUtilities and RangeBase (#4239)
  • Decouple GumFormsPlugin's postbuild from Gum.Cli's MonoGame/Raylib backends (#4237)
  • Coalesce per-element tree refresh during batch import (#4234)
  • Port the element tree view from WinForms to a native WPF TreeView (#4230)
  • Include file extension in Load Recent display name (#4232)
  • Delete the unused WinForms render/input path (#4229)
  • Gate LocalizeText behind a new GumxVersions v4 slot (#4225)
  • Make the texture-coordinate canvas WPF-native, dropping its WindowsFormsHost (#4226)
  • Register file-watch ignores before writing Convert to JSON output (#4221)
  • Forward app-wide hotkeys (Undo/Redo) from the Texture Coordinate selector (#4220)
  • Fix Textures tab grid snapping: don't snap display, split move/resize commit (#4215)
  • Fix middle-mouse pan snap and scrollbar camera-position truncation (#4218)
  • Collapse Red/Green/Blue VariableReferences triples in FormsTemplate (Standard) (#4214)
  • Graduate CullOffscreenWhenClipped from experimental status (#4213)
  • Document that Click, not Push, is the primary button activation event (#4212)
  • Docs: add raylib render-target compositing guidance, split into its own page (#4209)
  • Route RaylibGum's Normal/Additive blend through premultiply-consistent factors during a bake (#4210)
  • Resolve the two remaining Bucket D test projects (#4208)
  • Pin SourceFile preservation when an instance's BaseType changes (#4207)
  • gumcli screenshot --background, gum-raylib-rendering skill, ui-decoupling-plan status (#4206)
  • Pool BatchKeyGroupedOrderer's per-call scratch buffers (#4202)
  • Fix ButtonBase: raise Push alongside Click on keyboard/gamepad activation (#4197)
  • Stop the draw-list build allocating per frame, and run MonoGameGum.IntegrationTests in CI (#4192)
  • Migrate both backends' render-target bake onto the shared orderer subtree entry point (#4189)
  • Collapse cross-named color VariableReferences in Bubblegum and Hazard (#4188)
  • Wire Dropshadow* into CustomSetPropertyOnRenderable for Rectangle/Circle (#4187)
  • Add Gum.ImageDiff to Gum.sln/GumFull.sln to fix NU1105 (#4186)
  • Recognize .gumj/.gucj/etc. JSON project files at tool-side entry points (#4184)
  • Widen NativeAotSmoke.Harness to load a real JSON project under PublishAot=true (#4181)
  • Add Convert to JSON tool action and gumcli command (#4178)
  • Add JSON project file format (AOT-safe alternative to XML) (#4171)
  • Host the wireframe canvas natively in WPF, dropping WindowsFormsHost (#4166)
  • Migrate raylib's main render walk onto the shared HierarchicalOrderer (steps 1-3) (#4165)
  • Support cross-named composite VariableReferences (e.g. DropshadowColor = X.FillColor) (#4167)
  • Extract shared GraphicsDevice ownership out of GraphicsDeviceControl (#4163)
  • Add HitTestTransformMatrix sample to RenderTarget screen (#4162)
  • Add raylib off-screen-cull/clip-walk conformance tests; fix 3 divergences from HierarchicalOrderer (#4159)
  • Decouple wireframe scroll bar logic from WinForms; add WPF-native scroll bar (#4156)
  • Collapse matching Red/Green/Blue VariableReferences to Color/FillColor/StrokeColor (#4157)
  • Fix off-screen cull skipping scrolled multi-line TextBox text (#4152)
  • Keep composite variable references (Color = X.Color) collapsed on disk (#4151)
  • Clarify that check-references --fix replaces manual reference propagation (#4148)
  • Merge fill+border circles onto one CircleRuntime in Add Forms theme content (#4150)
  • Merge fill+border circles onto one CircleRuntime in code themes (#4147)
  • Port Hazard theme to Add Forms tool content (#4136)
  • Fix Bubblegum theme fonts: reference bundled .ttf filenames, not family names (#4143)
  • Fix flaky TextRuntimeBbCodeHasDropshadowTagTests via RaylibGum.Tests font cache leak (#4145)
  • Flush pending LostFocus-triggered edit before a binding source swap (#4140)
  • Add TextRuntime.LocalizeText: per-instance opt-out from translation (#4134)
  • Spatial (any-angle) gamepad/stick focus navigation (#4132)
  • Support drag-and-drop from Project window search results onto the Wireframe view (#4131)
  • Add direction-agnostic RadialPushedRepeatRate to AnalogStick (#4130)
  • Raise Slider.ValueChangedByUi for keyboard and gamepad input (#4127)
  • Annotate MVVM binding reflection with RequiresUnreferencedCode; add GUE lambda SetBinding (#4122)
  • Fix per-control tab tutorial sample: missing UseKeyboardDefaults() (#4125)
  • Audit and fix remaining trim-unsafe reflection sites (#4119)
  • Fix Behavior FormsProperty silently failing under PublishTrimmed (#4117)
  • Add OutputLibrary.Silk to codegen for Gum.SilkNet (#4114)
  • Fix PublishTrimmed crash on GumProjectSave.Load (#4113)
  • Redispatch Skia NineSlice through NineSliceRuntime (ADR 0011) (#4108)
  • Guard reflection-based runtime type registration against AOT metadata trimming (#4106)
  • Redispatch Skia Polygon through PolygonRuntime (ADR 0011) (#4110)
  • Redispatch Skia Container through ContainerRuntime (ADR 0011) (#4109)
  • Redispatch Skia Sprite through SpriteRuntime (ADR 0011) (#4107)
  • Add [HasDropshadow] BBCode tag for per-run shadow toggling (#4103)
  • Fix NRE when pasting into a TextBox whose Text is null (#4101)
  • Add per-element hit-test transform for externally-scaled render targets (#4098)
  • Materialize baked Standard-theme visual defaults onto FormsTemplate instances (#4097)
  • Fix MinAlpha-masked render-target content leaking past its clip bounds (#4095)
  • Converge Text/TextNoTranslate SetProperty dispatch onto TextRuntime (core+Raylib) (#4094)
  • Migrate Standard theme off StyleCategory, clean up stale Standards drift (#4093)
  • Reconcile TrySetPropertyOnText's Text wrapper with TextRuntime.Text's (#4087)
  • Migrate Standard theme off ColorCategoryState, remove dead ColorCategory (#4090)
  • Fix syntax-version detection for nested PackageReference form (#4086)
  • Fix TextRuntime.OutlineColor defaulting to transparent, hiding SkiaGum halo (#4083)
  • Restore Gum window focus after external font generation (#4081)
  • Fix BehaviorSave compact round trip drift (#4082)
  • Share generic Forms behaviors between themes via BehaviorReference.SourcePath (#4076)
  • SkiaGum text: add [OutlineThickness] BBCode tag, unify onto RichTextKit halo (#4075)
  • Fix color swatch showing gray when read-only via VariableReferences (#4074)
  • Fix unreadable state-editing banner text in dark mode (#4073)
  • Bubblegum theme: theme-specific styling object, full control coverage, per-theme namespacing (#4064)
  • Fix Alignment tab and Add Variable button not refreshing after Add Object auto-select (#4069)
  • Attach KernSmith shadow variant to in-memory fonts (#4065)
  • Vendor patched Topten.RichTextKit to fix halo outline spiking (#4068)
  • Fix NRE in AddPointSpriteVisual on single-file-published Gum.exe (#4066)
  • Raylib runtime two-pass dropshadow draw (#4060)
  • Remove dead AtlasedTexture/Atlas code from Gum core (#4059)
  • Drop shadow: KernSmith 0.18.1 (white silhouette) + tool blur floor (#4058)
  • Independent drop-shadow color via two-pass runtime draw (#4056)
  • Add ColorPicker Forms control with saturation/value + hue picker (#4055)
  • Guard VS-only CodeSharing imports in GumCoreShared.shproj with Exists() (#4051) (thanks @ultimateownsz)
  • Raise named animation events at runtime (#4054)
  • Resolve global::Localization.CurrentLanguage in variable-reference expressions (#4048)
  • Fix Text localization double/triple-translating on edit (#4052)
  • Add PlayAnimationAsync to AnimationController (#4046)
  • Pregenerate every branch of a conditional Font-affecting VariableReferences expression (#4043)
  • Gum.SilkNet: implement gamepad input for Forms navigation via Silk.NET.Input (#4039)
  • SkiaGum text: support [font] BBCode tag (#4038)
  • Declare FRB-only IXRuntime interfaces and unify Sprite/NineSlice/Container/Polygon dispatch (#4036)
  • Redispatch Polygon Alpha/Red/Green/Blue/Color through PolygonRuntime (#4035)
  • Converge Container Alpha/IsRenderTarget dispatch onto ContainerRuntime (#4034)
  • Converge NineSlice dispatch onto NineSliceRuntime (Blend/Color/RGB/BorderScale/Tiling/FrameWidth) (#4033)
  • Fix raylib LineCircle fill/stroke seam on solid strokes (#4032)
  • Fix Skia CircleRuntime fill/stroke seam on thick strokes (#4031)
  • Unify RectanglesScreen.cs across MonoGame/raylib/SilkNet samples (#4030)
  • Unify CirclesScreen.cs across MonoGame/raylib/SilkNet samples (#4026)
  • Use Apos.Shapes' native DashStyle API for dashed shape strokes (#4025)
  • KernSmith: use AutofitTexture instead of Gum's bmfont.exe-oriented size heuristic (#4023)
  • Bump Apos.Shapes/Apos.Shapes.KNI to 0.7.8, drop precompiled-xnb workaround (#4021)
  • Expose Text HasDropshadow in the Gum tool (#4018)
  • Variable references: resolve AbsoluteX/Y/Left/Top/Right/Bottom/Width/Height (#4017)
  • HtmlToGum: invoke prebuilt gumcli.dll directly instead of dotnet run (#4013)
  • HtmlToGum: pin geeksforgeeks.org repro fixture for header-duplication bug (#4012)
  • Add AbsoluteWidth/AbsoluteHeight properties, obsolete GetAbsoluteWidth/GetAbsoluteHeight (#4016)
  • HtmlToGum: iterative visual-fidelity fixes (autonomous session) (#4011)
  • Fix Rectangle/Circle IsFilled and Fill*/Stroke*/Blend not applying from saved projects (#4010)
  • HtmlToGum: fix oklch() colors and SVG images vanishing (#4009)
  • HtmlToGum: support remote URL source and destination subfolder on import (#4007)
  • Add drag-to-scrub to individual corner radius fields (#4008)
  • Add HtmlToGum Import HTML plugin under Tool/ (#4002) (thanks @devinguthrie)
  • HtmlToGum: bootstrap output project via gumcli new, not a static Standards snapshot (#4004)
  • Unify RT shader sample screens across MonoGame/raylib/Skia (#4000)
  • Add Skia render-target post-process shader support (#3999)
  • Add additive-blend support for SkiaGum render-target containers (#3997)
  • Unify InMemoryFontCreator property declaration via type alias (#3996)
  • Extract shared BmfcSave builder for inline BBCode font runs (#3995)
  • Remove color-conversion #if from Sprite/Text/NineSlice runtimes (#3994)
  • Move IRenderTargetTextureReferencer to GumCommon; unify RT-sprite detection (#3993)
  • Add render-target support to SkiaGum; unify RenderTargetScreen sample (#3991)
  • Clamp StrokeWidth to a minimum of 0 in the variable grid (#3990)
  • Converge XNA render-target sprites onto raylib's pull model (#3987)
  • Eliminate add/remove-child churn allocations (#3984)
  • Eliminate per-frame LINQ closures in AnimationChain playback (#3983)
  • Eliminate per-frame boxed enumerator in stacked-layout relayout (#3982)
  • Pool per-realization width buffer in BitmapFont; remove dead ImageData render path (#3981)
  • Reduce per-notification binding allocations (#3980)
  • Tighten comments in #1934 text-wrap change; add code-comment style rule (#3979)
  • Halve idle-frame Update allocations (128->64 B/f) (#3978)
  • Eliminate per-frame Text layout allocations in the wrapping/measure path (#3977)
  • Add ListBox scroll allocation regression guard (#3975)
  • Make SilkNetGumSample's Forms screen match MonoGameGumInCode (#3967)

Full Changelog: Release_July_22_2026...Release_August_02_2026