app
Altium - the Altium Bridge
Public Made by Adomby adom
Adom Bridge for Altium Designer: a resident DelphiScript agent gives the AI eval, the 1,100-command process launcher, all 8 EDA surfaces with screenshots, compile/ERC, DRC, OutJob outputs, native SchLib/PcbLib authoring with STEP 3D bodies, and dialog handling by PID.
← Commit history
0.2.18: test_board writes each part name on the Top Overlay under its footprint
8 files changed
+23−7
CHANGELOG.md+3@@ -1,5 +1,8 @@ # Changelog +## 0.2.18 (2026-09-20)+- `altium_test_board` writes each part's name on the Top Overlay under its footprint (35 mil stroke text, centred, 2.4 mm below the part centre) so a human reading the board knows which chip is which (John, 2026-09-20: "place onto the silkscreen the name of the chip at that spot on the board"). Same rule as the KiCad and Fusion boards the ToF demo makes. Agent template only.+ ## 0.2.17 (2026-09-19) - `altium_place_on_sch` sizes the sheet FROM the parts: pass 1 measures every symbol's bounding box (pins included, +250 mil a side for pin numbers), the custom sheet is the row plus 500 mil between parts and 600 mil margins (never smaller than A4 landscape, 11500 x 7600), any slack is spread evenly, designators sit above and part numbers below each body. The `SheetSizeX/Y` read-back is gone: on ADDevelop it reports the 9500 x 7500 default after a custom size is set, which is what squeezed three parts on top of each other in 0.2.16. John's two reviews in one afternoon: "no real EE would smoosh symbols together, they'd space them out", then "a bit closer together so we get a better screenshot" - the numbers above are the ones he accepted.
bridge-rs/Cargo.toml+1−1@@ -1,6 +1,6 @@ [package] name = "altium-bridge"-version = "0.2.17"+version = "0.2.18" edition = "2021" description = "Adom altium-bridge — the bridge process, in Rust. Calls ab's verbs for the desktop; speaks file IPC to the resident DelphiScript agent inside Altium." license = "MIT"
bridge-rs/src/main.rs+1−1@@ -25,7 +25,7 @@ mod win32; use std::time::Instant; use tiny_http::{Header, Method, Response, Server}; -pub const BRIDGE_VERSION: &str = "0.2.17";+pub const BRIDGE_VERSION: &str = "0.2.18"; fn json_response(status: u16, body: &serde_json::Value) -> Response<std::io::Cursor<Vec<u8>>> { let data = serde_json::to_vec(body).unwrap_or_else(|_| b"{}".to_vec());
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "altium-bridge",- "version": "0.2.17",+ "version": "0.2.18", "type": "app", "description": "Skills for your container so your AI knows how to drive the Altium Designer bridge (altium_* verbs). The bridge runtime itself is the release zip; Adom Bridge loads that.", "tags": [
page.json+2−2@@ -4,7 +4,7 @@ "type": "app", "title": "Altium - the Altium Bridge", "brief": "Adom Bridge for Altium Designer: a resident DelphiScript agent gives the AI eval, the 1,100-command process launcher, all 8 EDA surfaces with screenshots, compile/ERC, DRC, OutJob outputs, native SchLib/PcbLib authoring with STEP 3D bodies, and dialog handling by PID.",- "version": "0.2.17",+ "version": "0.2.18", "hero": { "type": "image", "path": "screenshots/hero.png"@@ -139,4 +139,4 @@ "skills/altium-wiki-import/SKILL.md", "uninstall.sh" ]-}+}
src/BRIDGE_VERSION+1−1@@ -1 +1 @@-0.2.17+0.2.18
src/agent/AdomAgent.pas.tmpl+13@@ -2939,6 +2939,7 @@ Var BO : IPCB_BoardOutline; Seg : TPolySegment; Trk : IPCB_Track;+ Txt : IPCB_Text; Net : IPCB_Net; GIt : IPCB_GroupIterator; Pad : IPCB_Pad;@@ -3018,6 +3019,18 @@ Begin End; CX := (WC * (K + 1)) Div (FpList.Count + 1); Inst := PlaceCopy(Board, LibFp, CX, CY);+ { Part name on the top overlay under each footprint so a human reading the board+ knows which chip is which (John, 2026-09-20). 35 mil stroke text, ~21 mil per+ character, centred on the part; 2.4 mm below its centre clears a 3 mm tall part. }+ Txt := PCBServer.PCBObjectFactory(eTextObject, eNoDimension, eCreate_Default);+ Txt.Layer := eTopOverlay;+ Txt.Text := LibFp.Name;+ Txt.Size := MilsToCoord(35);+ Txt.Width := MilsToCoord(5);+ Txt.XLocation := CX - MilsToCoord((Length(LibFp.Name) * 21) Div 2);+ Txt.YLocation := CY - MMsToCoord(2.4);+ Board.AddPCBObject(Txt);+ PCBServer.SendMessageToRobots(Board.I_ObjectAddress, c_Broadcast, PCBM_BoardRegisteration, Txt.I_ObjectAddress); End; AssignPadNets(Board, Inst, Param(Lines, 'assigns')); { stub tracks: des=x,y (mm from centre) -> a track from that pad to the point, on its net }
src/bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "altium", "displayName": "Altium Designer",- "version": "0.2.17",+ "version": "0.2.18", "description": "Drive Altium Designer from Adom: a resident DelphiScript agent (eval + the 1,100-command process launcher), the X2 -R command line, UIA over the VCL shell, dialogs by PID, screenshots of every Altium window, and Altium 365.", "homepage": "https://wiki.adom.inc/adom/altium-bridge", "docs": "https://wiki.adom.inc/adom/altium-bridge",