← Commit history

Publish 1.9.340

John Lauer ·5a7dcc3333 ·1mo ago ·parent 8086eb6
3 files changed +22−12
.release-page-head+1−1
@@ -1 +1 @@-0c3fadffc4ffebde92af8c3c294b17cf82cd1b7d\ No newline at end of file+8086eb6faf7f37691ec86eba9425a7e38b7e53d0\ No newline at end of file
fusion_helper.py+14−1
@@ -45,6 +45,13 @@ GetWindowThreadProcessId = ctypes.windll.user32.GetWindowThreadProcessId WNDENUMPROC = ctypes.WINFUNCTYPE(ctypes.wintypes.BOOL, ctypes.wintypes.HWND, ctypes.wintypes.LPARAM)  ++# Console tools (tasklist / taskkill) spawned WITHOUT this flag flash a visible terminal+# window on the user's screen for ~50ms - and some of these run on POLLS, so the user sees+# rhythmic blips while "nothing" is happening (John, 2026-09-01: "really annoying to the+# human"). Every console-tool spawn in this codebase must carry it.+_NO_WINDOW = subprocess.CREATE_NO_WINDOW if hasattr(subprocess, "CREATE_NO_WINDOW") else 0+ def _get_fusion_processes() -> list[dict]:     """Get all running Fusion-related processes using tasklist."""     result = []@@ -53,6 +60,7 @@ def _get_fusion_processes() -> list[dict]:             ["tasklist", "/FO", "CSV", "/NH"],             stderr=subprocess.DEVNULL,             text=True,+            creationflags=_NO_WINDOW,         )         fusion_names = {"Fusion360.exe", "FusionLauncher.exe", "Fusion.exe",                         "FusionService.exe", "FusionCEF.exe", "Fusion360Helper.exe"}@@ -113,6 +121,7 @@ def _is_fusion_pid(pid: int) -> bool:             stderr=subprocess.DEVNULL,             text=True,             timeout=5,+            creationflags=_NO_WINDOW,         )         fusion_names = {"Fusion360.exe", "FusionLauncher.exe", "Fusion.exe"}         for name in fusion_names:@@ -132,7 +141,8 @@ def _force_kill_pid(pid: int):     """Force kill a process by PID."""     try:         subprocess.run(["taskkill", "/F", "/PID", str(pid)],-                       stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)+                       stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL,+                       creationflags=_NO_WINDOW)     except Exception:         pass @@ -230,10 +240,13 @@ def cmd_start(wait_for_addin: bool = True, timeout: int = 120):         exe_path = info["exe_path"]         print(f"Launching: {exe_path}")         try:+            # Fusion itself SHOULD show a window; _NO_WINDOW only suppresses the+            # console that would otherwise ride along with the spawn.             subprocess.Popen(                 [exe_path],                 stdout=subprocess.DEVNULL,                 stderr=subprocess.DEVNULL,+                creationflags=_NO_WINDOW,             )         except Exception as e:             print(f"ERROR: Failed to launch: {e}")
page.json+7−10
@@ -11,10 +11,6 @@     "uninstall": "./uninstall.sh"   },   "tags": [-    "ab",-    "bridge",-    "fusion",-    "desktop-app",     "fusion360",     "autodesk",     "cad",@@ -79,10 +75,7 @@     "build a basic parts library",     "add a 3d model to a component",     "make a fusion 360 library with 3d",-    "set up the fusion bridge",-    "fusion dashboard",-    "fusion status page",-    "open the fusion launch page"+    "set up the fusion bridge"   ],   "discovery_pitch": "Use the Adom Bridge 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 Bridge. 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 Bridge: component libraries, IPC package generation, board layout, exports (STEP/Gerbers/BOM/CPL), fast APS cloud search, and parametric modeling.",@@ -111,5 +104,9 @@       "label": "Part volume",       "prompt": "How much material does each printed part in this assembly use?"     }-  ]-}+  ],+  "author": {+    "name": "John Lauer",+    "email": "[email protected]"+  }+}\ No newline at end of file