Skip to content

Releases: vchelaru/Gum

Hotfix January 31, 2026

31 Jan 14:58
8d4f02c

Choose a tag to compare

This release is a hot fix to address a bug causing slow project loading and subsequent errors on standard elements.

What's Changed

  • Fixed Window cursors not changing when resize mode is set to none by @vchelaru in #2059
  • 1974 non rectangular buttons not supported part2 by @vchelaru in #2061
  • Lots of refactoring by @vchelaru in #2062
  • Fixed combo box binding context resetting when list box opens/closes by @vchelaru in #2068
  • Refactor rendering library by @vchelaru in #2070
  • Fixed slow load time/errors by ignoring file changes on elements on i… by @vchelaru in #2073

Full Changelog: PreRelease_January_28_2026...PreRelease_January_31_2026

January 28, 2026

28 Jan 13:58
1ef6752

Choose a tag to compare

Breaking Changes

  • Replaced IRenderableIpso in GraphicalUiElement with GraphicalUiElement to reduce casting.
  • Moved SkiaGum to the Runtimes folder

For more information on breaking changes and new deprecated members, see the Migrating to January 2026 page: https://docs.flatredball.com/gum/gum-tool/upgrading/migrating-to-2026-january

Biggest Changes

Added new resolution dropdowns

These dropdowns can be used to test your project in common resolutions. These can also be customized by modifying the .gumx file.

28_07 12 33

Added new StackSpacing support on Grid containers

28_08 57 49

Added new Anchor Horizontal and Anchor Vertical

New Anchor Horizontal and Anchor Vertical added to the tool, plus also added at runtime (thanks @kaltinril )

image

Added support for NineSlice Border Scaling

NineSlices can now scale their borders instead of always drawing at 100%.

28_09 17 47

TextBox in raylib

Previous versions of raylib Gum did not support TextBox. This version introduces TextBox, matching functionality of MonoGame Gum.

28_07 18 11

Performance Improvements on NuGet package

All Gum NuGet packages are now built in release mode rather than debug, improving runtime performance. (thanks @kaltinril )

Gum Tool

  • Added new option to optimize font textures by recursively creating fonts at different sizes
  • Fixed broken rename folder functionality
  • Added generated code for animations (thanks @Yuan-Zzzz )
  • Component and Screen Name textbox no longer includes the folder name
  • Added Cut and Copy right-click menu items next to Paste (thanks @kaltinril )
  • Default text box no longer line-wraps placeholder text, and layout is now the same as TextBox (thanks @kaltinril )
  • Added Polygon XOrigin and YOrigin
  • Default polygon now starts at 0,0 and is 32x32 down and to the right
  • Point movement on polygons now rounded to avoid long floating point values
  • Renaming a component no longer creates an empty animation file
  • Fixed bugs when drag+dropping an instance from one component into another component
  • Fixed bug when drag+dropping instances onto another instance of the same name, but from different components
  • Reduced sensitivity of dragging
  • Fixed bug when grabbing+dragging a small object resulted in corners being grabbed
  • Fixed crash when renaming method due to missing codegen path
  • Multi-select no longer allows editing variables that are read-only in single selection, such as Locked in a state
  • Components now reload when changed on disk if they are in a subfolder
  • Fixed crash loading project which had file paths with "../" which went up above the drive root

