Repository navigation
v2.35.5 — Unity error messages restored + fail-closed routing
Patch release from a 43-run audit of both repos (33 dimensions + 10 blind-spot dimensions, 168 agents, every CRITICAL/HIGH finding adversarially verified before it was acted on). Companion plugin: v2.39.4.
Recommended for all users.
🔍 Every Unity error message was being thrown away
The queue ticket carries the Unity-side exception in errorMessage, but the poller read statusData.error — a field that never exists on that shape. So every failure across all 337 routes collapsed to a generic "Queue processing failed". Agents got no diagnostic and typically retried the identical failing call — which, for a non-idempotent write, means doing it twice.
It was worse than it looked. Two other features detect older plugins by reading "Unknown API endpoint" out of that same error text:
- advanced-tool did-you-mean suggestions
component_batch_wiregraceful degrade
Both had been silently broken in production. All three are repaired by reading the right field.
Why the test suite never caught it: the mock bridge emitted the wrong field name too, so 59 passing tests were validating a fiction. The mock now mirrors the plugin's real wire shape exactly, and the assertion that accepted success:false as an acceptable substitute (letting the real message vanish unnoticed) now demands the verbatim text — and is proven to fail without the fix.
⚙️ Also fixed
- A vanished project no longer redirects your writes to a different one. When an agent's selected Unity instance disappeared, the code cleared the selection and switched off the "you must select an instance" gate — so the same call fell through to the default port, which in any multi-project session is a different live Unity, reporting success the whole way. It now fails closed and asks you to re-select.
- A transient hiccup no longer downgrades the whole session. Any lingering submit error (Unity not up yet, a domain reload longer than the retry window) permanently latched the connection into legacy mode — losing agent attribution, per-action undo grouping and read batching, with nothing to ever reset it. Only a definitive HTTP 404 now proves a plugin lacks queue mode.
➕ Added
Schema opt-ins for the plugin's new data-loss guards: unity_asset_delete → recursive / permanent; unity_scene_open and unity_scene_new → saveFirst / discardUnsavedChanges; unity_scene_save → path (required for a never-saved scene, and doubles as Save-As). Several of these previously dropped every parameter but path.
🧹 Changed
- License declared correctly —
package.jsondeclared none andmanifest.jsonsaidMIT, while the shipped LICENSE is the AnkleBreaker Open License v1.0. manifest.jsonversion was stale at 2.35.2 and is now synced.- A test that compared network arrival order for calls the code fires concurrently was replaced with one that checks the guarantee actually made (
results[i]aligns withreferences[i]) — strictly stronger than what it replaced.
📦 Install
npx anklebreaker-unity-mcp@latest
Verification
60/60 tests, all four CI matrix jobs (ubuntu + windows × node 20 + 22) green, route registry 337 in sync, companion plugin compiles clean against a live Unity 6000.3.9f1 editor.
Full changelog: CHANGELOG.md