Defold 1.13.1
Disclaimer
This is a BETA release, and it might have issues that could potentially be disruptive for you and your teams workflow. Use with caution. Use of source control for your projects is strongly recommended.
Access to the beta
Download the editor or bob.jar from GitHub: Release v1.13.1 - beta · defold/defold · GitHub
Beta notes:
This release takes another important step forward for both 3D development and editor extensibility. We finally published new Light components support in the editor and engine. Moreover we added support for instancing for models with morph targets, broader gamepad compatibility through the SDL controller database, and a significant expansion of the Editor Scripts API. Large projects can also benefit from warm builds that are now up to 19% faster. The beta also brings borderless fullscreen on desktop, a new C API for HTTP requests, improved HTML5 audio playback, support for larger resource archives, and numerous engine and editor fixes.
Pay extra attention to the following changes:
- (#12618) Update Xcode to 26.5 - If you are using custom
Info.plistfor ios/osx - please, update their content from builtins.
Summary
- NEW: (#12428) dmSDK: Added support for C api to do http requests (by JCash)
- NEW: (#12219) Add instancing support for morph targets (by Jhonnyg)
- NEW: (#4752) Use borderless windowed fullscreen mode by default for desktop platforms (by Jhonnyg)
- NEW: (#12271) Metal graphics backend support (by Jhonnyg)
- NEW: (#11724) Light component support in editor (by Jhonnyg)
- NEW: (#12066,#10485) Add SDL gamepad database support (by JCash)
- NEW: (#12049) Allow removing GUI runtime texture mappings (by AGulev)
- NEW: (#12618) Update Xcode to 26.5 (by ekharkunov)
- NEW: (#3639) Added collectionproxy.load() (by britzl)
- NEW: (#11439) Add non-modal option to dialogs created by editor scripts (by vlaaad)
- NEW: (#11967) Allow setting width, height, and resizable properties on dialogs (by vlaaad)
- NEW: (#6557) Show a notification when editor scripts should be reloaded (by vlaaad)
- NEW: (#11529) Add Code location for editor script commands (by vlaaad)
- NEW: (#11182) Show status bar message on editor script reload (by vlaaad)
- NEW: (#6233) Add
editor.fetch_libraries()command to editor scripts (by vlaaad) - NEW: (#12431) Add clear console escape sequences (by vlaaad)
- NEW: (#11670) Add
editor.ui.tabs()andeditor.ui.tab()to editor scripts (by vlaaad) - NEW: (#10994) Add
imagemodule to editor extensions (by vlaaad) - NEW: (#12371) Disable Collision Object “Group” property when it’s a tilemap or tilegrid (by JosephFerano)
- NEW: (#11994) Add
/refAPI endpoint to editor’s HTTP server (by vlaaad) - NEW: (#11988) Improve warm build performance of large projects by 19% (by vlaaad)
- NEW: (#12605) Welcome screen: Persist projects until user removes them (remove 30 day expiration date) (by JosephFerano)
- NEW: (#11405) Added dependency meta data to the bundle (by JCash)
- NEW: (#12658) Add
active_viewquery to editor script commands (by vlaaad) - NEW: (#12062) Write Defold installation location to a well-known place (by vlaaad)
- NEW: (#12547) Add
indeterminatecheckbox state to editor scripts UI. (by vlaaad) - NEW: (#12690) Add
/previewendpoint that returns scenes as PNGs (by vlaaad) - NEW: (#12405,#11506,#11338) Support configuring mouse bindings for scene view controls (by JosephFerano)
- NEW: (#12084) Jump to symbol dialog with fuzzy search (by JosephFerano)
- FIX: (#12400) Ported engine build system to CMake (by JCash)
- FIX: (#12542) Added support for creating a Visual Studio solution (by JCash)
- FIX: (#12549) Fix
go.world_to_local_positionandgo.world_to_local_transform(by ekharkunov) - FIX: (#12592) Support
arcdarchives over 4 GiB (by AGulev) - FIX: (#12436) Fix Lua timer self-cancel crashes (by AGulev)
- FIX: (#12616) Added iOS unit test and XCode support (by JCash)
- FIX: (#12628) Avoid WebGL getParameter INVALID_ENUM on startup (by AGulev)
- FIX: (#9445,#10973,#10041,#10889) Fix glitchy HTML5 sound on Samsung Internet Browser and some other cases (by AGulev)
- FIX: (#11044) Decode Ogg/Vorbis files with large headers (by AGulev)
- FIX: (#12694) Fix for calling GetIfAddresses() multiple times per frame (by JCash)
- FIX: (#12695) Strip debug symbols from libvkquality.so (by britzl)
- FIX: (#12624) Added lit materials with skinning taking into account normal. (by paweljarosz)
- FIX: (#12166) Sign executables and shared libraries (by britzl)
- FIX: (#10219) Make nested editor script dialogs blocking (unless explicitly non-modal) (by vlaaad)
- FIX: (#12591) Clean up Bob temporary files (by AGulev)
- FIX: (#12593) Fix atlas packing regression (by JosephFerano)
- FIX: (#12548) Improve idle CPU usage (by vlaaad)
- FIX: (#12676) Make
Debug -> Set Resolution -> Custom Resolutionpref project-scoped (by vlaaad) - FIX: (#12603) Fix dependency fetch timeout issue (by vlaaad)
- FIX: (#12638) Close Add Component context menu on selecting a component (by vlaaad)
- FIX: (#12674) Keep toolbar when moving focus from Outline to Toolbar dropdown (by vlaaad)
- FIX: (#12329) Show notification with a Restart suggestion on dll unpack failure (by vlaaad)
- FIX: (#12720) Implement HTTP file download in editor scripts (by vlaaad)
- FIX: (#11183) Improve error handling around using broken resources in editor scripts (by vlaaad)
Engine
NEW: (#12428) ‘dmSDK: Added support for C api to do http requests’ by JCash
To access the engine HTTP service from an extension, fetch HTTP_SERVICE_CONTEXT_NAME from the extension context registry during your extension Initialize function:
#include <dmsdk/dlib/http.h>
#include <dmsdk/extension/extension.h>
static HttpService* g_HttpService = 0;
static dmExtension::Result ExtensionInitialize(dmExtension::Params* params)
{
HContextRegistry context_registry = ExtensionParamsGetContextRegistry((ExtensionParams*)params);
g_HttpService = (HttpService*) ContextRegistryGet(context_registry, HTTP_SERVICE_CONTEXT_NAME);
if (!g_HttpService)
{
return dmExtension::RESULT_INIT_ERROR;
}
return dmExtension::RESULT_OK;
}
A basic GET request through http.h looks like this:
#include <dmsdk/dlib/http.h>
static HttpCallbackResult HttpResponse(HttpRequest* request, void* user_data, const HttpResponseInfo* response)
{
switch (response->m_Event)
{
case HTTP_RESPONSE_EVENT_HEADER:
// response->m_Header / response->m_HeaderSize
break;
case HTTP_RESPONSE_EVENT_DATA:
// response->m_Data / response->m_DataSize
break;
case HTTP_RESPONSE_EVENT_COMPLETE:
// response->m_Result and response->m_StatusCode
break;
default:
break;
}
return HTTP_CALLBACK_RESULT_CONTINUE;
}
static HttpResult PushGetRequest(HttpService* http_service, const char* url)
{
HttpRequest* request = 0;
HttpRequestHandle handle = HTTP_REQUEST_HANDLE_INVALID;
HttpResult result = HttpNewRequest(&request);
if (result == HTTP_RESULT_OK)
result = HttpSetMethod(request, "GET");
if (result == HTTP_RESULT_OK)
result = HttpSetURL(request, url);
if (result == HTTP_RESULT_OK)
result = HttpSetResponseCallback(request, HttpResponse, 0);
if (result == HTTP_RESULT_OK)
result = HttpPushRequest(http_service, request, &handle);
if (result != HTTP_RESULT_OK)
{
HttpDeleteRequest(request);
}
return result;
}
NEW: (#12219) ‘Add instancing support for morph targets’ by Jhonnyg
Models using morph targets can now be instanced by using the new SEMANTIC_TYPE_MORPH_TARGET_WEIGHTS vertex attribute semantic type. Similar to mtx_world, mtx_normal, specifying a vertex attribute in the shader with the name morph_targets_weights will signal the engine that the morph target weights will be produced in a per-instance buffer:
#version 140
// Per-vertex attributes
in highp vec4 position;
in mediump vec2 texcoord0;
in mediump vec3 normal;
// Per-instance
in mediump mat4 mtx_world;
in mediump mat4 mtx_normal;
in mediump mat4 morph_targets_weights;
// Morph target delta values
uniform sampler2DArray morph_targets;
NEW: (#4752) ‘Use borderless windowed fullscreen mode by default for desktop platforms’ by Jhonnyg
When enabling the display->fullscreen setting in the game.project, we now create a borderless fullscreen window instead of the old “explicit” fullscreen mode.
NEW: (#12271) ‘Metal graphics backend support’ by Jhonnyg
A Metal adapter has been added to the engine that can be used for both OSX and iOS devices. At the moment, this is only available when building the engine locally by passing the --with-metal build system switch:
./script/build.py make_solution --platform=arm64-ios – --with-metal
./script/build.py build_engine --platform=arm64-macos – --with-metal
NEW: (#11724) ‘Light component support in editor’ by Jhonnyg
The light component has now been fully refactored to use the new data resource format, and the editor can now create, manipulate and preview light components. Currently, four light component types are supported:
If a LightBuffer struct is present (and has the correct layout) in any of the shaders, the engine will automatically bind it with the populated light data from the light components.
To use the LightBuffer in custom shaders, please refer to builtins/materials/lighting.glsl for the backing layout and builtins/materials/model_lit.fp for how to use it. The layout of the LightBuffer must have the exact same layout as specified in the lighting.glsl include, otherwise the engine will not be able to bind the internal uniform buffer to this resource. Also note that the MAX_LIGHT_COUNT must be equal or less than the Light->Max Count setting in the game.project.
NOTE a: There are four separate light resource types instead of a single .light resource type. This is an intentional design from our side which will eventually enable users to write custom light components that can hook into the light buffer and light systems automatically!
NOTE b: The editor can only support at most 8 lights right now. Since we are not using uniform buffers and there is no render script support (i.e no other light representation than using standard forward lighting), we need some conservative default value.
NOTE c: The light component will not work on WebGL1 / ES2 OpenGL contexts.
NEW: (#12066,#10485) ‘Add SDL gamepad database support’ by JCash
We’ve added support for the SDL gamecontrollerbd.txt, which is a commonly used gamepad mapping file for many gamepads and platforms.
- It is enabled by default, and no action is needed to migrate to this. (project setting
input.gamepad_database - Matches runtime gamepad layouts by GUID first, then fall back to legacy device-name matching.
- We’ve updated the
gdctool to output the new SDL mapping. - We’ve introduced the project setting
input.gamepad_deadzonefor use with the SDL mappings
We’re still supporting our old .gamepads file for a while longer. However, we’d like to phase it out with the help of the community, by adding missing entries to the new SDL gamecontrollerdb.txt file instead. The plan is to merge changes upstream to the SDL database.
Use the GamepadTester example to test this out.

NEW: (#12049) ‘Allow removing GUI runtime texture mappings’ by AGulev
GUI scripts can now remove a named runtime texture mapping by calling gui.set(msg.url(), "textures", nil, {key = ...}). This lets projects release runtime-created atlas resources after they are no longer used by a GUI scene.
NEW: (#12618) ‘Update Xcode to 26.5’ by ekharkunov
If you are using custom Info.plist for ios/osx - please, update their content from builtins.
Updated SDKs:
- iPhoneOS - 26.5
- iPhoneSimulator - 26.5
- MacOS - 26.5
- Xcode toolchain - 26.5
NEW: (#3639) ‘Added collectionproxy.load()’ by britzl
Added collectionproxy.load(url, options, callback) to asynchronously load and initialize a collection using a collection proxy component.
collectionproxy.load("#proxy", nil, function(self, message_id, message, sender)
if message_id == hash("proxy_ready") then
print("proxy is ready")
elseif message_id == hash("proxy_loading") then
print("progress", message.progress)
elseif message_id == hash("proxy_error") then
print("error", message.code)
end
end)
NEW: (#12405,#11506,#11338) ‘Support configuring mouse bindings for scene view controls’ by JosephFerano
The Preferences Dialog Keymap tab now includes bindings for mouse related operations. This allows users to create their own custom mouse + keyboard modifiers (ctrl/alt/shift) for scene related operations, namely mouse controls like zoom/orbit/pan/free-cam. Scenes like Tilesource, Atlas, and Curve View can override default camera behaviors, while Curve Editor and Tilemap allow customization of their special actions like adding control points on curves and copying/erasing tiles.
NEW: (#12084) ‘Jump to symbol dialog with fuzzy search’ by JosephFerano
You can now press Ctrl + Shift + O on Windows/Linux and Cmd + Shift + O on Mac to open the jump-to-symbol dialog. You can fuzzy search symbols in the current script you are working on and press enter to jump to them, for quick navigation.
FIX: (#12400) ‘Ported engine build system to CMake’ by JCash
The rewrite not only speeds up our builds, but also allows us to use a more broadly used build system for all our platforms.
FIX: (#12542) ‘Added support for creating a Visual Studio solution’ by JCash
You can now create a Visual Studio solution for the engine by calling:
./scripts/build.py make_solution
You can add more features/flags:
./scripts/build.py make_solution -- --opt-level=0 --enable-feature=box2dv3
Once the project is built. Open it with Visual Studio (tested with 2026), and press F5 to debug.
FIX: (#12549) ‘Fix go.world_to_local_position and go.world_to_local_transform’ by ekharkunov
Fixed a regression where go.world_to_local_position() and go.world_to_local_transform() no longer returned the correct values.
FIX: (#12592) ‘Support arcd archives over 4 GiB’ by AGulev
Windows bundles with large game resource archives can now load resources at startup when archive data crosses the 2 GiB boundary, instead of failing with resource FORMAT_ERROR messages. The archive format also gains room for offsets beyond 4 GiB.
FIX: (#12436) ‘Fix Lua timer self-cancel crashes’ by AGulev
Lua timers can now safely cancel or restart themselves from inside their own callbacks without freeing callback state while it is still running. This prevents crashes in timer-heavy callback flows and keeps cancelled timers immediately invisible to timer.get_info(), timer.trigger(), and repeated cancellation attempts.
FIX: (#12616) ‘Added iOS unit test and XCode support’ by JCash
This fix allows you to run the tests on your connected iOS device or Simulator.
iOS:
./scripts/build.py build_engine --platform=arm64-ios --skip-docs --ios-mobileprovision /path/to/my.mobileprovision
iOS Simulator:
./scripts/build.py build_engine --platform=x86_64-ios --skip-docs
You can read more in README_IOS.md for more detailed notes.
It also allows you to create an XCode solution for the engine:
./scripts/build.py make_solution --platform=arm64-ios --ios-mobileprovision /path/to/my.mobileprovision
FIX: (#12628) ‘Avoid WebGL getParameter INVALID_ENUM on startup’ by AGulev
HTML5 builds no longer query a non-portable WebGL graphics limit during startup. Browsers that reject this parameter keep using the existing vertex-attribute based fallback, avoiding the getParameter INVALID_ENUM warning while preserving native OpenGL behavior.
FIX: (#9445,#10973,#10041,#10889) ’ Fix glitchy HTML5 sound on Samsung Internet Browser and some other cases’ by AGulev
HTML5 builds now keep browser audio playback buffered enough to avoid glitchy music and sound effects on Samsung Internet. The sound queue adapts to browser-reported latency and detected underruns instead of relying on a fixed buffer count, so affected playback has more room to stay continuous.
FIX: (#11044) ’ Decode Ogg/Vorbis files with large headers’ by AGulev
Ogg/Vorbis assets with large metadata comments can now be opened and decoded when their startup headers exceed the initial decoder input block. This prevents valid files with large embedded metadata from failing during stream initialization.
FIX: (#12694) ‘Fix for calling GetIfAddresses() multiple times per frame’ by JCash
This fixes an issue where calling the dmSys::GetIfAddresses() on Windows platforms could potentially stall for a very long time if it was called multiple times per frame.
From scripting side, this corresponds to the sys.get_ifaddrs()function.
FIX: (#12695) ‘Strip debug symbols from libvkquality.so’ by britzl
Make sure to strip libvkquality.so from debug symbols.
FIX: (#12624) ‘Added lit materials with skinning taking into account normal.’ by paweljarosz
Modified the built-in lit skinned materials and added vertex programs that take into account normal when applying lighting.
Editor
NEW: (#11439) ‘Add non-modal option to dialogs created by editor scripts’ by vlaaad
We added a modal option to editor.ui.dialog in editor scripts. Set modal = false to keep the dialog open while users continue working in the editor behind it.
This is useful for editor-script tools, tutorials, and assistants that need to stay visible while the user selects files, edits scenes, or changes properties in the main editor.
NEW: (#11967) ‘Allow setting width, height, and resizable properties on dialogs’ by vlaaad
Now it’s possible to create resizable dialogs with predefined width and/or height using editor scripts!
editor.ui.dialog({title = "Dialog", width = 720, height = 600})
editor.ui.dialog({title = "Width-only dialog", width = 720})
editor.ui.dialog({title = "Height-only dialog", height = 600})
NEW: (#6557) ‘Show a notification when editor scripts should be reloaded’ by vlaaad
We now show a notification popup that suggests reloading the editor scripts and fetching libraries when the dependencies list has changed.
NEW: (#11529) ‘Add Code location for editor script commands’ by vlaaad
Now commands that target Code location will show up in the Code editor context menu.
NEW: (#11182) ‘Show status bar message on editor script reload’ by vlaaad
The editor now provides visible feedback in the status bar whenever editor scripts are reloaded.
NEW: (#6233) ‘Add editor.fetch_libraries() command to editor scripts’ by vlaaad
Use editor.fetch_libraries() in editor scripts to fetch libraries programmatically.
NEW: (#12431) ‘Add clear console escape sequences’ by vlaaad
Now we emit a clear marker when clearing the console stream.
The marker is a leading newline followed by the same xterm-style escape sequence emitted by clear:
\npreserves the previous behavior for simple line-oriented clients, which still observe an empty line on clear.ESC [ 3 Jclears scrollback.ESC [ Hmoves the cursor to the home position.ESC [ 2 Jclears the screen.
This allows /console/stream users to get a proper clear notification instead of just a newline. For example, this automatically works in shell console streaming:
curl -N http://localhost:$(cat .internal/editor.port)/console/stream
NEW: (#11670) ‘Add editor.ui.tabs() and editor.ui.tab() to editor scripts’ by vlaaad
Now it’s possible to create tab panes using editor scripts, e.g.:
NEW: (#10994) ‘Add image module to editor extensions’ by vlaaad
Editor scripts can now inspect image files. The new image module can load image files, read their size, and iterate over all pixels.
Example:
local img = image.load_file("assets/source.png")
local w, h = image.size(img)
local r, g, b, a = image.pixel(img, 1, 1)
for x, y, r, g, b, a in image.pixels(img) do
print(x, y, r, g, b, a)
end
NEW: (#12371) ‘Disable Collision Object “Group” property when it’s a tilemap or tilegrid’ by JosephFerano
The editor will now disable the Group property of a collision object component when the Collision Shape property is set to a tilemap resource. The collision object groups are instead controlled by the groups defined within the tile source used by the assigned tilemap.
NEW: (#11994) ‘Add /ref API endpoint to editor’s HTTP server’ by vlaaad
We added an API reference endpoint so coding agents or third-party tools can query docs from the running editor:
curl -s "http://localhost:$(cat .internal/editor.port)/ref?q=go.animate" \
| jq '.[0] | {name, type, brief}'
{
"name": "go.animate",
"type": "function",
"brief": "animates a named property of the specified game object or component"
}
NEW: (#11988) ‘Improve warm build performance of large projects by 19%’ by vlaaad
On a large project the measured warm build time (when there is a build cache on disc) improved from 3m16s to 2m37s.
NEW: (#12605) ‘Welcome screen: Persist projects until user removes them (remove 30 day expiration date)’ by JosephFerano
The Recent Projects list on the editor welcome screen used to have a 30 day expiration date. This has been changed and projects remain in the Recent Projects list until explicitly removed by the user.
NEW: (#11405) ‘Added dependency meta data to the bundle’ by JCash
We have added support for project dependency info in a crash dump. The information has been added in order to help when debugging issues, and replicating a debuggable build from the dependencies.
The information is not included by default, but can be included by setting the game.project setting project.dependencies_metadata = 1.
The information contains:
- “url” - anonymized url (e.g “https://github.com/defold/extension-spine/archive/refs/tags/4.6.0.zip”)
- "commit-sha1 - the commit sha1 of the .zip (e.g. “da782a14b149238d7d30527c6816254cac1b829a”) if available!
- “payload-sha1” - the sha1 checksum of the .zip itself (e.g. “921C7AE8158669E4E6DE37CD0597529A”)
Note: The commit sha1 is read from the metadata of the .zip file, as GitHub adds the sha1 there. This is not necessarily true for all dependencies, e.g if they are served from other hosts.
You can also use sys.load_resource("/.internal/dependencies.json") at runtime in case you need to store your own bread crumbs.
NEW: (#12658) ‘Add active_view query to editor script commands’ by vlaaad
Now, it’s possible to query active view node in editor script commands. Views can be queried by their type: "code", "scene", "html", or "form".
The active view exposes the following properties:
"type": the active view type"resource": the resource shown in the view"dirty": whether the view has unsaved changes
editor.command({
label = "Print Active View",
locations = {"View"},
query = {active_view = {type = "code"}},
run = function(opts)
local view = opts.active_view
local resource = editor.get(view, "resource")
print(editor.get(view, "type"))
print(editor.get(resource, "path"))
print(editor.get(view, "dirty"))
end
})
NEW: (#12062) ‘Write Defold installation location to a well-known place’ by vlaaad
This should make it easier for third-party IDE integrations to discover where the Defold editor is located.
On startup, the editor writes its launcher and installation paths to:
| OS | Location |
|---|---|
| macOS | ~/Library/Application Support/Defold/installations.json |
| Linux | ${XDG_STATE_HOME:-~/.local/state}/Defold/installations.json |
| Windows | %LOCALAPPDATA%\Defold\installations.json |
The file is a JSON array of objects, e.g.:
[
{
"launcherPath": "/Applications/Defold.app/Contents/MacOS/Defold",
"installPath": "/Applications/Defold.app",
"lastLaunchedAt": "2026-07-06T12:34:56.789Z"
}
]
NEW: (#12547) ‘Add indeterminate checkbox state to editor scripts UI.’ by vlaaad
Now it’s possible to create check-boxes with indeterminate state. An indeterminate state is a third visual indicator used for a checkbox when a subset of its child items are partially selected.
editor.ui.check_box({
text = "Mixed selection",
value = true,
indeterminate = true
})
NEW: (#12690) ‘Add /preview endpoint that returns scenes as PNGs’ by vlaaad
Now, the editor’s HTTP server can return PNGs of scenes in the project. This is useful for agentic workflows that need to see what the scene looks like when an agent edits it. As usual, the endpoint is documented in the OpenAPI spec, so the only thing your agent needs to use it is still the URL http://localhost:$(cat .internal/editor.port)/openapi.json.
FIX: (#12166) ‘Sign executables and shared libraries’ by britzl
This change makes sure that texc_shared, shaderc_shared and modelc_shared in the editor package are signed on Windows and macOS. The Windows and macOS versions of dmengine, dmengine_release and dmengine_headless are also signed.
FIX: (#10219) ‘Make nested editor script dialogs blocking (unless explicitly non-modal)’ by vlaaad
Nested editor script dialogs are now blocking, unless exlicitly non-modal.
FIX: (#12591) ‘Clean up Bob temporary files’ by AGulev
Bob now removes temporary files created during builds, archiving, bundling, and shader compilation when the build finishes. This prevents stale temporary files from accumulating across repeated Bob runs while still allowing temporary files to be kept explicitly for debugging.
FIX: (#12593) ‘Fix atlas packing regression’ by JosephFerano
A regression was fixed that would not allow certain images to be rotated, requiring extra space. Also improved the packing algorithm with extra attempts which helped reduce atlas sizes under certain cases with extrusion settings.
FIX: (#12548) ‘Improve idle CPU usage’ by vlaaad
Reduce idle editor CPU usage when the editor does not have focus. This drops CPU from around 8-12% to 3-6% on macOS.
FIX: (#12676) ‘Make Debug -> Set Resolution -> Custom Resolution pref project-scoped’ by vlaaad
Custom resolution settings are now stored per project.
FIX: (#12603) ‘Fix dependency fetch timeout issue’ by vlaaad
In projects with many dependencies it is sometimes observed that fetching dependencies timeout for no reason, even when the internet connection is both stable and fast. This change increases the connection timeout to avoid timeouts.
FIX: (#12638) ‘Close Add Component context menu on selecting a component’ by vlaaad
This fixes an issue where the Add Component context menu remained open after selecting a component in the scene view.
FIX: (#12674) ‘Keep toolbar when moving focus from Outline to Toolbar dropdown’ by vlaaad
This fixes an issue where the scene view toolbar disappeared when focus changed from Outline to a dropdown in a toolbar.
FIX: (#12329) ‘Show notification with a Restart suggestion on dll unpack failure’ by vlaaad
The editor will now show a notification suggesting to restart the editor if a dll failed to unpack from an extension (due to a file lock or similar).
FIX: (#12720) ‘Implement HTTP file download in editor scripts’ by vlaaad
Now, you can download files using the path option of the http.request fn:
local response = http.request(url, {
path = "downloads/archive.zip"
})
FIX: (#11183) ‘Improve error handling around using broken resources in editor scripts’ by vlaaad
Editor scripts now report invalid resources created with editor.create_resources() instead of silently accepting them. For example:
editor.create_resources({{"/test/invalid.go", "\"name\":\"invalid\""}})
--> Created resources are invalid: /test/invalid.go
Trying to edit a broken resource also fails:
editor.tx.add("/test/invalid.go", "components", { type = "label" })
--> Cannot edit defective resource: /test/invalid.go




