← Commit history

v0.9.122: background demo beats sweep modal dialogs before retrying (staged calls get the dispatcher's sweep, the job thread's internal steps did not - a 10.0.5 editor-open dialog stalled beats 1-3)

John Lauer ·8182f2cdf9 ·1mo ago ·parent d7ec3a6
5 files changed +21−7
BRIDGE_VERSION+1−1
@@ -1 +1 @@-0.9.121+0.9.122
adom-bridge-kicad-manifest.json+5−5
@@ -1,15 +1,15 @@ {   "manifest_version": 1,   "name": "kicad",-  "version": "0.9.121",-  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.121/adom-bridge-kicad-v0.9.121.zip",-  "sha256": "c7821a33815e60a5f6b5f5d6b605ba82f7280ac9dde5ea30ea8ed0b707fdb0fb",-  "size": 411783,+  "version": "0.9.122",+  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.122/adom-bridge-kicad-v0.9.122.zip",+  "sha256": "f6ef6aac978f097aaea1340fa7ec2215d6ab7fc2d7912e69a48ad9dd21347041",+  "size": 412059,   "verbPrefixes": [     "kicad_"   ],   "healthEndpoint": "/status",-  "released_at": "2026-08-16T17:41:36Z",+  "released_at": "2026-08-16T17:48:35Z",   "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png",   "languages": [     "Python",
adom-bridge-kicad-v0.9.122.zipadded
⋯ 1 unchanged line ⋯
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "kicad",   "displayName": "KiCad EDA",-  "version": "0.9.121",+  "version": "0.9.122",   "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/demo.py+14
@@ -421,6 +421,7 @@ def _run_step(kicad_info: dict, step: str, prep: dict) -> dict: # ── #24: long-running background demo with STRUCTURED PROGRESS ──────────────── # A web front-end wants a real progress bar (percent + ETA), not a spinner, and # the bridge is the only party that knows its own timings. One job at a time.+import sys as _sys import threading as _threading  _BEAT_EST = {"prepare": 18, "symbol": 12, "footprint": 12, "part_3d": 16,@@ -503,6 +504,19 @@ def _run_demo_background(kicad_info: dict) -> None:                         elapsedSec=round(_t.monotonic() - t0))             r = _run_step(kicad_info, s_, prep)             if not r.get("ok"):+                # 10.0.5 regression (found live 2026-08-16): a modal dialog at+                # editor-open stalled the first beats. STAGED calls get the+                # dispatcher's post-verb dialog sweep; this thread's internal+                # steps did NOT — sweep before retrying, and log what blocked.+                try:+                    from handlers.close_windows import auto_sweep_dialogs+                    swept = auto_sweep_dialogs(kicad_info, screenshot=False,+                                               settle_rounds=2)+                    if swept and (swept.get("dismissed") or swept.get("dialogs")):+                        print(f"[demo] beat '{s_}' blocked by dialog(s): "+                              f"{str(swept)[:300]}", file=_sys.stderr)+                except Exception:+                    pass                 _t.sleep(3)                 r = _run_step(kicad_info, s_, prep)                 r["retried"] = True