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.28 (insiders): 0.2.28: one thread per request (a slow verb no longer blocks the bridge); agent_busy names what is running
4 files changed
+6−3
CHANGELOG.md+3@@ -1,5 +1,8 @@ # Changelog +## 0.2.28 (2026-09-20)+- **One thread per request.** The bridge handled HTTP requests one at a time, inline in its accept loop, so ONE slow verb blocked every verb behind it, `/health` included: `altium_signin`'s ~25 s UIA search, or an agent call waiting on a parked engine. ab dropped its connection at its own budget (an opaque "HTTP error"), the bridge kept working the abandoned request, and the queue only grew: the 30-verb cascades the verb battery produced, twice, from two different first causes. Each request now runs on its own thread. Agent-bound work still serialises at the agent's one-file inbox, which answers a NAMED `agent_busy` with `busyWith` and `busyForSec` instead of a dropped connection.+ ## 0.2.27 (2026-09-20) - The silent-halt fix in 0.2.26 modelled the wrong moment and did not fire. What really happens (heartbeat: `requests: 1`, then nothing): a command raises an exception the agent's own Try/Except handles, the command ANSWERS normally, and THEN Altium's debugger parks the script on a breakpoint, on Altium Develop with no error box. The caller of that command sees nothing; the NEXT verb finds a dead agent, starts a second script into a parked engine and blocks until ab's HTTP timeout, and so does every verb after it. `agent::call` now checks before bootstrapping: agent dead + Altium running + the agent script in front = parked, so it sends `EditScript:Stop` first, restarts the agent, runs the verb, and marks the reply `enginePreviouslyParked:true` (also logged in `altium_dialog_log` as `engine_parked_cleared`). The in-flight title trigger from 0.2.26 is removed: the title alone cannot tell a halt from a long command.
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "altium-bridge",- "version": "0.2.27",+ "version": "0.2.28", "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.27+0.2.28
src/bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "altium", "displayName": "Altium Designer",- "version": "0.2.27",+ "version": "0.2.28", "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",