← Commit history

2.14.2: restore the api() helper deleted in 2.14.0; panel self-check

John Lauer ·f62e8e676c ·1mo ago ·parent ee9f6c3
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"     }   ]-}\ No newline at end of file+}
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');