← Commit history

README: two-artifact table, CH340G window tour, control surfaces, verb reference

John Lauer ·b181e7e7ff ·1mo ago ·parent d377e13
2 files changed +142−2
CHANGELOG.mdadded+13
@@ -0,0 +1,13 @@+# Changelog++## 0.1.0 — 2026-08-30+- Schematic placement fixed: place_on_sch copies each lib primitive onto a fresh sheet component (Replicate alone drops pins/body); proven on the CH340G (17 primitives render).+- 3D pipeline fixed end-to-end: bodies persist (added via the PcbLib editor CANVAS with the footprint current), STEP + extruded both render on a real board; place_on_pcb builds a fresh eComponentObject, copies children BEFORE the board add, normalizes the pad cluster and each body to the target separately. Ray's CH340G STEP renders in 3D on a board.+- New diagnostics: altium_pcb_report (per-component pads/bodies with layer+bbox, board census by ObjectId), place/agent stage breadcrumbs.+- Agent lifecycle: agent_start now detects a STALE resident generation (gen stamp in the heartbeat) and auto-restarts it — redeployed agent code can no longer silently not load.++## 0.1.0 — 2026-08-29+- Barrett merge: set_params (LCSC/MPN + footprint link), add_body (STEP/extruded), install_library, compile_intlib, extract_intlib; vendored AdomBridge extension (export_step/import_kicad — not loading on AD 26.9.1 yet).+- Taskbar: Adom overlay badge while driving, measured progress bar on slow verbs, no AUMID stamping.+- Phase 5: signin_status, license (WebView2 page driver), connect_workspace, a365_configure/status/query.+- First cut (phases 0-4): readiness/status/diagnostics, resident DelphiScript agent (eval, run_command, state, open), dialogs by PID with screenshots, agent_recover, the eight show_* surfaces + demo, compile/ERC with Messages panel, DRC with violations, OutJob runner (Gerber/ODB++/NC drill/BOM proven on the Bluetooth Sentinel example), create_footprint / create_symbol / save.
README.md+129−2
@@ -1,3 +1,130 @@-# Altium - the Altium Bridge+# Adom Bridge — Altium Bridge -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.+A **reverse bridge** that lets Adom Bridge (ab) — and the AI driving it — control the user's own+Altium Designer on Windows: open and drive every design surface, author native+`.SchLib`/`.PcbLib` libraries (symbols, footprints, STEP 3D bodies), place parts on schematics and+boards, run compile/ERC and DRC, run OutJobs (Gerber, ODB++, NC drill, BOM, pick-and-place), and+screenshot any window back to the AI.++> ### Two artifacts on this page — which one do you want?+>+> | | **Release ZIP** (`adom-bridge-altium-v*.zip`) | **Package** (`adom-wiki pkg install adom/altium-bridge`) |+> |---|---|---|+> | What it is | The **bridge runtime** — the Python server + DelphiScript agent that drive Altium | **Skills + docs only**, for a container/agent |+> | Who loads it | **Adom Bridge** downloads it via `adom-bridge-altium-manifest.json` | You, into a container, to teach an agent the `altium_*` verbs |+> | Contains | server, handlers, agent template, process catalog parser | `SKILL.md` files (no binaries, no images) |+> | You install it manually? | **No** — Bridge handles it | Yes |+>+> **The package is not the bridge.** Installing the package does not give you a working bridge;+> Adom Bridge loading the release zip does.++Altium Designer is the user's **host app**. The bridge *detects* an existing install+(`%ProgramFiles%\Altium\AD*\X2.EXE`), launches it in the background, bootstraps a **resident+DelphiScript agent** inside it (the REPL lane), and hands the AI 60 `altium_*` verbs.++- **Page / docs:** https://wiki.adom.inc/adom/altium-bridge+- **Bridge SDK:** https://wiki.adom.inc/adom/adom-bridge-sdk+- **Verb namespace:** `altium_*` · **Status verb:** `altium_status` · **Health:** `GET /health`+- **Plan of record** (every measured engine fact): the `altium-bridge-plan` skill in the package.++> Every screenshot below is a real capture of Altium Designer 26.9.1 driven end-to-end through the+> bridge — the part shown (WCH **CH340G**, USB-serial SOP-16) was imported from its wiki component+> page and authored into a native library *by the bridge itself*: pads, pins, parameters, and the+> real KiCad STEP body.++---++## The window tour — one imported chip, every surface++### Symbol — `altium_show_symbol` (authored by `altium_create_symbol`)++All 16 named pins (GND/TXD/RXD/V3/UD+/UD-/XI/XO · VCC/R232/RTS#/DTR#/DCD#/RI#/DSR#/CTS#).++![Symbol editor](https://wiki.adom.inc/blob/app/altium-bridge/docs/img/symbol-editor.png)++### Footprint — `altium_show_footprint` (authored by `altium_create_footprint`)++16 SOIC pads parsed from the component page's `pads.json` (mm → mil).++![Footprint editor](https://wiki.adom.inc/blob/app/altium-bridge/docs/img/footprint-editor.png)++### Library manager — `altium_show_library` / `altium_list_library`++![SCH Library panel](https://wiki.adom.inc/blob/app/altium-bridge/docs/img/library-panel.png)++### Schematic — `altium_place_on_sch`++The symbol placed as U1 on a fresh sheet (per-primitive copy — the engine's group+`Replicate` drops children; the bridge handles that for you).++![Schematic](https://wiki.adom.inc/blob/app/altium-bridge/docs/img/schematic.png)++### 2D board — `altium_place_on_pcb`++The footprint placed as a real board component at the target location.++![2D board](https://wiki.adom.inc/blob/app/altium-bridge/docs/img/board-2d.png)++### 3D board — the STEP body on a real PCB++The actual KiCad STEP model — molded body, pin-1 dimple, gull-wing leads on the pads.++![3D board](https://wiki.adom.inc/blob/app/altium-bridge/docs/img/board-3d.png)++---++## How it fits together++The bridge is a `spawn.kind: python` process Bridge launches on the user's machine+(`entrypoint: server.py`, `port: 0`). It speaks HTTP (`POST /command`, `GET /health`) and reaches+Altium through ranked control surfaces, lightest first:++| # | Surface | Used for |+|---|---------|----------|+| 1 | **Resident DelphiScript agent** (file-drop REPL inside Altium, bootstrapped via `X2.EXE -R`) | eval, open/show, library authoring, placement, compile/DRC/OutJob readback |+| 2 | **Process launcher** (1,111 `Server:Command` processes parsed from Altium's own `.rcs` tables) | zoom, view switches, document ops — `altium_run_command` / `altium_list_commands` |+| 3 | **Win32 / UIA** | window management, screenshots, dialog detection/dismissal by PID |+| 4 | **WebView2 (CDP)** | the sign-in / License Management pages — `altium_license`, `altium_signin_status` |+| 5 | **Altium 365 GraphQL** | workspace queries (`altium_a365_*`; needs a Pro/Enterprise token) |++Modal dialogs freeze the script engine, so every mutating verb scans for dialogs by PID and+returns them with body screenshots (Altium paints dialog text; it is not exposed as text).+A halted engine (DelphiScript runtime errors are modal) recovers with `altium_agent_recover`.++## Verb reference++All 60 verbs (prefix `altium_`). Call `altium_describe` for the live catalog.++**Readiness & lifecycle** — `readiness`, `status`, `launch`, `close`, `diagnostics`, `progress`,+`agent_start/_stop/_status/_recover`, `license`, `signin_status`, `connect_workspace`, `uninstall`++**Surfaces** — `show_project`, `show_schematic`, `show_2d_board`, `show_3d_board`, `show_library`,+`show_symbol`, `show_footprint`, `show_3d_chip`, `open_document`, `state`, `demo`++**Engine** — `eval`, `run_command`, `list_commands`, `run_script`++**Checks & outputs** — `compile` (`run_erc`), `run_drc`, `run_outjob`, `export_gerber`, `export_bom`++**Libraries & placement** — `create_footprint`, `create_symbol`, `add_body` (STEP or extruded),+`set_params`, `install_library`, `compile_intlib`, `extract_intlib`, `list_library`,+`place_on_sch`, `place_on_pcb`, `pcb_report`, `save`++**Dialogs & desktop** — `check_dialogs`, `dismiss_dialogs`++## Running / dependencies++Bridge provisions everything; nothing to install by hand.++- **Python** ≥ 3.11 (Bridge provisions it) — stdlib only.+- **Altium Designer** (host app; the `altium-install` skill drives a fresh install + trial sign-in).+- **OS:** Windows.++The bridge binds a Bridge-assigned port — never `0.0.0.0`. Auto-updates via `updateManifestUrl`+in `bridge.json`.++---++*Developer docs ship as `user-invocable:false` skills in the package — `altium-bridge-plan` is the+plan of record with every measured engine fact (the DelphiScript traps, the canvas-persistence+rule for 3D bodies, the stale-agent reload bug, the UIPI lessons). Maintainers get them with the+normal `pkg install`.*