← Commit history

v0.2.38 (insiders): 0.2.38: review fixes - cleanup_libs keeps a non-empty Component_1, set_params/add_body refuse an ambiguous empty name, extract_intlib scopes sources to the IntLib's folder, schematic_data honours params, licence gates on symbol_prims/import_kicad, setup_trial stops claiming a launch it does not do

John Lauer ·be4b4a2f1d ·1mo ago ·parent e87c2d1
4 files changed +14−3
CHANGELOG.md+11
@@ -1,5 +1,16 @@ # Changelog +## 0.2.38 (2026-09-21)+Correctness pass over the findings from the code review, each one verified in the source before it was touched.++- **`cleanup_libs` no longer deletes a symbol someone drew.** It removed a SchLib component named `Component_1` unconditionally, pins and all; the PcbLib side had always checked the footprint was empty first. Now both sides only remove the empty factory stray, and the reply reports `keptNotEmpty`.+- **`set_params` and `add_body` refuse an ambiguous empty name** (`errorCode: name_required`, with the count). With no name they took whichever component the iterator yielded first, so against a multi-symbol library they silently wrote a footprint, a comment or a 3D body onto an arbitrary part. An omitted name now only means "the one component in here".+- **`extract_intlib` reports the libraries it actually extracted.** `sources[]` listed every `.SchLib`/`.PcbLib` open anywhere in the workspace; it is now scoped to the IntLib's own folder, and says so in `searchedUnder`.+- **`schematic_data {params:true}`** now reaches the agent. The agent has always honoured it, but the dispatch never sent the flag, so `params[]` came back empty and the docs had to apologise for it.+- `symbol_prims` and `import_kicad` gate on the licence like every other authoring verb, instead of failing later and less clearly.+- `setup_trial` no longer says "Launching it next" at a stage where it launches nothing — it names the next action, which is its whole contract.+- Reviewed and found correct, no change: `run_outjob` opens the .OutJob with `ObjectKind=Document` (the object kind for the RUN step is separate, and is passed), and `run_drc` promises nothing it does not return.+ ## 0.2.37 (2026-09-21) - **`altium_launch` hands the user's window back.** Altium foregrounds itself at startup and offers no switch for it, so the bridge now remembers the window the user was working in and restores it once Altium has settled (`foregroundReturnedTo`, `windowEtiquette: background`). `background:false` opts out when the user asked to watch Altium come up. John, twice in two days: "dude u keep forcing altium in front of me while i'm typing". - Full battery GREEN ON BOTH BUILDS: 122 verbs, **113 pass, 0 fail**, 9 skipped for safety, on Altium Designer 26.10.1 (arav-rog) and Altium Designer Develop (ConfRoomROG) — `close` included, for the first time. Both machines were left with no Altium running and no dialog on screen.
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "altium-bridge",-  "version": "0.2.37",+  "version": "0.2.38",   "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.37\ No newline at end of file+0.2.38\ No newline at end of file
src/bridge.json+1−1
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "altium",   "displayName": "Altium Designer",-  "version": "0.2.37",+  "version": "0.2.38",   "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",