app
KiCad - the KiCad Bridge
Public Made by Adomby adom
Reference implementation of the KiCad bridge: multi-instance Python server, forward path via kicad-cli, reverse path via in-process plugin. Most complex of the three bundled bridges.
← Commit history
Update 4 file(s)
4 files changed
+21−7
BRIDGE_VERSION+1−1@@ -1 +1 @@-0.9.208+0.9.209
adom-bridge-kicad-manifest.json+5−5@@ -1,15 +1,15 @@ { "manifest_version": 1, "name": "kicad",- "version": "0.9.208",- "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.208/adom-bridge-kicad-v0.9.208.zip",- "sha256": "45431a4e129667b0daba2dbdd923361989ddc80b9d14c6739db117f36c2885c5",- "size": 477320,+ "version": "0.9.209",+ "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.209/adom-bridge-kicad-v0.9.209.zip",+ "sha256": "4386290016fec8694f8d2f384c1698ce0e4fae92c1249a499b6349599ce82aed",+ "size": 477661, "verbPrefixes": [ "kicad_" ], "healthEndpoint": "/status",- "released_at": "2026-08-20T13:35:00Z",+ "released_at": "2026-08-20T14: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.208",+ "version": "0.9.209", "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/kicad_ui.py+14@@ -96,6 +96,11 @@ _LEGACY_SCREENSHOT_DIRS = ("C:/tmp/adom-desktop-screenshots", "C:/tmp/ad-shots") _SHOT_MAX_AGE_SEC = 48 * 3600 # two days of history is plenty to debug with _SHOT_MAX_FILES = 300 # and a hard ceiling for a heavy test day+# 0.9.209 (#42): a file COUNT was the wrong control. John measured 329 files at+# 60.8 MB where the old captures were 226 files at 37.5 MB - evidence shots and+# stepShots are simply bigger, so the same count now costs far more disk. What a+# user actually cares about is megabytes, so cap those too.+_SHOT_MAX_BYTES = 40 * 1024 * 1024 _last_prune = 0.0 @@ -136,6 +141,15 @@ def prune_screenshots(force: bool = False) -> dict: keep = [e for e in entries if e not in doomed] if len(keep) > _SHOT_MAX_FILES: doomed += keep[: len(keep) - _SHOT_MAX_FILES]+ keep = keep[len(keep) - _SHOT_MAX_FILES:]+ # Then trim by SIZE, oldest first, so one heavy run cannot leave+ # tens of megabytes behind just because it stayed under the count.+ total = sum(sz for _mt, sz, _fp in keep)+ i = 0+ while total > _SHOT_MAX_BYTES and i < len(keep):+ doomed.append(keep[i])+ total -= keep[i][1]+ i += 1 for _mt, size, fp in doomed: try: os.remove(fp)