Gum Runtimes

  • Improved shapes dropshadow rendering by upgrading to latest Apos.Shapes
  • Improved error reporting when using Shapes without initialization
  • Added support for GradientInnerRadius on shapes
  • Simplified initialization of ShapeRenderer to no longer require a Game instance
  • Fixed full-texture sprite scaling in raylib (thanks @profexorgeek )
  • Added rounding to improve text rendering in raylib (thanks @profexorgeek )
  • Unified syntax between XNA-like runtimes and raylib runtimes, making maintenance easier in the future
  • Added support for V3 visuals in raylib
  • Various XML documentation added including IVisible-related properties
  • Removed CustomEffectManager exception throwing (thanks @mfigueirido )
  • Custom tags on bbcode can now be set before the function is defined - order no longer matters
  • Fixed bug where GumBatch wasn't setting the camera to the viewport
  • Added TextRuntime.WrappedText to make it easier to access
  • Added check and exception if a visual is added as a child of itself
  • Added raylib Cursor extension methods including getting why events aren't being raised
  • Fixed ComboBox.DisplayMemberPath to not reflect the contained ListBox DisplayMemberPath
  • Fixed Cursor not properly respecting viewport on Desktop platforms
  • TextBox (V3) no longer line-wraps placeholder text by default
  • Ratio sizes now properly respect global font scales for siblings that use size multiplied by font size
  • Raylib now caches font, greatly improving performance
  • Controls no longer need to be added to managers to perform cursor activity - this makes it easier to use GumBatch with interactive elements
  • Fixed possible crash when creating a Text instance if there is no managers
  • Added WindowVisual.MakeSizedToChildren
  • InteractiveGue HasCursorOver is now virtual, opening the door for custom hit tests like polygons
  • Fixed crash when cleaing a ListBox after adding buttons - caused by mismatch between ListBoxItems and the InnerPanel Children count.
  • Fixed crash when pressing ENTER on an Android keyboard
  • Marked ListBox.ListBoxItemGumType and ListBox.ListBoxItemFormsType as obsolete
  • Children spillover now works the same on horizontal and vertical auto grids
  • AutoGridHorizontal and AutoGridVertical now distributes additional height to all cells
  • Fixed Skia text bolding when setting a TextRuntime's IsBold to true (thanks @yuechen-li-dev )
  • Added ContentLoader.XnaContentManager to FNA and KNI to match MonoGame
  • TextRuntime no longer crashes if it has missing Custom methods
  • Generated code now sorts and de-dupes using statements
  • Upgraded to Apos.Shapes 0.6.3, fixing a build error caused by missing shader XNB
  • Added new GetCharacterIndexAtPosition extension method
  • Fixed layout bugs when toggling visibility in a stack, or with children that have ratio sizes

Samples and Setup

  • Improvements in wine setup script for .NET 8 (thanks @kaltinril )
  • Fixed dotnet environment variable (thanks @kaltinril )
  • Upgraded all MonoGame samples from MonoGame 3.8.1.303 -> 3.8.4.1 (thanks @kaltinril )
  • Added new Hytale inventory samples (thanks @kaltinril )

New Contributors

Full Changelog: Release_December_28_2025...PreRelease_January_28_2026

Release December 28, 2025

28 Dec 19:59
a113093

Choose a tag to compare

Breaking Changes

GraphicalUiElement Children is a collection of GraphicalUiElements

Previously, GraphicalUiElement.Children was a collection of IRenderableIpso instances. This required lots of casting and made it confusing to work with.

This version of Gum changes that type to a collection of GraphicalUiElements.

All "GetBy" methods have also been converted to return GraphicalUiElement instances.

For more information see https://docs.flatredball.com/gum/gum-tool/upgrading/migrating-to-2025-december#breaking-changed-graphicaluielement-children-type

Biggest Changes

Colored Category Headers

All categories are now color-coded, and each color is consistent across all object types. The colors are also in a rainbow pattern, making it easier to find categories and build muscle memory.
image

Significant Performance Improvements

