A new update has been released, you can view the full changes on our blog post.
https://sbox.game/news/update-26-04-08
Here's some highlights from the blog.
The Sandbox game itself is now open-source, people can contribute or take the code for their own games.
🎁 Added
Doo, a simpler visual scripting system for wiring up component events — designed as a friendlier alternative to ActionGraph for common use cases
Mesh cable tool in the mesh editor for creating cables, working similarly to Hammer
New games dashboard with a rotating carousel and redesigned game cards
`lang.showkeys` cvar and editor toggle to display localisation keys instead of translated text for debugging
CSS `overflow: clip` and `overflow: clip-whole` properties for UI element clipping
CSS `background-playback-state` property to pause video backgrounds
`[ShowIf]` and `[HideIf]` attributes now support null checks
Center option added to the pivot list in mapping tools
`IFormattable` whitelisted for use in the sandbox. Thank you @RumBugen!
🧼 Improved
Texture editor moved into the inspector - Thank you @boxrocket6803!
Cascaded shadow map exclusion culling — shadows no longer render beyond each cascade boundary and objects from previous cascades are no longer re-rendered, significantly improving shadow performance
Networking thread now processes messages at the same tick rate as the main thread
Particle sprite GPU upload performance — buffer uploads moved into valid Graphics.Scope to avoid unnecessary render context creation
Network packet byte arrays are now pooled in DecodeStream, reducing GC pressure for large compressed payloads
Fixed a Steam buffer GCHandle leak where N-1 handles would leak per broadcast packet; replaced with a cheaper memcpy approach
`Package.MountAsync` now supports mounting specific package revisions, allowing games to pin map versions
`LoadingScreen.IsVisible` is no longer overridden every frame, allowing games to manually control loading screen visibility
`Game.ChangeScene` now shows a loading screen for all clients instead of just the host
Engine overlays remain visible during loading states
ScreenPanel `Scale` property now works when Auto Scale is enabled, and `Opacity` now correctly affects ScreenPanels
Undo support for WrapTextureToSelection and WrapTexture operations in the mapping tools
Pause modal now uses the lighter HtmlPanel instead of a full WebPanel
Launcher window geometry is saved when auto-closing
PATH changes are now a no-op on non-Windows platforms. Thank you @MrSoup678!
🪛 Fixed
Disabling shadows on a directional light now works correctly
Shader compiler shutdown crashes resolved by properly draining the material system and preventing Steam callbacks after managed shutdown
Exceeding the maximum light count no longer triggers assertions or causes directional light flickering
`GetPixels` arguments are now validated to prevent negative values, fixing a security vulnerability
Referencing a deleted prefab no longer crashes — the editor shows a warning and preserves instance data for recovery
Creating a prefab from a GameObject now correctly restores the object's position
Reverting changes on a nested prefab instance no longer wipes all outermost overrides
Applying changes to a nested prefab no longer regenerates all GUIDs
Fixed cyclical library references caused by built-in projects referencing libraries
Fixed a null `AssetTypeAttribute.Name` NRE that silently shut down the GameInstance on editor startup
Game loading is now properly cancelled on disconnect, preventing background loads from continuing
Fixed filesystem unmount exceptions when a load is cancelled
Prop gibs now properly inherit velocity when spawned in a batch group
`IgnoreSingleObject` trace now correctly checks both rigidbody and collider GameObjects
Glass shader tint now blends correctly through multiple layers using premultiplied alpha blending. Thank you @Infiland!
`backdrop-filter: blur` no longer generates excessive mipmap levels Thank you @Infiland!
Toast notifications (e.g. achievements) no longer persist indefinitely
Post-game info popup is no longer dismissed on click, so its actions can be used. Thank you @RumBugen!
Fixed human models having deformed hands with the "holditem" holdtype
Fixed TextRenderer alignment not updating on re-enable
Fixed possible NRE in `Button.Text` setter
Fixed possible NRE in `UpdateMusic`