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
v0.2.40 (insiders): test_board/place_on_sch append to an existing board/sheet (#11); foreground etiquette on every driving verb + the altium_panel tab verb (#12).
4 files changed
+12−3
CHANGELOG.md+8@@ -1,5 +1,13 @@ # Changelog +## 0.2.40 (2026-09-21)+The two asks still open from John's ToF session (adom/altium-bridge#11 and #12), on top of what 0.2.13-0.2.39 already covered.++- **Append to an EXISTING board or sheet (#11).** `altium_test_board {pcbPath}` and `altium_place_on_sch {schPath}` now OPEN the document when the path already exists and ADD the parts: placed to the right of the current ones (board: right of the rightmost anchor, advancing by 1.5x each footprint's measured pad extent; sheet: 4000 mil right of the rightmost symbol, in line with the existing row), designators continuing from the existing count (U4, U5, ...). The board keeps its outline and layers (wMm/hMm ignored; resize with altium_board_shape); the sheet keeps its size and title block. Replies carry `appended` and `existingParts`. A new path still creates, exactly as before.+- **Foreground etiquette on EVERY driving verb (#12).** The dispatch chokepoint now remembers the window the user is in before each driving verb and, when Altium's process holds the foreground afterwards where it did not before, hands the user's window straight back - the open/close_document, place_on_sch, install_library, agent start/stop and run_command steals John measured are all covered by the one wrapper. Replies say so: `windowEtiquette: background`, plus `foregroundReturnedTo` when a steal was reclaimed. A user deliberately on some OTHER window mid-verb is left where they went; verbs whose point is the screen (foreground, launch, demo, install, close) are exempt.+- **New verb `altium_panel {name, ensureId?}` (#12's ganged-up view).** Activates a docked panel TAB (SCH Library, PCB Library, Components, ...) in the background: UIA SelectionItemPattern on the dock tab, InvokePattern fallback, verified by reading the tab's own selection state - no server process can do this (Client:CustomizeResources only ensures the panel exists; a plain click does not switch tabs, measured 2026-09-02). Honest failure modes: `ui_select_gated` when ab's shell grant is off (adom/adom-bridge#123), `panel_not_selected` with the attempted lanes otherwise.++ ## 0.2.39 (2026-09-21) - **`selftest_script_error` gets an honest timeout budget (60 s → 180 s).** It is the slowest verb in the catalog by design — it halts the engine, waits for the halt to be noticed, recovers it and verifies by restarting the agent — and Altium Designer Develop parks SILENTLY, so the halt is only seen when the wait expires: measured 18 s on one run and over 60 s on the next, on the same machine. The bridge was cutting its own safety-net test off at 60 s and reporting a timeout, which reads as "the net is broken" when it is not. A timeout here now means something real.
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "altium-bridge",- "version": "0.2.39",+ "version": "0.2.40", "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": [
src/BRIDGE_VERSION+1−1@@ -1 +1 @@-0.2.39+0.2.40
src/bridge.json+2−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "altium", "displayName": "Altium Designer",- "version": "0.2.39",+ "version": "0.2.40", "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",@@ -64,6 +64,7 @@ "altium_describe", "altium_diagnostics", "altium_dialog_log",+ "altium_panel", "altium_dismiss_dialogs", "altium_ensure_licensed", "altium_eval",