Skip to content

Release September 2, 2026

Latest

Choose a tag to compare

@github-actions github-actions released this 02 Sep 09:14
· 5 commits to main since this release

Gum Release — September 2, 2026

Breaking Changes

  • V1 and V2 default Forms visuals removed, replaced by V3. (#4450)
  • GumService moved from file-linked source into Gum.SkiaSharp. (#4454, #4459)

See the upgrade guide for who's affected and how to fix it: https://docs.flatredball.com/gum/gum-tool/upgrading/migrating-to-2026-september

Biggest Changes

Six Built-In Forms Themes, Selectable Right From New Project

Dark Pro, Forest Glade, and others join Gum's built-in Forms themes. New Project now lets you pick a theme up front, same as Add Forms. (#4402, #4413, #4420, #4412, #4568, #4534, #4407)

1_Themes

Hardware-Accelerated SVG Rendering for MonoGame and KNI

SVG elements now render on MonoGame and KNI via a new Apos.Shapes-backed SvgRuntime. Previously they drew nothing at runtime. (#4507, #4526)

2_SVGs

Better, Faster Text Rendering

Fonts can now grow their glyph atlas automatically instead of showing missing-glyph placeholders, opt-in on MonoGame/KNI/FNA and RaylibGum. Raylib also gains font oversampling parity with MonoGame/KNI, and SpriteBatch can group draws by texture to cut draw calls. (#4547, #4557, #4561, #4366, #4543)

3_DynamicFonts

ColorPicker Joins the Add Forms Component Set

A new ColorPicker control is available in Add Forms, in all six built-in themes. (#4538)

4_ColorPicker

Gum Tool

  • New Project now lets you pick a Forms theme up front, sharing the same picker as Add Forms. (#4534)
  • New projects start with a screen and Forms controls already added by default. (#4407)
  • Canceling the New Project dialog no longer forces the save-location prompt afterward. (#4407)
  • Renaming an element over an existing code file now sends it to the Recycle Bin instead of deleting it. (#4427)
  • Deleting an element now sends its XML file to the Recycle Bin instead of deleting it. (#4427)
  • An element's .codsj code-settings file now moves with it on rename. (#4427)
  • Deleting an element only prompts about custom code files that have actually been edited. (#4428)
  • Gum now flags code files orphaned by a deleted, renamed, or moved element in the Errors tab. (#4429)
  • Added gumcli codegen --prune to remove orphaned generated code files. (#4429)
  • The orphaned-code-file scan no longer walks bin/obj build output. (#4434)
  • Fixed custom code files keeping a stale namespace after moving an element between folders. (#4423)
  • Fixed a tree view crash refreshing a reparented node. (#4423)
  • Fixed the delete dialog's checkbox label getting clipped when its text was long. (#4432)
  • ColorPicker joins the Add Forms component set. See Biggest Changes. (#4538)
  • Added an Expander control to the Add Forms component set. (#4554)
  • The Errors tab now flags a missing Sprite, SVG, Lottie, animation-chain, or font SourceFile with a new GUM0006 warning. (#4494)
  • Fixed Maintain File Aspect Ratio Height not working for SVG instances. (#4513)
  • Added Snap to Grid for the main editor canvas. (#4381)
  • Grid-snap resizing now snaps the actual dragged edge in world space instead of rounding Width/Height locally. (#4384)
  • Resizing past an object's opposite edge now flips the anchored edge instead of allowing negative Width/Height. (#4391)
  • Fixed resize position drifting on rotated objects during a multi-tick drag. (#4391)
  • Resize From Center no longer sticks at zero size when shrinking past the center point. (#4392)
  • Fixed a crash resizing objects using Ratio, ScreenPixel, or RelativeToMaxParentOrChildren units. (#4396)
  • Fixed drag-resize snapping to extreme sizes for Ratio-based or Maintain File Aspect Ratio sizing. (#4396)
  • Fixed resizing with the Absolute Multiplied By Font Scale unit scaling too fast. (#4396)
  • Copy/paste now works on a whole variable category at once from the Variables tab (thanks @kaltinril). (#4456)
  • Fixed an unthemed white context menu popping up in Variables-tab text fields. (#4458)
  • State/Category tree gained "+" buttons for adding categories and states directly. (#4379)
  • Add State and Add Category menu items now show matching icons. (#4383)
  • The Alignment tab now shows the same "Editing state X" indicator bar as the Variables tab. (#4374)
  • Fixed a spurious rectangle-select marquee after dragging a panel scrollbar or divider. (#4551)
  • Fixed a crash deleting instances left broken after their component definition was deleted. (#4369)
  • Fixed Container instances rendering with no outline when Show Outlines is enabled. (#4388)
  • Fixed a crash adding a child object of a standard type not seeded into the project. (#4500)
  • Fixed a crash opening a project with an unnamed element or instance reference. (#4520)
  • Fixed Apos.Shapes shapes showing placeholder colors in gumcli screenshot output. (#4409)
  • Fixed error-indicator refresh scaling quadratically, slowing the tool on larger projects. (#4496)
  • The Gum main window now enforces a minimum size and repairs broken saved window geometry. (#4363)
  • Overflowing numeric input now clamps to the field's min/max instead of becoming Infinity. (#4487)
  • Double-clicking a numeric value now selects the whole value. (#4483)
  • Added gumcli import-screen for headless HTML-import testing. (#4532)
  • gumcli pack/check now detects a .ttf referenced via Font, not just CustomFontFile. (#4511)
  • Plugin assembly load failures are now reported in the Output tab (thanks @profexorgeek). (#4475)
  • Fixed the animation-chain dropdown showing stale names after a file changed on disk. (#4486)
  • Fixed property-change events always reporting the old value as null. (#4389)
  • Fixed undersized focus rings and a missing Window border in the Bubblegum theme. (#4426)
  • Fixed themed checkbox labels throughout the tool failing to wrap. (#4436)
  • Fixed the Slider thumb overhanging its track at minimum/maximum values. (#4498)
  • HtmlToGum: web font selection now prefers fonts that cover Latin characters (thanks @devinguthrie). (#4357)
  • HtmlToGum: form buttons and inputs now convert with their real label/value text. (#4357)
  • HtmlToGum: background-size:auto images now position and scale correctly. (#4357)
  • HtmlToGum: multi-line <pre>/<code> blocks now preserve line breaks and whitespace. (#4357)
  • HtmlToGum: nested cookie-consent banners are now excluded from conversion. (#4357)
  • HtmlToGum: large downscaled images now match the browser's scaled appearance. (#4357)
  • HtmlToGum: improved accuracy for SVGs, CSS masks, and dropdown menus. (#4357)
  • Gum now supports .achj, FlatRedBall2 Animation Editor's JSON animation-chain format. (#4480)
  • You can now drag an .achx/.achj file onto the wireframe editor to create a new Sprite. (#4480)
  • Fixed dragging a file onto the editor producing a lowercased instance name. (#4480)
  • Fixed a crash dropping a file onto certain tree view spots. (#4480)
  • Fixed several places where Gum silently lowercased file paths on case-sensitive filesystems. (#4482)
  • Added the Dark Pro theme to Add Forms. See Biggest Changes. (#4402)
  • Added the ForestGlade theme to Add Forms. See Biggest Changes. (#4413)
  • Added the Neon theme to Add Forms. See Biggest Changes. (#4420)
  • Added the Retro95 theme to Add Forms. See Biggest Changes. (#4412)
  • Added the Meadow theme to Add Forms. See Biggest Changes. (#4568)
  • Added an "un-theme" option to the MonoGameGumThemesShowcase sample. (#4562)
  • Fixed missing checkmark/arrow icon glyphs in the DarkPro, Bubblegum, Hazard, Neon, and Retro95 themes. (#4437)
  • Fixed a missing icon sprite sheet reference in the Bubblegum, DarkPro, and Hazard themes. (#4555)
  • Fixed invisible glyph icons in the Bubblegum, DarkPro, and ForestGlade themes. (#4556)
  • Fixed new projects sometimes skipping the files for their standard shapes on first save. (#4412)

Gum Runtimes

  • GumService for WPF/MAUI/standalone Skia is now compiled into Gum.SkiaSharp instead of file-linked. See Breaking Changes. (#4454)
  • Silk.NET's GumService is rebuilt on the shared GumServiceSkiaBase. See Breaking Changes. (#4459)
  • ExportSnapshot and LoadAnimations are now available on WPF/MAUI/standalone/Silk.NET's GumService. (#4462)
  • Fixed a TextBox placeholder staying visible after you started typing, on Skia-family backends. (#4459)
  • Fixed the same TextBox placeholder bug on Sokol. (#4463)
  • Fixed a GPU memory leak on MonoGame/Raylib from repeated oversampled-font regeneration during zoom. (#4378)
  • Fixed Absolute-width text boxes re-wrapping unexpectedly when toggling font oversampling. (#4372)
  • Fixed Raylib BBCode text and word-wrap rendering at the wrong size under font oversampling. (#4376)
  • Fixed Raylib Forms control text shrinking once font oversampling engages. (#4376)
  • Fixed automatic font oversampling never actually engaging on MonoGame or RaylibGum. (#4366)
  • Fixed turning font oversampling off not reverting text to normal. (#4366)
  • Fixed centered Button/RadioButton text shifting once font oversampling engaged. (#4366)
  • Fixed a SkiaGum zoom bug on Silk.NET where Camera.Zoom compounded every frame. (#4366)
  • Fixed RaylibGum's automatic font growth not engaging for UseCustomFont with a .ttf. (#4559)
  • Fixed inconsistent glyph positioning under fractional scale, like window zoom or DPI. (#4561)
  • MonoGame/KNI/FNA's draw-call counter now reports real draw calls, matching raylib. (#4543)
  • Apos.Shapes-backed SVG rendering for MonoGame/KNI. See Biggest Changes. (#4507)
  • Animation chains can now author a per-frame Alpha on MonoGame/KNI/FNA, Raylib, and Skia. (#4489)
  • Animation chains can now author a per-frame Multiply color tint. (#4491)
  • Fonts packed into a .gumpkg now actually load at runtime, instead of silently falling back. (#4516)
  • KernSmith's RegisterFont now resolves paths through Gum's file-loading system. (#4525)
  • RaylibGum gains a path-based RegisterFont overload. (#4525)
  • Fixed a KernSmith-registered font resolving to the wrong file in a bundled build. (#4531)
  • A failing IInMemoryFontCreator now raises a PropertyAssignmentError on Raylib. (#4465)
  • The same fix applies on MonoGame/KNI/FNA. (#4467)
  • Fixed an unhandled dynamic-font-creation error breaking rendering on Blazor/WebGL. (#4533)
  • Fixed slow theme switching from repeated failed font-signature resolution. (#4565)
  • Fixed font rendering failures on browser-wasm by using the StbTrueType rasterizer. (#4565)
  • Updated Apos.Shapes to fix a shader-compilation crash on some OpenGL setups. (#4411)
  • Fixed a crash rendering rounded-corner shapes on macOS/Linux OpenGL drivers. (#4474)
  • Fixed GumService.Uninitialize() throwing when shape visuals are re-initialized. (#4418)
  • Fixed shapes silently failing to resolve after an Uninitialize/Initialize cycle. (#4419)
  • Fixed ScrollViewer eating the first tap when a new touch begins. (#4397)
  • Fixed TextBox/PasswordBox scrolling horizontally when wrapped text spans multiple lines. (#4398)
  • Fixed a custom mouse cursor resetting to the default arrow over any Forms control. (#4444)
  • Fixed DialogBox.Dismiss firing FinishedShowing before cleanup finished (thanks @ultimateownsz). (#4440)
  • Fixed raylib and SkiaGum ignoring a Layer's screen-space camera settings. (#4375)
  • Fixed a SkiaGum shape's stroke rendering at the wrong size on a layer. (#4375)
  • Fixed SkiaGum shape strokes not thickening as the camera zooms in. (#4375)
  • raylib and SkiaGum renderers can now create additional layers, matching MonoGame. (#4375)
  • Fixed a double Content/ path prefix breaking loading screens on Android/iOS. (#4550)
  • ColorPicker joins the Add Forms component set. See Biggest Changes. (#4538)
  • Fixed a resized ColorPicker's saturation/hue squares not scaling with the control. (#4538)

What's Changed

  • Port Meadow theme to Add Forms tool content (#4566) (#4568)
  • Cache unresolvable font signatures to avoid repeated slow fallback retries (#4565)
  • Add un-theme option to MonoGameGumThemesShowcase (#4562)
  • Fix inconsistent glyph positioning under fractional scale (font oversampling / window zoom) (#4561)
  • RaylibGum: route UseCustomFont ttf CustomFontFile through InMemoryFontCreator (#4559)
  • RaylibGum: automatic font glyph growth (#4546) (#4557)
  • Fix DejaVuSansMono glyph icons silently invisible in Bubblegum/DarkPro/ForestGlade (#4556)
  • Bundle UISpriteSheet.png into Bubblegum/DarkPro/Hazard themes (#4555)
  • Add TextRuntime automatic font glyph growth (#4547)
  • Add Expander to the Add Forms component set (#4554)
  • Fix #4545: include nested component instances in AllIpsos (#4551)
  • Fix double Content/ prefix loading screens on Android/iOS (#4548) (#4550)
  • Add incremental KernSmith font atlas growth (0.21.0) (#4537)
  • Document texture-level batch sorting (BatchSortKey, DrawCallCount) (#4549)
  • Add ColorPicker to the Gum editor's Add Forms component set (#4538)
  • Group SpriteBatch draws by texture to cut per-element draw calls (#4543)
  • Let New Project pick a Forms theme; share the picker UI with Add Forms (#4534)
  • Fix uncaught font-creator exception leaving SpriteBatch open on BlazorGL/WASM (#4533)
  • Fix #4527: RegisterFont resolves paths from FileManager.RelativeDirectory (#4531)
  • Add gumcli import-screen for headless HTML-import merge testing (#4532)
  • Document .ttf file indirection and bold/italic synthesis for KernSmith fonts (#4528)
  • Register a .ttf through FileManager so bundled fonts resolve (#4523) (#4525)
  • Honor a non-uniform Width on SvgRuntime for the Apos.Shapes backend (#4509) (#4526)
  • Log per-phase timings on HTML import (#4522)
  • Don't crash loading a project with unnamed element references (#4520)
  • Fix uncompilable setup snippet and document ListBoxItem states (#4519)
  • Make a .ttf inside a .gumpkg readable at runtime (#4515) (#4516)
  • Document Font .ttf packaging in gumcli pack docs (#4514)
  • Fix SVG aspect ratio layout updates (#4513)
  • Fix runtime-agnostic font packaging (#4511)
  • Add Apos.Shapes-backed SvgRuntime for MonoGame/KNI (#4507)
  • Add XnaFiddle demo to font oversampling docs, fix rasterizer backend docs (#4508)
  • Explain what determines tabbing order in docs (#4503)
  • Document purpose of WPF/MAUI host-embedded samples in gum-samples skill (#4501)
  • Fix crash adding a child object whose standard type isn't in the project (#4500)
  • Fix slider thumb overflowing track bounds at min/max value (#4498)
  • Fix O(n^2) full-tree error refresh (#4495) (#4496)
  • Report GUM0006 warning when an instance file variable is missing on disk (#4493) (#4494)
  • Support Multiply per-frame color from .achx/.achj animation chains (#4490) (#4491)
  • Support per-frame Alpha from .achx/.achj animation chains (#4489)
  • Clamp overflowing numeric input instead of producing Infinity (#4487)
  • Refresh Variables tab when an animation chain file changes (#4485) (#4486)
  • Support FlipDiagonal from .achx/.achj animation chains (#4484)
  • Select entire numeric value on double-click instead of splitting at decimal point (#4483)
  • Fix silent case-mangling in FileManager.Standardize/MakeRelative call sites (#4481) (#4482)
  • Get the Gum tool compiling and running from source on Linux (via Wine) (thanks @profexorgeek) (#4475)
  • Support .achj (JSON) animation chain format alongside .achx (#4480)
  • Bump Apos.Shapes to 0.8.1 and fix Arc.cs's DrawRing thickness for issue #4473 (#4474)
  • Document KernSmith's StbTrueType rasterizer requirement for web targets (#4472)
  • Clarify unqualified vs qualified instance variable references in docs (#4470)
  • Surface MonoGame/KNI/FNA in-memory font creator failures via PropertyAssignmentError (#4467)
  • Raylib: surface in-memory font creator failures via PropertyAssignmentError (#4465)
  • Fix Sokol TextBox placeholder never hiding when the user types (#4463)
  • Port ExportSnapshot/LoadAnimations onto GumServiceSkiaBase (#4460) (#4462)
  • Rebuild Silk.NET's GumService as a GumServiceSkiaBase subclass (#4452 phase 2) (#4459)
  • Theme the native TextBox Cut/Copy/Paste context menu (#4457) (#4458)
  • Copy and paste a whole variable category from the Variables tab context menu (thanks @kaltinril) (#4456)
  • Compile GumService into Gum.SkiaSharp instead of file-linking it (#4452 phase 1) (#4454)
  • Unify FormsUtilities: drop dead Game param, dead namespace shim, hard-delete V1/V2 default visuals (#4450)
  • Rewrite SkiaSharp general-canvas doc to be truly Forms-free (#4448) (#4449)
  • Add SkiaSharp general canvas setup doc (#4446)
  • Only revert CustomCursor to Arrow when leaving an element that set one (#4442) (#4444)
  • Fix DialogBox.Dismiss raising FinishedShowing before cleanup (thanks @ultimateownsz) (#4440)
  • Fix Forms theme icon glyphs to use bundled .ttf instead of unbundled/missing system font (#4437)
  • Let themed CheckBox labels wrap by stretching the content column (#4433) (#4436)
  • Prune bin/obj during orphan code file scan traversal (#4430) (#4434)
  • Orphaned code file scan, Errors tab action, and gumcli codegen --prune (Part of #4422) (#4429)
  • Split the element-delete code-file prompt into per-file decisions (#4422) (#4428)
  • Route rename-collision and element-XML deletes through the recycle bin; move .codsj on rename (Part of #4422) (#4427)
  • Reconcile custom code files when an element is renamed or moved (Part of #4422) (#4423)
  • Fix Bubblegum focus-ring geometry and missing Window border (#4424) (#4426)
  • Port Neon theme to Add Forms tool content (Part of #3527) (#4420)
  • Reset AposShapeRuntime._registered on UninitializeRuntimeTypes (#4417) (#4419)
  • Reset ShapeRenderer.Self on GumService.Uninitialize (#4416) (#4418)
  • Port ForestGlade theme to Add Forms tool content (Part of #3527) (#4413)
  • Port Retro95 theme to Add Forms tool content (#4412)
  • Bump Apos.Shapes/Apos.Shapes.KNI 0.7.8 -> 0.7.10; remove Mesa self-gate (#4411)
  • Fix Circle rendering in gumcli screenshot (ShapeRenderer never initialized) (#4409)
  • New projects start with a screen and Forms controls (#4407)
  • Port Dark Pro theme to Add Forms tool content (#3527) (#4402)
  • Fix TextBox scrolling horizontally when single-line-mode text renders on multiple lines (#4398)
  • Fix ScrollViewer applying spurious scroll delta on new touch (#4397)
  • Fix NotImplementedException resizing objects with certain dimension units (#4396)
  • Flip Resize From Center at zero Width/Height instead of floor-clamping (#4392)
  • Flip resize anchor instead of allowing negative Width/Height (#4391)
  • Populate PropertyChangedArgs.OldValue in DataUiGrid.PropertyChange (#4389)
  • Restore Container outlines in the editor by not registering ContainerRuntime (#4386) (#4388)
  • Snap resize's dragged edge in world space, not Width/Height locally (#4384)
  • Show State/Category icons on Add State and Add Category right-click menu items (#4383)
  • Add grid overlay and snap-to-grid to the main editor canvas (#4381)
  • Add + buttons for categories and states in the States tree (#4379)
  • HtmlToGum: fidelity harness split, canaries, and shared converter wins (thanks @devinguthrie) (#4357)
  • Dispose the superseded font on every oversample re-rasterize (#4364) (#4378)
  • Fix raylib/SkiaGum renderers ignoring LayerCameraSettings when drawing (#4375)
  • Compose oversample compensation into Raylib BBCode default/[FontScale] runs (#4376)
  • Show state-editing indicator bar in Alignment tab (#4374)
  • Fix Absolute-width text re-wrapping when toggling font oversampling (#4370) (#4372)
  • Document deprecated standard types as separate from version gating (#4371)
  • Fix NullReferenceException selecting instances with no tree node (#4369)
  • Add Raylib font oversampling (parity with #4317) + cross-backend zoom demo screen (#4366)
  • Give the Gum main window a minimum size and reject degenerate saved geometry (#4363)
  • Close #4349: system fonts already covered; remove dead design-metrics plumbing (#4362)
  • Document TextRuntime.UseFontOversampling / RegenerateOversampledFont (#4360)

Release_August_05_2026...Release_September_02_2026