v1.1.21
v1.1.21
Concurrent agents can now share one editor safely, and Blueprints diff semantically instead of as opaque binary uassets.
Server
- Per-project bridge port. The C++ bridge binds a WebSocket port derived from a hash of the project root path (IANA ephemeral range 49152-65535) instead of a fixed 9877. Two checkouts of a project, or several unrelated projects, on one machine each get a stable, launch-order-independent port, so their MCP clients never collide. The Node client and the bridge compute the identical value independently, and the bridge publishes the actual bound port to
<project>/Saved/UE_MCP_Bridge/port.jsonas the authoritative source. Pin an explicit port withUE_MCP_PORTorbridge.portinue-mcp.yml. The legacy 9877 remains the fallback when no project root is known. - Per-asset exclusive locking for concurrent agents. New
asset(lock),asset(unlock), andasset(list_locks)actions. The lock registry lives in the shared editor bridge, keyed by asset path with a TTL lease so a crashed session never wedges an asset. Mutating calls acquire the lock automatically and return a retryableASSET_LOCKEDerror when another session holds it. - Semantic Blueprint diffing (phase 1). New
blueprint(diff)compares two Blueprints structurally: parent class, variables (type and default), functions and macros, components, and per-graph node and connection deltas keyed on stable node GUIDs, so edits are matched rather than reported as remove-plus-add. Returns a structured delta plus a human summary and change count. Revision-based diffing through source control is a staged follow-up.
Internals
scripts/smoke-test.jsresolves the bridge port from theport.jsonlockfile when--portis not passed, so smoke runs reach a derived-port editor without a hand-specified port. Explicit--portstill wins; 9877 is the final fallback.- Docs updated for the per-project port, asset locking, and Blueprint diffing (configuration, architecture, tool reference).