app
Adom Library
Public Made by Adomby adom
adom-lbr — the EDA library translator. Bring a component in from any supported EDA tool and convert it to any other (KiCad ⇄ Altium ⇄ EAGLE/Fusion) through one canonical adom-lbr JSON — symbol + footprint + 3D + pin↔pad map. Altium is written natively (no Altium needed). Includes the adom-lbr Manager: browse wiki components and view symbol/footprint/3D + the per-EDA layer stackup.
← Commit history
2.14.2: restore the api() helper deleted in 2.14.0; panel self-check
6 files changed
+40−17
Cargo.lock+1−1@@ -10,7 +10,7 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "adom-lbr"-version = "2.14.1"+version = "2.14.2" dependencies = [ "altium-codec", "anyhow",
Cargo.toml+1−1@@ -1,6 +1,6 @@ [package] name = "adom-lbr"-version = "2.14.1"+version = "2.14.2" edition = "2021" description = "adom-lbr generator / EDA translator: the canonical adom-lbr JSON is the hub, with native converters to Altium (.SchLib/.PcbLib/.IntLib), EAGLE/Fusion (.lbr), and KiCad. Altium output is written natively — no Altium needed at conversion time."
VERSION+1−1@@ -1 +1 @@-2.14.1+2.14.2
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-lbr",- "version": "2.14.1",+ "version": "2.14.2", "type": "app", "description": "adom-lbr \u2014 the EDA library translator. Bring a component in from any supported EDA tool and convert it to any other (KiCad \u21c4 Altium \u21c4 EAGLE/Fusion) through one canonical adom-lbr JSON \u2014 symbol + footprint + 3D + pin\u2194pad map. Altium is written natively (no Altium needed). Includes the adom-lbr Manager: browse wiki components and view symbol/footprint/3D + the per-EDA layer stackup.", "dependencies": {},
page.json+9−12@@ -1,8 +1,8 @@ { "slug": "adom-lbr",- "version": "2.14.1",+ "version": "2.14.2", "type": "app",- "description": "adom-lbr — the EDA library translator. Bring a component in from any supported EDA tool and convert it to any other (KiCad ⇄ Altium ⇄ EAGLE/Fusion) through one canonical adom-lbr JSON — symbol + footprint + 3D + pin↔pad map. Altium is written natively (no Altium needed). Includes the adom-lbr Manager: browse wiki components and view symbol/footprint/3D + the per-EDA layer stackup.",+ "description": "adom-lbr \u2014 the EDA library translator. Bring a component in from any supported EDA tool and convert it to any other (KiCad \u21c4 Altium \u21c4 EAGLE/Fusion) through one canonical adom-lbr JSON \u2014 symbol + footprint + 3D + pin\u2194pad map. Altium is written natively (no Altium needed). Includes the adom-lbr Manager: browse wiki components and view symbol/footprint/3D + the per-EDA layer stackup.", "dependencies": {}, "tags": [ "eda",@@ -52,24 +52,21 @@ ], "files": [ "bin/**",- "assets/**", "SKILL.md",- "skills/**", "README.md", "install.sh", "uninstall.sh",- "screenshots/**",- "dockbar.json"+ "screenshots/**" ],- "discovery_pitch": "Convert electronic-component symbols + footprints between any two EDA tools — KiCad, Altium (written natively, no Altium needed), and EAGLE/Fusion — through one canonical adom-lbr JSON, silk/courtyard/fab layers preserved. Plus a Manager to browse and inspect any wiki part.",+ "discovery_pitch": "Convert electronic-component symbols + footprints between any two EDA tools \u2014 KiCad, Altium (written natively, no Altium needed), and EAGLE/Fusion \u2014 through one canonical adom-lbr JSON, silk/courtyard/fab layers preserved. Plus a Manager to browse and inspect any wiki part.", "sample_prompts": [ { "prompt": "Convert this KiCad symbol and footprint to an Altium SchLib and PcbLib",- "label": "KiCad → Altium"+ "label": "KiCad \u2192 Altium" }, { "prompt": "Import this Altium footprint into the adom-lbr JSON",- "label": "Altium → JSON"+ "label": "Altium \u2192 JSON" }, { "prompt": "Bundle this part into a single Altium IntLib",@@ -77,15 +74,15 @@ }, { "prompt": "Convert this Altium SchLib and PcbLib to a KiCad symbol and footprint",- "label": "Altium → KiCad"+ "label": "Altium \u2192 KiCad" }, { "prompt": "Export this adom-lbr JSON to a KiCad .kicad_sym and .kicad_mod",- "label": "JSON → KiCad"+ "label": "JSON \u2192 KiCad" }, { "prompt": "Open the adom-lbr Manager to browse wiki components and view the layer stackup", "label": "Browse parts" } ]-}+}
src/manage.html+27−1@@ -722,6 +722,22 @@ loadList(); loadSample(); // ===================== dock contract: LEDs, say, settings ===================== // toasts skill: bottom centre 24px, newest nearest the bottom, max 3 visible, // colour ONLY in the 16px line icon and the 3px left border.+// The one fetch helper. It was DELETED by an over-greedy regex during the+// 2.14.0 toast rewrite, and because every call site swallows its own errors the+// page went silent instead of breaking loudly: zero prompt rows, no copy+// button, and a "not answering" status pill, all from this one missing+// function. Per-call timeout, because say-send needs 120 s while status wants 5.+async function api(path,opts){+ const o=Object.assign({},opts||{});+ const ms=o.timeoutMs||8000; delete o.timeoutMs;+ const ac=new AbortController();+ const t=setTimeout(()=>ac.abort(),ms);+ try{+ const r=await fetch(path,Object.assign(o,{signal:ac.signal}));+ return await r.json();+ } finally { clearTimeout(t); }+}+ const TOAST_ICONS={ success:'<path d="M20 6 9 17l-5-5"/>', error:'<circle cx="12" cy="12" r="9"/><path d="M12 8v5M12 16h.01"/>',@@ -894,7 +910,17 @@ async function loadSay(){ } const COPY_SVG="<rect x=\"9\" y=\"9\" width=\"12\" height=\"12\" rx=\"2.5\"/> <path d=\"M6 15H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v1\"/>"; const SEND_SVG="<path d=\"M21.5 2.5 10.5 13.5\"/> <path d=\"M21.5 2.5 14.8 21.5l-4.3-8-8-4.3z\"/>";-loadSay();+loadSay().then(()=>{+ // Never fail silently again: an open panel with zero rows is a defect, not a+ // layout. 2.14.0 shipped exactly that for a whole release because every call+ // site swallowed its own errors and nothing on screen said so.+ setTimeout(()=>{+ const say=document.getElementById('say');+ if(say && !say.hidden && !document.querySelector('.say-row')){+ toast('The prompts could not be loaded. Reload, or ask your AI directly using the word lbr.',true);+ }+ },1500);+}); // ---- Settings modal: native <dialog>, dim never blur, four dismissals ---- const dlg=document.getElementById('dlgSettings');