← Commit history
README.md+1−1
@@ -11,7 +11,7 @@ verbs.  ```bash adom-wiki pkg install barrett-land/adom-desktop-altium-bridge   # the skill, in the container-adom-desktop bridge_install '{"manifestUrl":"https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/0.0.42/altium-bridge-manifest.json"}'+adom-desktop bridge_install '{"manifestUrl":"https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/0.0.43/altium-bridge-manifest.json"}' adom-desktop --ai-thread "<your thread>" altium_ping '{}' ``` 
SKILL.md+36−1
@@ -12,7 +12,7 @@ forwards work into the running GUI as DelphiScript via `X2.EXE`. ## Install  ```bash-adom-desktop bridge_install '{"manifestUrl":"https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/0.0.42/altium-bridge-manifest.json"}'+adom-desktop bridge_install '{"manifestUrl":"https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/0.0.43/altium-bridge-manifest.json"}' adom-desktop --ai-thread "<your thread>" altium_ping '{}'   # -> {"altiumInstalled": true, "version": "..."} ``` @@ -65,6 +65,9 @@ Be straight with the user about the boundary rather than attempting a workaround - **No DRC or ERC.** Altium's rule engine is not scriptable through this path. - **Not concurrent.** One command at a time. Overlapping calls make Altium raise a modal   "another instance is busy" dialog that then blocks *every* subsequent command until dismissed.+  They can also wedge the bridge's own Python module-lock: `request.txt` stops updating and every+  later verb times out. Recover by killing the bridge's `python.exe` — Adom Desktop respawns it,+  and Altium does not need restarting. - **Windows only**, and only while Altium is actually running.  ## Batch output (STEP / PDF / Gerber / BOM / CPL)@@ -172,6 +175,15 @@ on the agent being reachable. Altium forwards this to the already-running instance and **loads the server lazily**, on first use — so an absent load log right after startup is normal, not a failure. +🔴 **If every verb times out, count your `X2.EXE` processes before blaming Altium.** A `-R` call is+meant to hand off to the running instance and exit immediately. When the handoff breaks, each+attempt instead leaves an orphan launcher — **~9 threads, no window** — and the script command never+reaches the real instance (the one with ~90 threads and a window). The oldest orphan blocks the+handoff and every later call queues behind it, so Altium stays perfectly usable while automation is+dead, which reads exactly like a wedged script engine and is not. Kill the windowless orphans,+keep the real instance, and dispatch recovers immediately. A stray instance launched from a+**path containing spaces** is a common way to start the pile-up.+ 🔴 **Altium's `-R` parser splits on WHITESPACE.** A path containing a space is truncated at the first space *and* the remaining tokens are treated as files to open, at which point Altium tries to start a second instance and Windows returns `ERROR_INVALID_STATE (0x8007139F)`. **Never put data on@@ -220,6 +232,29 @@ otherwise leave it `None` and composite the pads from Gerbers. The export opens the board with `ShowDocumentDontFocus` and resolves it via `GetPCBBoardByPath`, so it neither steals the user's screen nor depends on which document happens to be focused. +### `AdomBridge:ImportKiCad` — KiCad import with no wizard++`Mode=List` enumerates every importer controller and the document kinds it accepts — the fastest+way to find out whether a format is supported at all. `Mode=Import` + `File=<path>` calls+`CanImportFile` then `ImportFile`, the UI-free method that is otherwise unreachable from outside+Altium's process.++```+Mode=Import+File=C:\Users\Public\Staging\part.kicad_sym+```++Output lands in `Imported <stem>\<stem>.SchLib` beside the source, with a `.LOG` naming every+field the importer did not understand.++Two limits worth knowing before you rely on it:+- **It imports no footprints.** `.kicad_mod` / `.pretty` are unsupported; only a `.SchLib` and+  `.PrjPcb` come out. Link an existing in-house footprint afterwards with `altium_copy_sch_component`.+- **The footprint model comes out empty** — `ModelType=PCBLIB` with no `ModelName`. The `Footprint`+  value survives only as a text parameter, which Altium does not use for placement.+- **Altium 26 supports KiCad through 9.** A KiCad 10 source still imports but silently loses+  property visibility, so hidden fields land visible. See the **kicad10-to-altium** skill.+ ### `AdomBridge:Ping` — connectivity  `-RAdomBridge:Ping(Msg=hello)` writes `adombridge_ping.txt`. Use it to prove the extension loaded
altium-bridge-manifest.json+3−3
@@ -1,3 +1,3 @@-{ "manifest_version": 1, "name": "altium", "version": "0.0.42",-  "url": "https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/0.0.42/altium-bridge-v0.0.42.zip",-  "sha256": "cba583cb0e56b776769b3f0c21812fc62b3d3e974a17cc223a1fe2d22036d7b2", "size": 37658, "released_at": "2026-08-05T23:40:39Z" }+{ "manifest_version": 1, "name": "altium", "version": "0.0.43",+  "url": "https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/0.0.43/altium-bridge-v0.0.43.zip",+  "sha256": "cf4dcef4b76bfc2aec67b919d1450870bab4c04de7cfc96a3c65374e290ebcde", "size": 39197, "released_at": "2026-08-12T15:56:16Z" }
altium-bridge-v0.0.43.zipadded
⋯ 1 unchanged line ⋯
bridge-src/BRIDGE_VERSION+1−1
@@ -1 +1 @@-0.0.42+0.0.43
bridge-src/bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "altium",   "displayName": "Altium Bridge",-  "version": "0.0.42",+  "version": "0.0.43",   "description": "Drives Altium Designer from a container: build, clone and edit file-based symbol/footprint/Integrated libraries with LCSC/JLCPCB part numbers attached, and generate batch outputs (STEP, PDF, Gerber, BOM, CPL) from an OutJob. Pairs with the container-side altium-jlc orchestrator (adom-jlcpcb + chip-fetcher).",   "homepage": "https://wiki.adom.inc/adom/adom-desktop-altium-bridge",   "author": "Adom Inc.",
bridge-src/extension/AdomBridge/AdomBridge.dll
⋯ 1 unchanged line ⋯
bridge-src/extension/AdomBridge/AdomBridge.ins+5
@@ -19,3 +19,8 @@ Command     Name = 'ExportStep'     LongSummary = 'Export a PcbDoc 3D model to STEP. PcbDoc=<path>|Out=<path>' End++Command+    Name = 'ImportKiCad'+    LongSummary = 'Import a KiCad file with no wizard. Req=<request file>'+End
bridge-src/extension/AdomBridge/AdomBridge.rcs+8
@@ -13,3 +13,11 @@ PL PLAdomBridge_ExportStep         Params=''         Description='Export a PcbDoc 3D model to STEP' End++PL PLAdomBridge_ImportKiCad+        Command='AdomBridge:ImportKiCad'+        Caption='Adom Import KiCad'+        Image=''+        Params=''+        Description='Import a KiCad file with no wizard'+End
package.json+5−3
@@ -1,8 +1,8 @@ {   "slug": "adom-desktop-altium-bridge",-  "version": "0.0.42",+  "version": "0.0.43",   "type": "app",-  "description": "Adom Desktop bridge for Altium Designer: file-based symbol/footprint/IntLib authoring with LCSC/JLCPCB part numbers, Gerber/BOM/CPL batch output, and an in-process .NET extension that adds parameterized headless verbs including STEP export with hole and copper options.",+  "description": "Adom Desktop bridge for Altium Designer: file-based symbol/footprint/IntLib authoring with LCSC/JLCPCB part numbers, Gerber/BOM/CPL batch output, and an in-process .NET extension adding parameterized headless verbs - STEP export with hole and copper options, and KiCad import with no wizard.",   "tags": [     "app",     "adom-desktop",@@ -28,7 +28,9 @@     "altium extension",     "install altium extension",     "altium step export",-    "run an altium outjob"+    "run an altium outjob",+    "import kicad into altium",+    "altium kicad importer"   ],   "discovery_pitch": "Use when the user wants Claude to author or edit Altium libraries, or to generate STEP/PDF/Gerber/BOM/CPL from an Altium board on their Windows machine.",   "sample_prompts": [
page.json+11−7
@@ -1,8 +1,8 @@ {   "slug": "adom-desktop-altium-bridge",-  "version": "0.0.42",+  "version": "0.0.43",   "type": "app",-  "description": "Adom Desktop bridge for Altium Designer \u2014 build and edit file-based symbol/footprint/Integrated libraries with LCSC/JLCPCB part numbers attached, and generate batch outputs (STEP, PDF, Gerber, BOM, CPL) from an OutJob, by driving Altium via DelphiScript.",+  "description": "Adom Desktop bridge for Altium Designer: file-based symbol/footprint/IntLib authoring with LCSC/JLCPCB part numbers, Gerber/BOM/CPL batch output, and an in-process .NET extension adding parameterized headless verbs - STEP export with hole and copper options, and KiCad import with no wizard.",   "tags": [     "app",     "adom-desktop",@@ -18,6 +18,7 @@   },   "needs_sudo": false,   "hero": {+    "type": "image",     "path": "docs/hero.png"   },   "author": {@@ -25,13 +26,16 @@     "email": "[email protected]"   },   "discovery_triggers": [-    "add a part to my altium library",     "drive altium from claude",     "altium bridge",-    "export step from altium",+    "export step from altium headless",+    "add a part to my altium library",+    "altium extension",+    "install altium extension",+    "altium step export",     "run an altium outjob",-    "build an altium footprint",-    "altium symbol library"+    "import kicad into altium",+    "altium kicad importer"   ],   "discovery_pitch": "Use when the user wants Claude to author or edit Altium libraries, or to generate STEP/PDF/Gerber/BOM/CPL from an Altium board on their Windows machine.",   "sample_prompts": [@@ -48,4 +52,4 @@       "prompt": "Is the Altium bridge connected and what version is it?"     }   ]-}+}\ No newline at end of file