← Commit history

v0.9.132: every window-spawning response now declares openedInBackground:true + _foregroundHint (how to foreground: foreground:true + foregroundReason, 3s caption) - the caller is ALWAYS told, per John

John Lauer ·f6c6add754 ·1mo ago ·parent 0f86a3a
5 files changed +18−9
BRIDGE_VERSION+1−1
@@ -1 +1 @@-0.9.131+0.9.132
adom-bridge-kicad-manifest.json+5−5
@@ -1,15 +1,15 @@ {   "manifest_version": 1,   "name": "kicad",-  "version": "0.9.131",-  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.131/adom-bridge-kicad-v0.9.131.zip",-  "sha256": "c3de9c82227d4510c83e5f14eaa9afe21ab084facb2ac7883bc34a9a7a6d8113",-  "size": 413883,+  "version": "0.9.132",+  "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.132/adom-bridge-kicad-v0.9.132.zip",+  "sha256": "dc819a2aeac90a41f6cc25288fabf8859229a097457409b0d695291dd0487151",+  "size": 414054,   "verbPrefixes": [     "kicad_"   ],   "healthEndpoint": "/status",-  "released_at": "2026-08-16T20:02:28Z",+  "released_at": "2026-08-16T20:18:14Z",   "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png",   "languages": [     "Python",
adom-bridge-kicad-v0.9.132.zipadded
⋯ 1 unchanged line ⋯
bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "kicad",   "displayName": "KiCad EDA",-  "version": "0.9.131",+  "version": "0.9.132",   "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.",
server.py+11−2
@@ -819,12 +819,21 @@ def dispatch_command(command: str, args: dict) -> dict:                 pass             if isinstance(result, dict):                 result["_broughtToUser"] = bool(_shown)-                if not _shown and isinstance(result, dict):-                    result.setdefault("_hint", "")+                if not _shown:                     result["_foregroundRefused"] = ("foreground requested without foregroundReason - "                                                    "pass foregroundReason:'<why the user needs to see this>' "                                                    "and the bridge will caption it for 3s, then foreground.")             _user_fg = None  # don't also restore-away what the user just asked to see+        elif command in _SPAWNS_WINDOW and isinstance(result, dict) and result.get("success", True):+            # John's contract (2026-08-16): ALWAYS tell the calling AI that the+            # window opened in the BACKGROUND and exactly how to foreground it.+            result.setdefault("openedInBackground", True)+            result.setdefault("_foregroundHint",+                              "Window opened in the BACKGROUND - the user's foreground was not "+                              "touched. To show it to the user: re-call with foreground:true AND "+                              "foregroundReason:'<why the user needs to see this>'. The bridge "+                              "captions the reason via an ab toast for 3 seconds, then brings the "+                              "window forward. Foreground without a reason is refused.")     except Exception:         pass