This version of Gum makes the tree view far more responsive than before. It also improves the variable grid refresh speed. Quickly switching between selected instances is way faster than before. (thanks @vicdotexe _

28_13 28 00

First Release of Apos.Shapes Support

New NuGet packages for Apos.Shapes support in MonoGame and KNI, unifying the syntax and feature set with SkiaSharp runtimes.

28_14 07 35

Raylib Text Rendering

Raylib text rendering has been overhauled this version, unifying the text rendering system between MonoGame and raylib. These changes include:

  • Full support for .fnt files on TextRuntimes
  • Pixel-perfect positioning (thanks @profexorgeek )
  • Line wrapping support
  • Added support for assigning FontScale
15_08 54 38

Gum Tool

  • Removed confusing popup about bad file watch paths
  • Added more informative error when a .png cannot be loaded
  • Increased max PNG size from 4096x4096 -> 8192x8192
  • When a component is selected, its children still have priority in the editor tab. This makes component editing much easier
  • Added ability to reorder instances in behaviors
  • Errors are now reported in the Errors tab for invalid variables
  • Fixed constantly swapping XSD/XSI xml sections
  • Fixed bug where scaling animation lengths would introduce decimal value inaccuracy
  • Fixed bug where fonts would not get re-created when assigning font values on categorized states (non-default)
  • Localization CSV is now cleared when creating a new project
  • Localization now ignores symbols when determining if a text should be localized.
  • Animations that reference invalid states now display errors in the Error tab
  • Referencing bad .achx no longer throws exceptions or shows error messages - behaves the same as a bad .png reference
  • Fixed bug where right and bottom dock/anchor would assign a value of -0
  • Huge redo of how copy/paste works, making pasting work more predictably
  • Fixed incorrect corner radius on ColoredRectangle
  • Added support for NineSlice sizing using aspect ratio and source file units
  • Added +/- buttons for zooming Editor tab
  • Fixed exposing already-exposed variables generating the wrong code.
  • Fixed wrong UI when setting a Text's UseCustomFonts in a categorized state on the standard element itself
  • Undo/Redo add/remove of instances on base component now properly adds/removes instances on derived component

Gum Runtimes

  • Implemented clipboard (copy/paste) support for Kni.BlazorGL (thanks @squarebananas )
  • Simplified the creation of animations at runtime, no longer requiring an ElementSave instance
  • Fixed infinite stroke width value bug in Skia renderer
  • Cursor WindowPushed, WindowOver, and VisualRightPushed are now nullable
  • GraphicalUiElement.Children now returns a GraphicalUiElement collection
  • GraphicalUiElement.GetChildByName, GetParentByNameRecursively, GetParentByName, GetParentByTypeRecursively, GetParentByType all return GraphicalUiElements instead of IRenderableIpsos
  • Added GumService.IsInitialized
  • Marked SkiaGum Text ScreenDensity as obsolete, in favor of using Text.GlobalTextScal
  • SkiaGum now throws an exception if ScreenDensity is assigned to 0
  • Added more informative error on failed bindings
  • Fixed bug where the wrong items would get removed from a ListBox when removing from the Items collection.
  • Added ScreenBase as a base class for all Screens
  • Added support for FileManager.CustomGetStreamFromFile on non-mobile/web platforms so that custom content loading can be used
  • Added new Cursor.VisualPushed, FrameworkElementPushed, FrameworkElementRightPushed, VisualOver, and FrameworkElementOver. Marked the "Window" properties as obsolete.
  • Added GumService.UseGamepadDefaults
  • Added GumService.DeferredActionQueue - unifying with MonoGamegum
  • Added Textruntime.OverlapDirection (MonoGame/KNI/FNA only)

Samples and Setup

Full Changelog: Release_November_30_2025...Release_December_28_2025

Release November 30, 2025

30 Nov 17:06

Choose a tag to compare

⚠️ Linux Users and .NET 8

This version of Gum upgrades to .NET 8 which has caused problems with users who installed previous versions using the install script. We now recommend installing using Bottles. For more information, see the setup page: https://docs.flatredball.com/gum/gum-tool/setup

Breaking Changes

  • Moved <Gum Root>\SkiaGum.Wpf\SkiaGum.Wpf.csproj to <Gum Root>\Runtimes\SkiaGum.Wpf\SkiaGum.Wpf.csproj

For more information and upgrading instructions, see https://docs.flatredball.com/gum/gum-tool/upgrading/migrating-to-2025-november

Biggest Changes

V3 Visuals

V3 visuals are a new set of visuals that greatly simplify styling. All controls now provide color properties which can be assigned and used along with the built-in states. (thanks @kaltinril )

To make a simple button have a red background, the following code was previously required:

using Gum.Forms.DefaultVisuals;

protected override void Initialize()
{
    GumUI.Initialize(this, Gum.Forms.DefaultVisualsVersion.V2);
    var button = new Button();
    button.AddToRoot();

    var buttonVisual = (ButtonVisual)button.Visual;
    buttonVisual.ButtonCategory.ResetAllStates();

    buttonVisual.States.Enabled.Apply = () => 
        buttonVisual.Background.Color = Color.Red;
    buttonVisual.States.Disabled.Apply = () => 
        buttonVisual.Background.Color = Color.Gray;
    buttonVisual.States.Highlighted.Apply = () => 
        buttonVisual.Background.Color = new Color(255, 55, 55);
    buttonVisual.States.Pushed.Apply = () => 
        buttonVisual.Background.Color = new Color(200, 0, 0);
    button.UpdateState();

    base.Initialize();
}

Now, setting states is much simpler since it no longer requires changing states. A simple button could be made red using the following code:

using Gum.Forms.DefaultVisuals.V3;

protected override void Initialize()
{
    GumUI.Initialize(this, Gum.Forms.DefaultVisualsVersion.V3);

    var button = new Button();
    button.AddToRoot();

    var buttonVisual = (ButtonVisual)button.Visual;
    buttonVisual.BackgroundColor = Color.Red;
    button.UpdateState();

    base.Initialize();
}

27_12 48 55

All of the styling docs have been re-written to use V3. For more information see the styling page here: https://docs.flatredball.com/gum/~/changes/738/code/styling/code-only-styling

Documentation Reorganization

Along with the November release comes a reorganization of the CODE section of the Gum docs. This reorganization brings the most common-asked questions to the top level. A new About and Getting Started section provide immediate information for new users to get started with Gum more quickly. New sections have been added to cover layout concepts, events and interactivity (including diagnosing problems), and styling.

image

Animation Improvements

Gum's animation system has been improved top-to-bottom.

  • Each category now creates its own tracks, making it easier to see how keyframes interpolate (thanks @vicdotexe )
image
  • Tracks display their interpolation type so you can see animation curves at a glance (thanks @vicdotexe )
30_09 40 06
  • Animation column now indicates the name of the object being edited
image
  • Reduced IO noise when working with animations in the tool, improving performance and reducing file change reactions in tools like FlatRedBall.
  • Improved animation playback performance so they play more smoothly
  • Fixed a variety of runtime errors which were causing variables to interpolate incorrectly
  • Removed unnecessary KeyframeRuntime CachedCumulativeState, simplifying the code needed to create animations in code

Gum Tool

  • Gum tool has been upgraded from .NET 4.7 => .NET 8 greatly improving performance
  • Errors are now displayed for variables which are leftover from type changes or renames that didn't propagate
  • Duplicate entries in localization CSV no longer causes crash
  • Fixed radio button alignment issue on popups (thanks @vicdotexe )
  • Fixed bug preventing the renaming of new screens added to folders (thanks @kaltinril )
  • Texture Coordinate tab now remembers snapping values
  • Fixed a variety of issues around the border of the Gum tool when in full screen on multiple monitors (thanks @vicdotexe and @kaltinril )
  • Fixed bug with object being shifted incorrectly when changing the height on a rotated object
  • Fixed bug when moving object in Editor tab when it uses percentage X Units or Y Units
  • Fixed crash when changing an instance's BaseType
  • Fixed a variety of drag+drop bugs in the TreeView (thanks @vicdotexe )
  • Fixed incorrect underline of object name when deleting an instance (thanks @vicdotexe )
  • Added minimum size for panels, preventing panels from collapsing to 0 width
  • Fixed menus and tooltip zooming (thanks @kaltinril )
  • Localization CSVs are now properly re-loaded when they are exported from LibreOffice
  • Fixed bug where TreeView would get clicked when clicking on a search result (thanks @vicdotexe )
  • Error tab now tells you if any instance has an invalid base type
  • Fixed crash when states cause infinite recursion
  • Fixed bug where tool theme may not get initially set before popups appear (thanks @vicdotexe )
  • Added support for copying states from one category (and element) to another
  • Pressing DELETE now allows deleting multiple behaviors at once
  • Pressing DELETE now deletes selected folder (or attempts to)
  • Loading invalid file type no longer says "for texture" since files can be loaded for many types
  • Improved file watch to no longer watch a single root folder, improving performance and reducing file change noise
  • Added right-click option to reset states to default
  • Fixed treating "-0" as a distinct value compared to "0"
  • Removed some warnings when generating TextBox generated code by using override
  • Nudging now only saves the file after the nudging has been complete, fixing IO spam
  • Nudging now records undos, and groups the undos until the key is released
  • Gum now saves all XML files with xsd namespace followed by xsi namespace, addressing unnecessary version history when values get swapped
  • New Gum Forms projects no longer include forms controls with lots of invalid variables
  • Fixed localized bbcode not displaying correctly
  • Exposed variables now appear in the category of their base variable rather than in an Exposed section
  • Categories now always sort the same way, making it easier to find them

Gum Runtimes

  • Fixed render target rendering when rendering one layer at a time (like in FlatRedBall)
  • Added new Cursor.GetEventFailureReason which greatly simplifies debugging broken events
  • Fixed arc width rendering, and unified stroke width on all Skia Runtimes
  • Fixed possible crash when using a font scale of 0
  • Fixed incorrect Sprite size when using entire texture and setting texture coordinate width or height to 0
  • Fixed bug where custom ListBoxItems wouldn't have their UpdateTo method called
  • Fixed raylib rotated sprite rendering, causing scrollbars from tool rendering incorrectly
  • Fixed raylib broken NineSlice rendering
  • Fixed raylib not caching loaded textures, improving reuse of texture speed when loading .gumx
  • Updated to KNI 4.2 (thanks @squarebananas )
  • Fixed MenuItem from-file rendering at the incorrect size
  • Fixed bbcode rendering when text includes \r character
  • Added Unit properties to FrameworkElement
  • Fixed bug when wrapping children in a stack when the stack is sized by its children but has a Max Height or Max Width
  • Calling Children.Clear now properly sets the childrens' Parent to null
  • Changing ItemsControl FrameworkElement now re-creates all children
  • Removed plugins into "Gum" folder, cleaning up top-level items
  • Removed unnecessary keyboard diagnostic output
  • BBCode now supported in localized text
  • Fixed line grid using absolute rather than screen pixel width

Samples and Setup

  • Fixed bug in inventory sample where grabbed item would show up when grabbing an empty slot
  • Updated Linux/Mac setup to use the new locations of Gum (thanks @kaltinril )

Full Changelog: PreRelease_October_25_2025...Release_November_30_2025

Release October 31, 2025

31 Oct 11:37
b671825

Choose a tag to compare

Release October 31, 2025

Breaking Changes

  • Animations with bool values now assign the value when the interpolation from one keyframe to another finishes rather than when it starts.
  • Using MonoGameGum.Forms namespace now produces errors rather than warnings. The new Gum.Forms namespace should be used instead.
  • raylib NineSlice.Texture is now nullable
  • raylib Sprite.Texture is now nullable

For more detail and information on upgrading, see the migration document: https://docs.flatredball.com/gum/gum-tool/upgrading/migrating-to-2025-october

Biggest Changes

The entire Gum tool UI has been redone to improve appearance, usability, performance. ❤️ ❤️ HUGE thanks ❤️ ❤️ to @vicdotexe for his work over the past few months getting this all together. This is the biggest release we've ever had to the Gum tool and it would have never happened without his help!

  • Light/Dark mode support
image image
  • Changing primary theme color
image
  • Modernized icons in Project, States, and Variable tabs
image
  • New edited icon displays non-default variables rather than a green background
image
  • Tree view reordering is now supported through drag drop. Drag+move no longer flickers and clearly shows the target of the drop

25_09 21 42

  • Gum icon is now shown in the task bar
image
  • Reduced space used in the menu strip, combining project name, menu strip, icon, and buttons at the top-right
image
  • General Animation Tab cleanup
image
  • Alignment tab icons updated and general layout improvements
image
  • Output tab clear button
image
  • Texture Coordinate tab improvements:
    • View now centers on selected region rather than displaying it in the top-left (thanks @kaltinril )
    • Double-click now creates a region matching the grid size if grid is enabled
    • Added CTRL+arrow panning and CTRL +/- zooming support
    • Added scroll bars
    • Added zoom UI controls (drop down and +/- button)
    • Scrolling with middle mouse button now prevents scrolling too far beyond the bounds of the texture
    • Snapping-related properties are now preserved between sessions per-project
25_08 16 01

This version also includes runtime improvements for MonoGame and Raylib

  • SpriteRuntime can now draw render targets that are created from other ContainerRuntimes. This allows entire components to be scaled, rotated, positioned, and sized using the full Gum layout engine for useful effects such as fading and scaling components.
    25_08 06 33

  • Raylib now supports from-file (.gumx) file loading, including projects with Gum Forms components

Gum Tool

  • Recent files now shows associated .csproj files to differentiate between same-named projects
  • Pasting instances now immediately sorts variables in the .xml file, reducing churn in the files
  • Removed "Make Default" right click menu item in Project Properties tab
  • Linux setup script now checks for Wine 10 or newer
  • Fixed possible crash when exposing variables
  • Text using WidthUnits of RelativeToChildren and a MaxWidth now properly wraps text
  • File UI now disables its View in Explorer button if no value is set
  • Added tooltip to View in Explorer button
  • Fixed bug with nested BBCode color tags
  • Fixed possible crash in animation tab on new projects (thanks @kaltinril )
  • Undo/Redo menu items are now disabled if there is no history ahead/behind current position (thanks @kaltinril )
  • Clicking on ARGB slider immediately goes to the value instead of adding 1 (thanks @kaltinril )
  • Removed noisy errors about fonts that weren't real errors
  • Localization CSV no longer causes exceptions if duplicate entries exist in the CSV - the first entry with a given name is used
  • Fixed error preventing the renaming of newly-created Screens in folders (thanks @kaltinril )
  • Reduced unnecessary saving of animation (.ganx file) when selecting new animations
  • Fixed drag+move objects not staying with the cursor when using percentage-based XUnits or YUnits
  • Fixed crash when changing instance type in a behavior
  • Fixed arc angle UI showing only text box instead of angle selector
  • Gradient values for Skia objects now shows ARGB values as sliders

Gum Runtimes

  • Fixed broken MinAlpha blend mode
  • Fixed situation where cumulative states would not get set properly, resulting in animations not playing as they should
  • Added GumService (GumUI) UseKeyboardDefaults method (thanks @kaltinril )
  • Added batch rendering support, enabling the addition of virtually any MonoGame rendering system inside Gum
  • Moved diagnostic errors from DEBUG to FULL_DIAGNOSTICS as a step towards releasing NuGet packages in release mode (thanks @kaltinril )
  • Added new RenderableBase class which can be used for custom rendering
  • Added support for Apos.Shapes through a new library. There is no NuGet for this yet, must be used in source.
  • Tabbing on buttons within a stack no longer loses focus if it's the only button
  • Fixed bug where Slider state wouldn't get set correctly if it has focus and a previous control received keyboard input
  • Fixed SVG loading in fully-generated Skia projects, including new documentation
  • Skia ColoredCircle runtime now matches default in tool
  • Fixed re-initialization of entire gum system when creating multiple SKCanvasViews in Maui
  • Fixed bug in Text wrapping when scaling by float values
  • Made progress towards moving Gum from .NET 4.7 -> .NET 8 by multi-targeting
  • Fixed layer-by-layer rendering with render targets, fixing libraries like FlatRedBall render targets
  • Fixed bug when changing the height on rotated objects not properly adjusting its position
  • Added Cursor.GetEventFailureReason extension method

Samples and Setup

  • Fixed Gum samples to no longer use MonoGameGum.Forms.

Full Changelog: Hotfix_October_3_2025...PreRelease_October_31_2025

PreRelease October 25, 2025

25 Oct 16:45
cab0aa2

Choose a tag to compare

Pre-release

Release October 25, 2025

Breaking Changes

  • Animations with bool values now assign the value when the interpolation from one keyframe to another finishes rather than when it starts.
  • Using MonoGameGum.Forms namespace now produces errors rather than warnings. The new Gum.Forms namespace should be used instead.
  • raylib NineSlice.Texture is now nullable
  • raylib Sprite.Texture is now nullable

Biggest Changes

The entire Gum tool UI has been redone to improve appearance, usability, performance. ❤️ ❤️ HUGE thanks ❤️ ❤️ to @vicdotexe for his work over the past few months getting this all together. This is the biggest release we've ever had to the Gum tool and it would have never happened without his help!

  • Light/Dark mode support
image image
  • Changing primary theme color
image
  • Modernized icons in Project, States, and Variable tabs
image
  • New edited icon displays non-default variables rather than a green background
image
  • Tree view reordering is now supported through drag drop. Drag+move no longer flickers and clearly shows the target of the drop

25_09 21 42

  • Gum icon is now shown in the task bar
image
  • Reduced space used in the menu strip, combining project name, menu strip, icon, and buttons at the top-right
image
  • General Animation Tab cleanup
image
  • Alignment tab icons updated and general layout improvements
image
  • Output tab clear button
image
  • Texture Coordinate tab improvements:
    • View now centers on selected region rather than displaying it in the top-left (thanks @kaltinril )
    • Double-click now creates a region matching the grid size if grid is enabled
    • Added CTRL+arrow panning and CTRL +/- zooming support
    • Added scroll bars
    • Added zoom UI controls (drop down and +/- button)
    • Scrolling with middle mouse button now prevents scrolling too far beyond the bounds of the texture
25_08 16 01

This version also includes runtime improvements for MonoGame and Raylib

  • SpriteRuntime can now draw render targets that are created from other ContainerRuntimes. This allows entire components to be scaled, rotated, positioned, and sized using the full Gum layout engine for useful effects such as fading and scaling components.
    25_08 06 33

  • Raylib now supports from-file (.gumx) file loading, including projects with Gum Forms components

Gum Tool

  • Recent files now shows associated .csproj files to differentiate between same-named projects
  • Pasting instances now immediately sorts variables in the .xml file, reducing churn in the files
  • Removed "Make Default" right click menu item in Project Properties tab
  • Linux setup script now checks for Wine 10 or newer
  • Fixed possible crash when exposing variables
  • Text using WidthUnits of RelativeToChildren and a MaxWidth now properly wraps text
  • File UI now disables its View in Explorer button if no value is set
  • Added tooltip to View in Explorer button
  • Fixed bug with nested BBCode color tags
  • Fixed possible crash in animation tab on new projects (thanks @kaltinril )
  • Undo/Redo menu items are now disabled if there is no history ahead/behind current position (thanks @kaltinril )
  • Clicking on ARGB slider immediately goes to the value instead of adding 1 (thanks @kaltinril )
  • Removed noisy errors about fonts that weren't real errors

Gum Runtimes

  • Fixed broken MinAlpha blend mode
  • Fixed situation where cumulative states would not get set properly, resulting in animations not playing as they should
  • Added GumService (GumUI) UseKeyboardDefaults method (thanks @kaltinril )
  • Added batch rendering support, enabling the addition of virtually any MonoGame rendering system inside Gum
  • Moved diagnostic errors from DEBUG to FULL_DIAGNOSTICS as a step towards releasing NuGet packages in release mode (thanks @kaltinril )
  • Added new RenderableBase class which can be used for custom rendering
  • Added support for Apos.Shapes through a new library. There is no NuGet for this yet, must be used in source.
  • Tabbing on buttons within a stack no longer loses focus if it's the only button
  • Fixed bug where Slider state wouldn't get set correctly if it has focus and a previous control received keyboard input
  • Fixed SVG loading in fully-generated Skia projects, including new documentation
  • Skia ColoredCircle runtime now matches default in tool
  • Fixed re-initialization of entire gum system when creating multiple SKCanvasViews in Maui
  • Fixed bug in Text wrapping when scaling by float values
  • Made progress towards moving Gum from .NET 4.7 -> .NET 8 by multi-targeting

Samples and Setup

  • Fixed Gum samples to no longer use MonoGameGum.Forms.

Full Changelog: Hotfix_October_3_2025...Test_October_25_2025-2

Hotfix October 3, 2025

27 Sep 10:34
4c8e3c3

Choose a tag to compare

This hotfix version fixes a bug where Gum could crash when trying to find a common root folder for file watches.

What's Changed

New Contributors

Full Changelog: Release_September_27_2025...Hotfix_October_3_2025

PreRelease September 14, 2025

12 Sep 12:25

Choose a tag to compare

Pre-release

This pre-release is mainly focused on bug fixes.

What's Changed

Full Changelog: Release_August_28_2025...PreRelease_September_14_2025

Release August 31, 2025

27 Aug 14:45
496af92

Choose a tag to compare

Update August 31, 2025

This is a hotfix over the August 28 2025 version which fixes bmfont.exe being blocked.

Breaking Changes

MonoGame Gum has been upgraded from .NET 6 to .NET 8.

Most projects will not be affected by this, but if your game targets .NET 6 and you want to upgrade to the latest NuGet packages, you need to upgrade your project to .NET 8 or newer.

Removal of MonoGameGum.Forms Namespace

The latest NuGet packages remove the MonoGameGum.Forms namespace. To make the transition easier, many of the controls and common types have been left with an obsolete tag. Projects are encouraged to replace any usage of MonoGameGum.Forms with Gum.Forms since the first namespace will be removed in the coming months. Also, some types, such as V2 visuals, have been fully migrated so your project may be required to migrate over.

TextRuntime Now Uses XNA BlendState Rather Than Gum BlendState

This makes TextRuntime match other runtime syntax

SliderVisual.NineSliceInstance is now called TrackBackground

Renamed this property so its usage is clearer.

For more information on the breaking changes and more detailed instructions on migration, see the migrating page: https://docs.flatredball.com/gum/gum-tool/upgrading/migrating-to-2025-august

Biggest Changes

This version of Gum greatly improves support for different languages, especially languages with large character sets like Chinese. The following features have been added:

  • Added support for mid-word line wrapping if a word is longer than the width of a Text instance
  • Added support for new character file which can be used to automatically set character sets
  • Fixed bitmap font configuration file (bmfc) is now properly generated for character sets with a large number of groups
  • Added support for referencing fonts with no-ascii file names (such as fonts with names that have Chinese characters)
  • Improved Gum's ability to generate fonts in a single .png when using font outlines
Release1 Release2

Gum Tool

  • Drag+drop multiple items to new parent now moves all items instead of only the first (thanks @kaltinril )
  • Continued refactor to eliminate singletons, move items to service locator pattern, and break up large service objects into individual types (thanks @vicdotexe )
  • Added using statement in codegen for LINQ to fix compile errors
  • Fixed codegen being broken for new Label which inherits from Text rather than containing a Text
  • Default Window now has properly sized Window InnerPanel
  • Fixed a variety of codegen bugs (thanks @Pituivan )
    • Added global:: prefix to avoid namespace conflicts
    • Added support for generating items with C# keyword names like class
    • Fixed codegen bugs on items that begin with numbers
    • Treat spaces as underscores
    • Missing instance base types no longer generate code that won't compile
  • Improved fixing instance variable types on Gum project load
  • Added support for specifying a character file to control which characters are generated (thanks @Yuan-Zzzz )
  • Improved code generation speed by using object cache
  • Expose/Unexpose is now properly listed in undo history (thanks @Pituivan )
  • Text now line wraps at word when width is small rather than extending beyond the boundaries
  • Fixed texture looping with negative texture coordinates (thanks @Yuan-Zzzz )
  • Variables tab text boxes now lose focus when the entire app loses focus
  • Instance base type is now displayed in variables even if the instance type is not found, allowing users to change it
  • Changing the source file to a .achx file no longer sets AnimationFrame variables
  • Last project is no longer reloaded over and over if it doesn't exist on disk every time Gum is opened
  • Fixed IsRenderTarget on Components (thanks @Yuan-Zzzz )
  • Fixed Label Text exposed variable codegen error
  • Fixed encoding problem when font file name contains non-ascii characters (thanks @Yuan-Zzzz )
  • Improved single-page rendering of PNGs when text has outlines
  • Fixed crash moving state to new category
  • Fixed bug where deleting component while instance is selected through menu strip now properly deselects the component
  • Undoing a paste of multiple items now only adds a single undo
  • Added a scroll viewer to dialogs to handle large content and sets a maximum height based on the main window's height, preventing dialogs from exceeding the screen boundaries. (thanks @vicdotexe )

Gum Runtimes

  • Removal of MonoGameGum.Forms namespace (see breaking changes above)
  • TextBoxVisual (V2) now properly places placeholder text (thanks @kaltinril )
  • Button Visual (V2) now uses the styling White color (thanks @kaltinril )
  • Label Visual (V2) now uses the styling White color (thanks @kaltinril )
  • Sliders now properly update their state when losing a push on touch screens such as on iOS.
  • Removing an item from any root now unsets its focus so that removed screens no longer receive input
  • Fixed crash when trying to create a Label by passing a TextRuntime
  • Added InteractiveGue.RightClick event
  • ListBox can now be disabled and will update its state visually
  • MenuItem can now show a subitem with a ScrollViewerTemplate
  • Added support for re-assigning the ListBox on a ComboBox Visual (V2)
  • MenuVisual V2 now has a min height of 5 pixels
  • Fixed bug where combo boxes might not properly close if the game window is zoomed
  • Fixed SpriteRuntime.SourceRectangle not working correctly
  • Added support to set Texture on NineSlice styling (thanks @kaltinril )
  • ItemsControl Items is now instantiated before Visual is assigned, allowing constructors to access this property immediately.
  • Experimental - added pygame support
  • Removed implicit usings to avoid common syntax errors with FRB
  • Default Gum blend states now properly set blend factor and write channels so that they can be cloned and reused.
  • Fixed ItemsControl not respecting VisualTemplate and FrameworkTemplate
  • Added ItemsControlVisual to make casting more predictable
  • Added new code generation test projects to reduce chances of future regressions (thanks @Pituivan )
  • Added ItemsControl Orientation property

Samples and Setup

  • Linux steps have been improved to include better diagnostics, detecting of existing packages and installs, and removed XNA setup (thanks @bozau )

New Contributors

Full Changelog: Release_July_28_2025...Release_August_28_2025

PreRelease_August_17_2025

17 Aug 12:52

Choose a tag to compare

Pre-release

This release is a pre-release focused primarily on improving code generation.

What's Changed

New Contributors

Full Changelog: Release_July_28_2025...PreRelease_August_17_2025