Skip to content

Release July 22, 2026

Latest

Choose a tag to compare

Gum Release — July 22, 2026

Breaking Changes

  • TextRuntime's font-object property is renamed to Typeface across all backends — this is just an [Obsolete] warning, nothing breaks. (#3717)

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

Biggest Changes

New Gum.SilkNet Runtime

Silk.NET graduates from an experimental, no-input prototype to a first-class Gum runtime package with real mouse, keyboard, and clipboard input driven through Forms, key-repeat on held keys, working custom cursors, and all 8 packaged themes (DarkPro, Bubblegum, Editor, Retro95, Forest Glade, Meadow, Neon, Hazard) ported to it. See https://docs.flatredball.com/gum

New Gum.SilkNet Runtime

SkiaGum Text Reaches Feature Parity

Text on the SkiaSharp/MAUI/WPF backend picks up the full feature set that MonoGame and raylib already had: inline BBCode styling (color, size, bold, italic, [Custom] per-letter callbacks), outline rendering, standalone drop shadows, Blend modes, ellipsis/vertical-overflow truncation, the MaxLettersToShow typewriter reveal, per-character position lookup, and pixel-snapped rendering. A texture-bleed fix also cleans up dark/muddy edges around anti-aliased text and sprites under Linear filtering. See https://docs.flatredball.com/gum/code/standard-visuals/textruntime

SkiaGum Text Reaches Feature Parity

Independent Per-Corner Rectangle Radius

Rectangles now support independent border radius per corner (top-left, top-right, bottom-left, bottom-right), with a link/unlink toggle in the Variables panel — unlinked, each corner can be styled separately instead of all four moving together. See https://docs.flatredball.com/gum

Independent Per-Corner Rectangle Radius

BBCode [State=Name] Text Styling Tag

Text now supports a [State=Name]...[/State] inline BBCode tag that applies a Gum state's color, font family/size/bold/italic/outline, and scale to just that run of text — including states defined inside a category — without needing a separate Text object per style. See https://docs.flatredball.com/gum/code/standard-visuals/textruntime/bbcode

BBCode State Styling Tag

