v1.1.23
v1.1.23
An issue-resolution pass closing 16 open reports: a WebSocket framing fix that unblocks large responses, in-memory SoundWave PCM for semantic sound search, several new editor/level/landscape/asset actions that retire execute_python fallbacks, and a batch of handler bug fixes. Verified by a full plugin build on UE 5.8 plus the unit suite.
Server
- audio(extract_pcm) decodes a USoundWave's imported audio to in-memory 16-bit PCM (base64) with sampleRate/channels/frames metadata, optional maxSeconds window and mono downmix. No intermediate file, no reliance on the original import path. Enables semantic sound search (CLAP). (#729)
- audio(list) now honors
directory, paginates viamaxResults/offset, and returnstotal/hasMore/nextOffsetfrom a single filtered query. (#730) - editor(close_sequence) closes the open Level Sequence editor before destructive actor ops. (#718)
- editor(purge_python_modules) drops cached embedded-Python modules by prefix so the editor stops running stale tool code after an on-disk edit. (#719)
- editor(open_tab) / editor(open_settings) open a registered editor tab or navigate a settings viewer for visual settings evidence. (#727)
- editor(execute_python / run_python_file) gain a
resultVariablechannel that returns a named top-level variable asresult, separate from print()/log. (#732) - level(set_editor_visibility) bulk-sets editor-only visibility; level(get_outliner) now reports and filters
editorHiddenper actor. (#717) - landscape(list_proxies) / landscape(find_proxy_at) enumerate loaded World Partition streaming proxies with world bounds and resolve which proxy covers a world position. (#733)
- asset(create_asset_by_class) creates an asset of any concrete UObject class (physical-material subclasses, curves, settings objects), not just UDataAsset. (#726)
- plugin publish pushes a listing and its README to the plugin registry.
Bug fixes
- WebSocket frames >= 64 KiB were malformed: the 8-byte extended payload length was built from an int32, corrupting the frame so the client dropped the connection on any large response. Encoded as uint64. (#731)
- gameplay(set_simulate_physics) silently no-opped because the schema named the parameter
simulatewhile the handler read onlyenabled. Now accepts either and errors explicitly otherwise. (#721) - editor(run_stat) with a bare stat name (e.g.
unit) ranstat fps. It now prefixes a barenamewithstat. (#722) - level(spawn_light) accepted
attenuationRadiusbut never applied it. Now written to point/spot/rect light components. (#723) - widget(add_widget) tripped the WidgetBlueprintCompiler missing-GUID ensure on UE 5.8 because the GUID registration was gated to exactly 5.4. Registered on 5.8+ at both construction sites. (#728)
- editor(capture_screenshot, target=pie) captured the editor viewport and stripped the debug canvas in Play-in-New-Window. It now captures the PIE game viewport with UI + on-screen debug canvas. (#724)
- gameplay(set_mapping_modifiers) could not author Enhanced Input triggers by class and could leave a null Triggers entry that trips AssetCheck. Triggers now build by class or type, apply nested properties, never append a null, and report unresolved specs. (#725)
Internals
- Blueprint graph-body authoring now routes to the Epic DSL: amended the
ue-mcp-blueprintskill and added aue-mcp-epic-routingskill for epic-vs-native tool selection. (#711) - Live smoke-test regressions added per fixed issue under
tests/smoke/issue-*.