← Commit history

v1.9.67: convergent window sizing

John Lauer ·5b00a4620b ·1mo ago ·parent cc3f71c
4 files changed +29−10
BRIDGE_VERSION+1−1
@@ -1 +1 @@-1.9.66\ No newline at end of file+1.9.67\ No newline at end of file
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