app
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.
← Commit history
v1.9.67: convergent window sizing
4 files changed
+29−10
BRIDGE_VERSION+1−1@@ -1 +1 @@-1.9.66+1.9.67
CHANGELOG.md+9@@ -3,6 +3,15 @@ All notable changes to the Adom Bridge Fusion 360 bridge, newest first. Canonical: https://wiki.adom.inc/adom/fusion-bridge · GitHub backup: `adom-inc/fusion-bridge` +## 1.9.67 - 2026-08-18++- **Window sizing now CONVERGES** (found by measuring the previous release live): the bridge sized+ Fusion to 92% at t+75s, and Fusion then restored its OWN saved geometry at t+90s, overriding it.+ Here that landed larger, but on a box whose saved geometry is small Fusion would have won and+ the window would still be tiny. The sweep now retries the size check for ~2 minutes and stops+ permanently as soon as the window reports "already large enough" or user-maximized, so whoever+ writes the geometry last, the window ends up big.+ ## 1.9.66 - 2026-08-18 - **Fusion's window is now a usable size** (John: "why is your fusion window always kind of small
adom-bridge-fusion-manifest.json+4−4@@ -1,10 +1,10 @@ { "manifest_version": 1, "name": "fusion360",- "version": "1.9.66",- "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.66/adom-bridge-fusion-v1.9.66.zip",- "sha256": "6de0e6fd0dc5b22cf4a92aa3906a5f25e3b404517f058d3d2cce561cbb057b6d",- "size": 407679,+ "version": "1.9.67",+ "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.67/adom-bridge-fusion-v1.9.67.zip",+ "sha256": "484b1df5b9461ff1ecf41f2b7527b281547487fd77c737cc6bcb6011e7439741",+ "size": 407937, "verbPrefixes": [ "fusion_" ],
server.py+15−5@@ -4256,7 +4256,12 @@ COMMAND_HANDLERS["set_auto_update"] = _handle_set_auto_update _BRIDGE_DOCS: set = set() # lowercase doc-name fragments the bridge created _UNATTRIBUTED_PROMPT_STRIKES: dict = {} # hwnd -> consecutive sightings without attribution-_SIZED_HWNDS: set = set() # windows we already grew (size once, then respect the user)+_SIZE_ATTEMPTS: dict = {} # hwnd -> sizing attempts (Fusion restores its OWN saved+ # geometry LATE in startup and can override an early+ # resize, so we retry until the window is confirmed+ # large, then stop touching it - John's live trace+ # 2026-08-18: sized to 92% at t+75s, Fusion re-restored+ # itself at t+90s.) _NO_DONTSAVE_HWNDS: set = set() # hwnds probed once with NO Don't-Save button (UIA-less) _DONT_SAVE_LABELS = ("Don't Save", "Don’t Save") # Names the bridge generates by CONVENTION - always ours, even after a respawn wiped the@@ -5315,11 +5320,16 @@ def _seat_sweep_tick(): if _window_sizing_enabled() and _is_fusion_running(): from fusion_detect import _fusion_main_hwnd_quick as _hwq _h = _hwq()- if _h and _h not in _SIZED_HWNDS:+ _n = _SIZE_ATTEMPTS.get(_h, 0) if _h else 99+ if _h and _n < 6: # ~2 minutes of sweeps, then leave it alone forever _r = ensure_reasonable_window(hwnd=_h)- _SIZED_HWNDS.add(_h)- if _r.get("sized"):- print("[Fusion Bridge] window sized on sweep: %s" % _r.get("why"))+ _why = str(_r.get("why") or "")+ if "already" in _why: # large enough or user-maximized -> converged, stop+ _SIZE_ATTEMPTS[_h] = 99+ else:+ _SIZE_ATTEMPTS[_h] = _n + 1+ if _r.get("sized"):+ print("[Fusion Bridge] window sized on sweep (attempt %d): %s" % (_n + 1, _why)) except Exception: pass # Self-heal the badge: if driving is RECENT and Fusion is up but the badge is missing