← Commit history

Update 4 file(s)

John Lauer ·109b88b4cc ·1mo ago ·parent c3c9b54
4 files changed +39−16
BRIDGE_VERSION+1−1
@@ -1 +1 @@-0.9.201\ No newline at end of file+0.9.202\ No newline at end of file
adom-bridge-kicad-manifest.json+5−5
@@ -1,15 +1,15 @@ {   "manifest_version": 1,   "name": "kicad",-  "version": "0.9.201",-  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.201/adom-bridge-kicad-v0.9.201.zip",-  "sha256": "ccd4b1259f274c7c23d843d3477f905317a264ee90173cf6c692a64cefd3873f",-  "size": 471341,+  "version": "0.9.202",+  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.202/adom-bridge-kicad-v0.9.202.zip",+  "sha256": "da428b6cb0ecff185fa43e6918487362371f8b0039d3abaac2af3783755f13fe",+  "size": 471755,   "verbPrefixes": [     "kicad_"   ],   "healthEndpoint": "/status",-  "released_at": "2026-08-20T09:55:00Z",+  "released_at": "2026-08-20T11:05:00Z",   "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png",   "languages": [     "Python",
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "kicad",   "displayName": "KiCad EDA",-  "version": "0.9.201",+  "version": "0.9.202",   "description": "Reverse bridge for KiCad \u2014 board/schematic introspection, lint via kicad-cli, plugin install, multi-instance probe, in-process DRC.",   "homepage": "https://wiki.adom.inc/adom/adom-bridge",   "author": "Adom Inc.",
handlers/show.py+32−9
@@ -142,7 +142,28 @@ def _capture_evidence(win, label: str) -> dict | None:         if not hwnd:             return None         from handlers.kicad_ui import _screenshot_hwnd-        shot = _screenshot_hwnd(hwnd, label=label)+        # WAIT FOR THE CANVAS TO PAINT before calling this evidence.+        #+        # 0.9.202. The blank thumbnails were not a GPU problem and not a capture+        # problem - they were a TIMING problem, and mine. A show_* verb confirms+        # the window title and we photographed it immediately, while KiCad was+        # still loading libraries (the status bar literally reads "Loading+        # Footprint Li..."). The GL canvas had not painted yet, so the shot+        # showed correct chrome around an empty rectangle. Proof: the same part,+        # same box, same zoom (Z 30.61) that captured blank photographs fully+        # drawn once KiCad settles.+        #+        # So poll rather than assume. Each attempt is a real capture, and the+        # canvas check tells us whether it is worth keeping.+        shot = None+        for attempt in range(8):+            shot = _screenshot_hwnd(hwnd, label=label)+            if not shot or not shot.get("success"):+                return None+            c = shot.get("canvas") or {}+            if not c.get("checked") or c.get("rendered"):+                break+            time.sleep(1.0)         if not shot or not shot.get("success"):             return None         canvas = shot.get("canvas") or {}@@ -163,16 +184,18 @@ def _capture_evidence(win, label: str) -> dict | None:         # speak for the verb.         if canvas.get("checked"):             ev["canvasRendered"] = bool(canvas.get("rendered"))+            ev["canvasWaitedSec"] = attempt             if not canvas.get("rendered"):                 ev["_canvasHint"] = (-                    "The window is correct but its drawing canvas came back BLANK "-                    f"({canvas.get('distinctColors')} distinct colour(s)). This is not a "-                    "capture fault - KiCad draws the canvas through OpenGL, which "-                    "produces no picture on a host with no usable GPU or no active "-                    "console session (a locked or disconnected desktop does it too). "-                    "Treat this thumbnail as proof of the WINDOW, not of the part. "-                    "kicad_enable_software_opengl is the last-resort fix on a box "-                    "that genuinely has no GPU."+                    "The window is correct but its drawing canvas is still BLANK "+                    f"({canvas.get('distinctColors')} distinct colour(s)) after waiting "+                    f"{attempt}s for it to paint. Usually this just means KiCad is still "+                    "loading libraries - check the status bar in the image. If it never "+                    "paints, the canvas is an OpenGL surface and yields no picture on a "+                    "host with no usable GPU or no active console session; "+                    "kicad_enable_software_opengl is the last-resort fix there. "+                    "Either way, treat this thumbnail as proof of the WINDOW, not of "+                    "the part."                 )         return ev     except Exception: