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
web-control handoff: correct per ab#964 — no allowlist, works today; Quick Actions is a forum curation
2 files changed
+14−8
docs/HANDOFF-COLBY.md+11−3@@ -18,12 +18,20 @@ AdomWebControl.run('altium_install_library_bundle', { Bundle zip = `<Lib>.SchLib` + `<Lib>.PcbLib` (or a compiled `<Lib>.IntLib`), wrapping folder tolerated. Hardened: zip-slip guard, 256 MB zipped / 512 MB unpacked caps, name regex. Restart contract identical to KiCad's: a running Altium is **never** closed; `restartNeeded` mirrors `altiumRunning`; capture is skipped with `proofSkipped` when Altium was already open. Sample end-to-end run: LAN7800 bundle → both libs registered in Installed Libraries + a real PCB-Library-editor proof frame. +## Correction from the ab thread (adom/adom-bridge#964, closed)++**ab needs no change.** There is no per-verb web-control allowlist — `/command` from a web origin runs ONE generic consent prompt (Allow once / 1 hr / Deny) and then dispatches whatever verb was asked. So `altium_install_library_bundle`, `write_file` and `write_file_chunk` are web-admissible **today**, with the identical prompt KiCad/Fusion get. The greyed chip is purely the wiki's curated component-export → bridge map (ab's public `/status` deliberately doesn't reveal installed bridges, so the page can't probe for Altium).+ ## What we need from you -1. **ab core (issue adom/adom-bridge#964):** admit `altium_install_library_bundle` through the web consent gate, same dialog as the KiCad/Fusion lanes. `write_file`/`write_file_chunk` staging is already generic.+1. **Quick Actions curation (the forum process, per John):** an "Add to Altium library" Quick Action on component/molecule pages is a curated community decision — proposal goes to the Adom forum, not an ab issue. Draft proposal text is below; John will post or bless it. 2. **webcontrol.js:** generalize `installLibraryBundle` (your `Le`) to take the verb name — or add an `eda:'altium'` branch — and add `altium → "Altium"` to the EDA label map so the toggle row shows all three. 3. **Component pages:** emit the Altium action when a page carries an Altium bundle (adom-lbr already writes `.SchLib`/`.PcbLib`). -## Acceptance test+## Acceptance test — works today++`docs/webcontrol-altium-test.html` on this repo — open it, click **Add to Altium library**, click **Allow** on ab's consent prompt. It stages the LAN7800 bundle, installs it, and renders the proof frame — no ab change required.++## Draft forum proposal — "Quick Action: Add to Altium library" -`docs/webcontrol-altium-test.html` on this repo — open it, click **Add to Altium library**. Today it reports `web_forbidden` (proving the gate); the moment #964 lands it stages the LAN7800 bundle and renders the proof frame. Nothing else to set up: it loads YOUR live `static/webcontrol.js` and uses `AdomWebControl.run` directly, so it also regression-tests your handshake path.+> adom/altium-bridge (v0.1.7) ships `altium_install_library_bundle`, the exact peer of the KiCad/Fusion bundle installers (same staging, same envelope, same restart contract, proof frame). Verified end-to-end on Altium Designer 26.9.1 through web control with zero ab changes. Proposal: light the existing **Altium** chip in EXPORTS TO on component/molecule pages that carry an Altium bundle (adom-lbr already emits .SchLib/.PcbLib), wired to that verb via `AdomWebControl.installLibraryBundle`. Acceptance harness + contract: wiki.adom.inc/adom/altium-bridge → docs/HANDOFF-COLBY.md. Nothing else to set up: it loads YOUR live `static/webcontrol.js` and uses `AdomWebControl.run` directly, so it also regression-tests your handshake path.
docs/webcontrol-altium-test.html+3−5@@ -13,9 +13,8 @@ button:disabled{opacity:.5} <h1>Altium web-control acceptance test</h1> <p>Mirrors <code>AdomWebControl.installLibraryBundle</code> for the <b>altium</b> bridge: detect ab → fetch a bundle → stage via <code>write_file_chunk</code> → call-<code>altium_install_library_bundle</code> → render the proof frame. Goes <b>green</b> the moment-ab admits the verb through the web consent gate (adom/adom-bridge issue <b>#964</b>);-until then the expected result is <code>web_forbidden</code>, which proves the gate, not a bug here.</p>+<code>altium_install_library_bundle</code> → render the proof frame. Works <b>today</b> — ab has no per-verb allowlist (adom/adom-bridge#964): click the button,+then <b>Allow</b> on ab's consent prompt, and the LAN7800 bundle installs with a proof frame.</p> <div class="row"><span id="dot" class="dot"></span><span id="st">Checking for Adom Bridge…</span></div> <div class="row"> <label>Bundle URL: <input id="zip" size="52" value="https://wiki.adom.inc/download/adom/altium-bridge/LAN7800-bundle.zip"></label>@@ -55,8 +54,7 @@ $('go').onclick=async()=>{ if(d.restartNeeded)log('Altium is open — it needs a restart to see the new library (the verb never closes it).'); if(d.thumbnailDataUrl){$('proof').src=d.thumbnailDataUrl;$('proof').style.display='block';log('proof frame rendered ✓')} }catch(e){- log('BLOCKED/FAILED: '+(e.code||'')+' '+e.message+- (e.code==='web_forbidden'?'\n→ expected until #964 lands: altium_install_library_bundle is not yet on ab\'s web consent allowlist.':''));+ log('BLOCKED/FAILED: '+(e.code||'')+' '+e.message); }finally{$('go').disabled=false} }; </script></body></html>