Gum Tool

  • Standards color palette in the tree view is now on by default for new or unconfigured projects (previously opt-in); existing projects that had turned it off keep that choice. (#3536)
  • Fixed code generation using outdated behavior for projects that reference Gum runtimes via NuGet (Gum.MonoGame, Gum.KNI, Gum.FNA, Gum.SkiaSharp, Gum.raylib, Gum.sokol, Gum.SilkNet) — the tool couldn't recognize the package names and silently generated code for the oldest supported runtime version instead of your actual one. (#3614)
  • Fixed renaming a Screens/Components folder or element to change only its letter casing (e.g. GameMenuScreensgamemenuscreens) — this was previously blocked as "already exists" on Windows, or could silently discard the file's just-saved content. (#3696)
  • Fixed Circle instances with non-uniform Width/Height (e.g. an oval) getting collapsed to a square using the smaller dimension when copy/pasted. (#3766)
  • Fixed deleting multiple Components/Screens that had existing animation files sometimes resetting the "delete animation file" confirmation checkbox to unchecked partway through. (#3799)
  • Renaming a Component/Screen to the same name it already has no longer shows the "may break references" confirmation dialog. (#3801)
  • Fixed clicking the mouse Back/Forward (or Middle) button while hovering the tree view accidentally selecting whatever was under the cursor; added browser-style selection history navigation — mouse Back/Forward buttons and new Alt+Left/Alt+Right hotkeys step through previously selected elements/instances. (#3805)
  • Fixed mouse clicks near the edge of the editor's wireframe view (e.g. the window-resize splitter) not registering correctly, caused by a WPF interop workaround that had been silently broken since an earlier refactor. (#3831)
  • Fixed copying linked components silently failing on macOS/Linux due to a hardcoded Windows-style path separator. (#3882)
  • Fixed the Show References dialog sometimes showing stale or blank text when switching between elements. (#3948)
  • Fixed dragging a Component, Standard, or Instance from the tree view onto the wireframe canvas doing nothing — the cursor showed a valid drop, but no instance was created. (#3966)
  • Fixed a crash in shared file-path handling when resolving the parent directory of a single-character root path (e.g. /). (#3791)
  • Continued a large-scale internal refactor decoupling the tool's business logic from WPF/WinForms into a headless library, in preparation for a future cross-platform tool UI (the majority of this release's ~286 PRs) — no user-facing behavior change.

Gum Runtimes

  • New Gum.SilkNet runtime with real Forms input — see Biggest Changes. (#3606, #3654, #3655, #3656, #3658, #3659, #3736, #3741, #3744, #3745, #3749)
  • SkiaGum Text feature parity — see Biggest Changes. (#3680, #3683, #3686, #3687, #3688, #3693, #3699, #3700, #3702, #3710, #3713, #3715, #3734, #3739)
  • Independent per-corner rectangle border radius — see Biggest Changes. (#3618)
  • BBCode [State=Name] text styling tag — see Biggest Changes. (#3729)
  • Forms controls (buttons, checkboxes, sliders, etc.) get their default visuals and behaviors wired up on the SkiaSharp/MAUI backend for the first time; note that interactive input on that backend still depends on the host feeding mouse/keyboard events through to Gum, which Gum.SilkNet already does out of the box. (#3597, #3599, #3600, #3602, #3604)
  • Fixed Raylib: calling GumService.Uninitialize() left the default font in a stale state, which could cause problems if Gum was reinitialized afterward. (#3595)
  • Fixed a crash on startup when a project used Canvas, Svg, Lottie, or other extended shape standards. (#3601)
  • Reduced per-frame garbage-collector allocations from text layout/wrapping by ~85% for UIs with lots of single-line text. (#3538)
  • Binding.DefaultUpdateTriggers lets you set a project-wide default UpdateSourceTrigger per control type/property (e.g. make all TextBox.Text bindings update on LostFocus) instead of setting it on every individual SetBinding call. See https://docs.flatredball.com/gum/code/binding-viewmodels/advanced-binding-options#default-update-triggers (#3903)
  • Added embedding APIs for hosting Gum inside another app's own render loop and cameras (public GumService.Root setter, AttachManagersOnly, pluggable popup/modal roots that get the same automatic z-order and canvas-sizing handling as the defaults). (#3584, #3588)
  • Gamepad-focused ScrollViewer, ItemsControl, Menu, and ListBox controls can now be scrolled with the right analog stick, not just the D-pad — including in FlatRedBall (FRB) projects. (#3840, #3881)
  • Fixed several Raylib Text/Sprite/Container properties (Color, Alpha, alignment, BBCode tags, missing-source-file errors) silently doing nothing when set via states or data binding instead of direct code assignment. (#3628, #3632, #3633, #3643, #3644, #3724, #3725, #3726)
  • Fixed a cluster of inline BBCode run bugs: word-wrap and RelativeToChildren sizing ignoring [FontSize]/[FontScale] runs, locale-dependent tag parsing, dropshadows lost on font-swap runs, [Custom] reading the wrong position after a CRLF line, and a crash resolving fonts after a prior BBCode [IsBold] cache miss (thanks @kaltinril). (#3523, #3525, #3529, #3531, #3533, #3635, #3646, #3647)
  • Fixed a crash constructing legacy V1/V2 default-visual classes directly in apps that only initialize V3/Newest defaults; fixed a Slider crash with a custom Button template; fixed custom Button visuals not receiving click events; improved TextBox caret positioning performance on Raylib/Sokol. (#3547)
  • Fixed .achx sprite-sheet animations using the Pixel coordinate type rendering the whole texture instead of the correct frame on Raylib and Skia. (#3551)
  • Fixed Raylib Rectangle and Polygon elements loaded from a Gum project resolving to a generic visual instead of RectangleRuntime/PolygonRuntime, losing runtime-specific properties. (#3577)
  • Fixed RaylibGum's camera and window-fit sizing using DPI-scaled logical dimensions instead of physical pixels, so raylib HiDPI windows size/fit consistently with the other backends. (#3589)
  • Fixed ListBox popups overflowing off-container when shown inside a custom popup root instead of the default global canvas. (#3592)
  • Fixed a rare crash (KeyNotFoundException) in SkiaGum apps loading images, SVGs, fonts, or animations from multiple threads at once. (#3610)
  • Fixed localized text not being translated at runtime in SkiaGum-based apps (SkiaGum Standalone/WPF/MAUI, Gum.SilkNet). (#3622)
  • RaylibGum now targets raylib-cs 8.0.0 (raylib 6.0). (#3638)
  • Fixed the AdditionalPropertyOnRenderable extension hook being silently ignored on the Skia backend. (#3661)
  • Fixed custom shaders failing to load (silently disabling custom rendering) when a game was launched via a file association, since the shader lookup used the working directory instead of the app's own directory. (#3695)
  • Ported the "why isn't this click registering" cursor diagnostic (coordinate/zoom mismatches, hidden or disabled ancestors, etc.) to FlatRedBall (FRB1) projects, matching MonoGame. (#3697)
  • Fixed CustomFontFile silently falling back to the default font instead of loading a .ttf/.otf file on MonoGame/KNI/FNA and Skia; fixed relative CustomFontFile paths in code-only projects resolving against the wrong folder. (#3707)
  • Fixed render targets (IsRenderTarget) rendering darker/duller than expected in premultiplied-alpha pipelines such as FlatRedBall. (#3769)

Tutorials and Templates

  • Release builds now show a clear "element not found — did you forget to load a Gum project?" error instead of a confusing NullReferenceException when generated code can't find its element. (#3578)

Full Changelog: Release_July_06_2026...Release_July_22_2026