Patch release — 15 fixes from an external user's full-toolset audit (all 174 tools tested against a live editor). Huge thanks to the reporter!
Critical
set_particle_color_gradient: infinite loop that could hang the editor (Gradient cannot be cleared point-by-point). Gradients are now built by wholesaleoffsets/colorsassignment. Same root cause removed a spurious black stop from everyapply_particle_presetramp.connect_signal: connections were created withoutCONNECT_PERSISTand never reached the.tscn. Now persistent, with new optionaldeferred/one_shotparameters andflags/persistentechoed in the response.update_property: assigning a Resource property byres:///uid://path silently set it tonull. Paths are now loaded into Resources (also fixesbatch_add_nodes), and unresolvable paths fail loudly instead of committingnull.
High
create_themereturned{}without writing the file (Dictionary-vs-null guard bug). Also creates parent directories now.get_performance_monitorsreported the editor process's metrics; it now reads the running game via IPC and returns"process": "game".get_test_report/run_test_scenariocounted green assertions as failures (double-wrapped game replies + non-assertion steps being scored). Aggregates are now correct; empty reports returnno_results: true.
Medium / Minor
get_scene_treereturns scene-relative paths (usable asnode_pathinput, ~10x smaller responses).analyze_signal_flowno longer dumps editor-internal connections.find_unused_resourcesresolvesuid://references and ProjectSettings-held references (main scene, bus layout, icon, autoloads) — no more false "unused" reports for live assets.get_input_actions(include_builtin: false)no longer leaks editor actions (spatial_editor/*).create_resourcecreates missing parent directories.run_test_scenariokeycode input steps now auto-release the key (disable withauto_release: false).set_particle_materiallists emission sub-parameters inchanges[].
See CHANGELOG.md for full details.