← Commit history

0.2.18: test_board writes each part name on the Top Overlay under its footprint

John Lauer ·5ff5afd95a ·1mo ago ·parent 20798a1
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"   ]-}\ No newline at end of file+}
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",