← Commit history

#signin capture reliability: copy History -wal/-shm so a just-opened authorize URL is visible (Chrome buffers writes), widen window to 45min (URL stays valid while Fusion waits on the request_id)

John Lauer ·11c0dd753c ·2mo ago ·parent e251fa4
5 files changed +18−11
BRIDGE_VERSION+1−1
@@ -1 +1 @@-1.6.92+1.6.93
adom-bridge-fusion-manifest.json+5−5
@@ -1,13 +1,13 @@ {   "manifest_version": 1,   "name": "fusion360",-  "version": "1.6.92",-  "url": "https://wiki.adom.inc/download/adom/adom-desktop-fusion-bridge/1.6.92/adom-bridge-fusion-v1.6.92.zip",-  "sha256": "8b5b1a628b0bbf7b5931732c02ae00a236e07c8d9ffde827b0a7bd0c777e68e8",-  "size": 479701,+  "version": "1.6.93",+  "url": "https://wiki.adom.inc/download/adom/adom-desktop-fusion-bridge/1.6.93/adom-bridge-fusion-v1.6.93.zip",+  "sha256": "767d61e543c394e1b9c04478a5c268b7f0568b16dfe6ede8b29775df546c2650",+  "size": 479846,   "verbPrefixes": [     "fusion_"   ],   "healthEndpoint": "/status",-  "released_at": "2026-07-21T01:59:11Z"+  "released_at": "2026-07-21T02:04:54Z" }\ No newline at end of file
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "fusion360",   "displayName": "Autodesk Fusion 360",-  "version": "1.6.92",+  "version": "1.6.93",   "description": "Drive Autodesk Fusion 360 from the cloud: launch Fusion, electronics board layout, design rules, exports (STEP/IGES/STL/3MF/USDZ/OBJ/DXF/DWG/Gerbers/BOM/CPL), fast APS server-indexed cloud search plus browse/recent/file-info/versions, cloud file download/upload and folder creation, and in-app parametric modeling (fusion_run_modeling_script). Never-charge: APS calls are capped to the free tier.",   "homepage": "https://wiki.adom.inc/adom/adom-desktop-fusion-bridge",   "author": "Adom Inc.",
page.json+2−3
@@ -1,6 +1,6 @@ {   "slug": "adom-desktop-fusion-bridge",-  "version": "1.6.92",+  "version": "1.6.93",   "type": "app",   "description": "Installs this bridge's skills into your container so your AI knows how to drive the bridge. The bridge runtime itself is loaded by Adom Desktop from the release zip.",   "dependencies": {@@ -74,6 +74,5 @@     "set up the fusion bridge"   ],   "discovery_pitch": "Use the Adom Desktop Fusion 360 bridge when the user wants to DRIVE Autodesk Fusion 360 from the cloud: open/search their team's Fusion cloud designs, lay out a PCB or do electronics, export STEP/IGES/STL/Gerbers/BOM, or build a component library with real rendering 3D. It runs Fusion on the user's own machine via Adom Desktop. NOT for web/browser/login/form-filling (that's the native-browser extension) and NOT for KiCad (that's the kicad bridge).",-  "brief": "Drive Autodesk Fusion 360 from the cloud via Adom Desktop: component libraries, IPC package generation, board layout, exports (STEP/Gerbers/BOM/CPL), fast APS cloud search, and parametric modeling.",-  "visibility": "public"+  "brief": "Drive Autodesk Fusion 360 from the cloud via Adom Desktop: component libraries, IPC package generation, board layout, exports (STEP/Gerbers/BOM/CPL), fast APS cloud search, and parametric modeling." }\ No newline at end of file
server.py+9−1
@@ -3672,7 +3672,7 @@ def _remember_signin_profile(profile: str):         pass  -def _chrome_authorize_urls(max_age_min: int = 12):+def _chrome_authorize_urls(max_age_min: int = 45):     """Scan Chrome + Edge profile History DBs for RECENT Autodesk-desktop OAuth authorize     URLs (the Fusion Identity SDK ones - marked by `idsdk` / redirect to idmgr/callback). @@ -3702,7 +3702,15 @@ def _chrome_authorize_urls(max_age_min: int = 12):             tmp = os.path.join(tempfile.gettempdir(), "adom_hist_%s_%s.db" % (browser, prof_dir))             try:                 shutil.copy2(hist, tmp)  # copy first - Chrome keeps History locked+                # Chrome buffers recent rows in the -wal; copy it too or a fresh authorize URL+                # is invisible (this was the bug: a just-opened sign-in did not appear).+                for ext in ("-wal", "-shm"):+                    if os.path.exists(hist + ext):+                        try: shutil.copy2(hist + ext, tmp + ext)+                        except Exception: pass                 con = sqlite3.connect(tmp)+                try: con.execute("PRAGMA journal_mode=WAL")+                except Exception: pass                 rows = con.execute(                     "SELECT url, last_visit_time FROM urls "                     "WHERE url LIKE '%developer.api.autodesk.com/authentication/v2/authorize%' "