← Commit history

v0.1.8: fix bridge.json verbs[] schema (strings), attach release asset

John Lauer ·4de6d38cd4 ·1mo ago ·parent c18f915
6 files changed +187−98
CHANGELOG.md+3
@@ -1,5 +1,8 @@ # Changelog +## 0.1.8 — 2026-08-31+- FIX: bridge.json verbs[] must be plain strings — 0.1.5–0.1.7 shipped four entries as objects, which ab's bridge_registry could not parse (the bridge vanished from the registry after its next reap while bridge_install still reported ok). Release assets are now uploaded explicitly (release create --binary-path does not attach).+ ## 0.1.7 — 2026-08-31 - altium_install_library_bundle: the no-AI web-control lane (kicad-parity envelope, zip-slip hardened, restart contract, proof frame). Handoff to Colby in docs/HANDOFF-COLBY.md + acceptance test docs/webcontrol-altium-test.html; ab allowlist request filed as adom/adom-bridge#964. 
adom-bridge-altium-manifest.json+4−4
@@ -1,9 +1,9 @@ {   "name": "altium",-  "version": "0.1.7",-  "url": "https://wiki.adom.inc/download/adom/altium-bridge/0.1.7/adom-bridge-altium-v0.1.7.zip",-  "sha256": "8beb4ad6b6538216058ec3e656a8d07c5dac0a532f6240dfd75c4bc18977bda5",-  "size": 94744,+  "version": "0.1.8",+  "url": "https://wiki.adom.inc/download/adom/altium-bridge/0.1.8/adom-bridge-altium-v0.1.8.zip",+  "sha256": "e0abbcb7b4e894ab0071e3d124b0314abf6a366da79da655307505c63f5c602d",+  "size": 94072,   "verbPrefixes": [     "altium_"   ],
adom-bridge-altium-v0.1.8.zipadded
⋯ 1 unchanged line ⋯
bridge.json+24−93
@@ -2,7 +2,7 @@   "manifest_version": 1,   "name": "altium",   "displayName": "Altium Designer",-  "version": "0.1.7",+  "version": "0.1.8",   "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",@@ -81,98 +81,29 @@     "altium_a365_configure",     "altium_signin_status",     "altium_connect_workspace",-    {-      "name": "altium_build_footprint",-      "description": "Build a footprint from a kicad2altium spec (pads incl. via pads, roundrect, mech-layer drawing)"-    },-    {-      "name": "altium_build_symbol_modes",-      "description": "Build ONE symbol with N display modes from a symbol_modes spec"-    },-    {-      "name": "altium_symbol_mode",-      "description": "Switch the library editor to display mode N and return a frame"-    },-    {-      "name": "altium_add_models",-      "description": "Attach N footprint models + parameters to a symbol"-    },-    {-      "name": "altium_normalize_bodies",-      "description": "Centre every 3D body on its pad cluster (library frame fix)"-    },-    {-      "name": "altium_test_board",-      "description": "New PcbDoc with the footprint placed and nets/stub tracks"-    },-    {-      "name": "altium_board_shape",-      "description": "Redefine the board shape as a rectangle (editor process)"-    },-    {-      "name": "altium_swap_footprint",-      "description": "Replace the board component with another footprint, nets kept by designator"-    },-    {-      "name": "altium_pcb_report",-      "description": "Ground truth: pads/bodies/nets/tracks with bboxes"-    },-    {-      "name": "altium_place_on_sch",-      "description": "Place a library symbol on a fresh sheet"-    },-    {-      "name": "altium_place_on_pcb",-      "description": "Place a library footprint on a fresh board"-    },-    {-      "name": "altium_remove_symbol",-      "description": "Remove a component from a SchLib by LibReference"-    },-    {-      "name": "altium_clone_symbol",-      "description": "Clone a symbol in a SchLib (all display modes) under a new LibReference"-    },-    {-      "name": "altium_rename_symbol",-      "description": "Rename a SchLib component"-    },-    {-      "name": "altium_read_symbol",-      "description": "Read a symbol back: pins, params, description, display modes"-    },-    {-      "name": "altium_copy_footprint",-      "description": "Copy a footprint in a PcbLib under a new name (pads + bodies + drawing)"-    },-    {-      "name": "altium_rename_footprint",-      "description": "Rename a PcbLib footprint"-    },-    {-      "name": "altium_remove_footprint",-      "description": "Remove a footprint from a PcbLib"-    },-    {-      "name": "altium_cleanup_libs",-      "description": "Remove factory-default stray components from the current libraries"-    },-    {-      "name": "altium_set_visibility",-      "description": "Show/hide a named parameter on a SchLib component"-    },-    {-      "name": "altium_xcopy_footprint",-      "description": "Copy a footprint across libraries (pads+bodies+drawing)"-    },-    {-      "name": "altium_import_part",-      "description": "One-call part import: footprint spec + STEP + symbol spec + models + vendor params"-    },-    {-      "name": "altium_install_library_bundle",-      "description": "Web-control no-AI lane: install a staged Altium library bundle zip (.SchLib/.PcbLib/.IntLib) in one call, with a proof frame"-    }+    "altium_build_footprint",+    "altium_build_symbol_modes",+    "altium_symbol_mode",+    "altium_add_models",+    "altium_normalize_bodies",+    "altium_test_board",+    "altium_board_shape",+    "altium_swap_footprint",+    "altium_pcb_report",+    "altium_place_on_sch",+    "altium_place_on_pcb",+    "altium_remove_symbol",+    "altium_clone_symbol",+    "altium_rename_symbol",+    "altium_read_symbol",+    "altium_copy_footprint",+    "altium_rename_footprint",+    "altium_remove_footprint",+    "altium_cleanup_libs",+    "altium_set_visibility",+    "altium_xcopy_footprint",+    "altium_import_part",+    "altium_install_library_bundle"   ],   "statusVerb": "altium_status",   "uninstall": "altium_uninstall",
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "altium-bridge",-  "version": "0.1.7",+  "version": "0.1.8",   "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.jsonadded+155
@@ -0,0 +1,155 @@+{+  "manifest_version": 1,+  "name": "altium",+  "displayName": "Altium Designer",+  "version": "0.1.8",+  "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",+  "author": "Adom Inc.",+  "license": "MIT",+  "spawn": {+    "kind": "python",+    "entrypoint": "server.py",+    "port": 0,+    "persistent": true,+    "healthEndpoint": "/health",+    "stopMethod": "kill",+    "killImageName": "python.exe"+  },+  "verbPrefixes": [+    "altium_"+  ],+  "verbs": [+    "altium_readiness",+    "altium_status",+    "altium_describe",+    "altium_state",+    "altium_progress",+    "altium_diagnostics",+    "altium_uninstall",+    "altium_launch",+    "altium_close",+    "altium_window_info",+    "altium_screenshot_all",+    "altium_check_dialogs",+    "altium_dismiss_dialogs",+    "altium_agent_start",+    "altium_agent_stop",+    "altium_agent_status",+    "altium_agent_recover",+    "altium_eval",+    "altium_run_command",+    "altium_run_script",+    "altium_list_commands",+    "altium_open_project",+    "altium_open_document",+    "altium_close_document",+    "altium_save",+    "altium_compile",+    "altium_show_symbol",+    "altium_show_footprint",+    "altium_show_3d_chip",+    "altium_show_library",+    "altium_show_schematic",+    "altium_show_2d_board",+    "altium_show_3d_board",+    "altium_show_project",+    "altium_run_outjob",+    "altium_run_drc",+    "altium_run_erc",+    "altium_export_gerber",+    "altium_export_step",+    "altium_export_pdf",+    "altium_export_bom",+    "altium_create_symbol",+    "altium_create_footprint",+    "altium_list_library",+    "altium_signin",+    "altium_license",+    "altium_a365_status",+    "altium_a365_query",+    "altium_demo",+    "altium_install_library",+    "altium_compile_intlib",+    "altium_extract_intlib",+    "altium_set_params",+    "altium_add_body",+    "altium_install_extension",+    "altium_extension_ping",+    "altium_import_kicad",+    "altium_a365_configure",+    "altium_signin_status",+    "altium_connect_workspace",+    "altium_build_footprint",+    "altium_build_symbol_modes",+    "altium_symbol_mode",+    "altium_add_models",+    "altium_normalize_bodies",+    "altium_test_board",+    "altium_board_shape",+    "altium_swap_footprint",+    "altium_pcb_report",+    "altium_place_on_sch",+    "altium_place_on_pcb",+    "altium_remove_symbol",+    "altium_clone_symbol",+    "altium_rename_symbol",+    "altium_read_symbol",+    "altium_copy_footprint",+    "altium_rename_footprint",+    "altium_remove_footprint",+    "altium_cleanup_libs",+    "altium_set_visibility",+    "altium_xcopy_footprint",+    "altium_import_part",+    "altium_install_library_bundle"+  ],+  "statusVerb": "altium_status",+  "uninstall": "altium_uninstall",+  "updateManifestUrl": "https://wiki.adom.inc/api/v1/pages/altium-bridge/files/adom-bridge-altium-manifest.json",+  "timeouts": {+    "default": 60,+    "verbs": {+      "launch": 240,+      "agent_start": 120,+      "run_outjob": 600,+      "export_step": 360,+      "export_gerber": 300,+      "run_drc": 300,+      "compile": 180,+      "demo": 600,+      "signin": 300,+      "license": 300,+      "import_kicad": 300,+      "compile_intlib": 300,+      "extract_intlib": 300,+      "install_extension": 200+    },+    "prefixes": [+      {+        "prefix": "show_",+        "seconds": 120+      },+      {+        "prefix": "export_",+        "seconds": 300+      }+    ]+  },+  "verbDurations": {+    "altium_launch": 60,+    "altium_agent_start": 8,+    "altium_run_outjob": 60,+    "altium_run_drc": 30+  },+  "detect": {+    "hostApp": "Altium Designer",+    "appPathsExe": "X2.EXE",+    "paths": {+      "windows": [+        "%ProgramFiles%\\Altium\\AD*\\X2.EXE"+      ]+    }+  }+}\ No newline at end of file