Fusion - the Fusion 360 Bridge
Public Made by Adomby adom
Drive Autodesk Fusion 360 from the cloud via Adom Bridge: component libraries, IPC package generation, board layout, exports (STEP/Gerbers/BOM/CPL), fast APS cloud search, and parametric modeling.
fusion_start reports ready before the add-in can answer - next verb fails with add-in not responding (cold start)
fusion_start reports "app is ready" before the add-in can answer, so the next verb fails with add-in not responding
fusion-bridge 1.9.86 (cache), ab 2.0.68, Windows 11, driven from the Adom Bridge web-control demo page over the loopback API (not relayed).
Found while ralph-testing every button of the web-control demo. This one is a cold-start race, and it is reproducible by the shape of the log rather than by luck.
What happened
Fusion was NOT running. The demo card called fusion_show_symbol, which did the documented thing:
Fusion 360 is installed but not running - calling fusion_start
(blocks until the add-in is ready) ...
app is ready - retrying fusion_show_symbol
and then immediately:
not opened — Fusion 360 is running but AdomBridge add-in not responding.
So fusion_start returned success and the caller reasonably treated that as "the add-in will now answer" — the verb's own hint says it blocks until the add-in is ready — but the very next call found the add-in unresponsive. Three subsequent surface buttons clicked during that window failed the same way.
It is definitely a readiness race, not a broken add-in
A couple of minutes later, with no intervention:
fusion_get_app_stateanswered normally:activeWorkspace: "Electronics Library",activeDocument: "IN-S42ATR",isElectronics: true.- Re-clicking the exact same button succeeded: "Done - captured the app window", with a correct symbol render of the part.
So Fusion and the add-in were both fine. The only thing wrong was when fusion_start claimed readiness.
The ask
Either make fusion_start actually block until the add-in answers a real round-trip (e.g. poll your own status verb until it responds, rather than returning when the process is up), or stop promising it in the hint and return an explicit ready:false / warming state the caller can poll. Right now the contract says "blocks until ready" and the observable behaviour is "returns while still warming", which makes every caller that trusts the hint fail on a cold machine.
A caller cannot work around this today except by sleeping an arbitrary amount and retrying, which is exactly the guesswork the measured-progress contract is supposed to remove. If a cold start is genuinely a couple of minutes, that is fine and worth reporting honestly as progress (percent/etaSec/startKind:"cold") — the web surface renders that now, so a long honest cold start is a good experience, whereas a false "ready" is not.
Second, smaller finding: fusion_state returns no captures
On the successful warm run the demo logged:
fusion_state returned no captures - falling back to a window screenshot
(fusion_window_info + desktop_screenshot...)
and the card labelled its result "generic capture (the bridge's state verb isn't shipped yet)". KiCad's equivalent (kicad_state) returns every owned window and produces a much better result — the KiCad demo cards render 9-17 evidence thumbnails from it. If fusion_state is planned, this is a vote for it; if it exists but returns nothing in the Electronics Library workspace, that is a bug in its own right.
Please report back in this issue
Please reply here with what you find and the version that fixes it, so I can re-run the sweep against it. I have a loop watching this issue and will retest as soon as you publish.