← 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.47/altium-bridge-manifest.json"}'+adom-desktop bridge_install '{"manifestUrl":"https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/0.0.48/altium-bridge-manifest.json"}' adom-desktop --ai-thread "<your thread>" altium_ping '{}' ``` 
SKILL.md+1−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.47/altium-bridge-manifest.json"}'+adom-desktop bridge_install '{"manifestUrl":"https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/0.0.48/altium-bridge-manifest.json"}' adom-desktop --ai-thread "<your thread>" altium_ping '{}'   # -> {"altiumInstalled": true, "version": "..."} ``` 
altium-bridge-manifest.json+3−3
@@ -1,3 +1,3 @@-{ "manifest_version": 1, "name": "altium", "version": "0.0.47",-  "url": "https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/0.0.47/altium-bridge-v0.0.47.zip",-  "sha256": "0a1d213e2a45319507d2c68aa572abeb6d5b1045b93d21815eed57e7d2e37ae7", "size": 41686, "released_at": "2026-08-12T17:19:37Z" }+{ "manifest_version": 1, "name": "altium", "version": "0.0.48",+  "url": "https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/0.0.48/altium-bridge-v0.0.48.zip",+  "sha256": "f2fd005dc9efa0715751cedb00193982ef6d562046438674d8382a06bb341792", "size": 42219, "released_at": "2026-08-12T17:28:59Z" }
altium-bridge-v0.0.48.zipadded
⋯ 1 unchanged line ⋯
bridge-src/BRIDGE_VERSION+1−1
@@ -1 +1 @@-0.0.47+0.0.48
bridge-src/__pycache__/server.cpython-312.pyc
⋯ 1 unchanged line ⋯
bridge-src/addin/AdomAltium/AdomAltium.pas+34−2
@@ -1465,12 +1465,13 @@ end; procedure CmdSetTextStyle; var     SchPath, CompRef, SavedStr : String;-    FontId, Colr, PinColr, nTxt, nCmp, nPin : Integer;+    FontId, Colr, PinColr, BodyColr, nTxt, nCmp, nPin, nBody : Integer;     Lib   : ISch_Lib;     Cmp   : ISch_Component;     It    : ISch_Iterator;     P     : ISch_Parameter;     Pin   : ISch_Pin;+    G     : ISch_GraphicalObject;     names : TStringList;     i     : Integer;     SavedOK : Boolean;@@ -1481,13 +1482,15 @@ begin     Colr    := StrToIntDef(Req.Values['color'], 8388608);     { Altium draws pins BLACK (0) by default, not the navy used for parameter text. }     PinColr := StrToIntDef(Req.Values['pincolor'], 0);+    { Altium draws symbol bodies BLUE; KiCad's maroon imports as 132. -1 = leave alone. }+    BodyColr := StrToIntDef(Req.Values['bodycolor'], 16711680);     if SchPath = '' then begin RespErr('missing schlib'); Exit; end;      GStage := 'open schlib';     Lib := OpenSchLibDoc(SchPath);     if Lib = nil then begin RespErr('could not open: ' + SchPath); Exit; end; -    nTxt := 0; nCmp := 0; nPin := 0;+    nTxt := 0; nCmp := 0; nPin := 0; nBody := 0;     names := TStringList.Create;     try         GStage := 'collect components';@@ -1573,6 +1576,33 @@ begin                 finally                     Cmp.SchIterator_Destroy(It);                 end;++                { Symbol body outline. KiCad draws passives in MAROON (#840000, which+                  arrives as Altium colour 132); Altium's own passives are drawn in pure+                  BLUE (16711680 = $FF0000 in BGR = RGB(0,0,255)). Measured on a hand-made+                  part: 8 polylines at 16711680. Without this an imported symbol is+                  instantly distinguishable from every other symbol on the sheet.+                  Pass bodycolor=-1 to leave graphics untouched, for a symbol whose+                  colours are deliberate (an LED triangle, a polarity mark). }+                if BodyColr >= 0 then+                begin+                    GStage := 'restyle symbol body';+                    It := Cmp.SchIterator_Create;+                    It.AddFilter_ObjectSet(MkSet(eRectangle, ePolyline, ePolygon, eEllipse,+                                                 eArc, eLine, eRoundRectangle, eBezier,+                                                 eEllipticalArc, ePie));+                    try+                        G := It.FirstSchObject;+                        while G <> nil do+                        begin+                            G.Color := BodyColr;+                            Inc(nBody);+                            G := It.NextSchObject;+                        end;+                    finally+                        Cmp.SchIterator_Destroy(It);+                    end;+                end;             end;         end;     finally@@ -1588,6 +1618,8 @@ begin            ', "pins": ' + IntToStr(nPin) +            ', "fontId": ' + IntToStr(FontId) + ', "color": ' + IntToStr(Colr) +            ', "pinColor": ' + IntToStr(PinColr) ++           ', "bodyPrimitives": ' + IntToStr(nBody) ++           ', "bodyColor": ' + IntToStr(BodyColr) +            ', "saved": ' + SavedStr); end; 
bridge-src/bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "altium",   "displayName": "Altium Bridge",-  "version": "0.0.47",+  "version": "0.0.48",   "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/server.py+1−1
@@ -186,7 +186,7 @@ def handle_set_text_style(args: dict) -> dict:     Pin name/number fonts follow the document default and pins are set BLACK     (pincolor=0), which is Altium's own pin colour rather than the navy used for     parameter text. component='' or '*' restyles every component in the library."""-    keys = ("schlib", "component", "fontid", "color", "pincolor")+    keys = ("schlib", "component", "fontid", "color", "pincolor", "bodycolor")     return addin_call("set_text_style", {k: args.get(k) for k in keys},                       timeout=args.get("timeout", 180)) 
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "adom-desktop-altium-bridge",-  "version": "0.0.47",+  "version": "0.0.48",   "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 adding parameterized headless verbs - STEP export with hole and copper options, and KiCad import with no wizard.",   "tags": [
page.json+11−7
@@ -1,8 +1,8 @@ {   "slug": "adom-desktop-altium-bridge",-  "version": "0.0.47",+  "version": "0.0.48",   "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