← Commit history

v2.0.1: The panel mount now retries, and its failures are visible

John Lauer ·5a55467450 ·1mo ago ·parent 4bfa3fa
6 files changed +32−103
Cargo.lock+1−1
@@ -10,7 +10,7 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"  [[package]] name = "adom-parts-search"-version = "2.0.0"+version = "2.0.1" dependencies = [  "base64",  "clap",
Cargo.toml+1−1
@@ -1,6 +1,6 @@ [package] name = "adom-parts-search"-version = "2.0.0"+version = "2.0.1" edition = "2021" description = "Parts Search Electronics component search — CLI, backend HTTP service, and Hydrogen webview app" license = "MIT"
VERSION+1−1
@@ -1 +1 @@-2.0.0+2.0.1
package.json+1−40
@@ -38,44 +38,5 @@     "SKILL.md",     "BUILD-SKILL.md",     "CHANGELOG.md"-  ],-  "changelog": "The panel mount now retries, and its failures are visible",-  "discovery_triggers": [-    "parts search",-    "find part",-    "source component",-    "source part",-    "compare distributors",-    "compare vendors",-    "Mouser or DigiKey",-    "BOM sourcing",-    "price this part",-    "where can I get",-    "check stock",-    "parts availability",-    "fastest delivery",-    "cheapest part",-    "component search",-    "part lookup",-    "price breaks"-  ],-  "discovery_pitch": "Search Mouser, DigiKey and JLCPCB in parallel with product photos; Mouser-preferred best-source pick. Say 'with parts search' to your AI.",-  "sample_prompts": [-    {-      "label": "source an STM32F103RBT6",-      "prompt": "source an STM32F103RBT6"-    },-    {-      "label": "where can I get an ESP32-S3-WROOM cheape",-      "prompt": "where can I get an ESP32-S3-WROOM cheapest and fastest"-    },-    {-      "label": "compare Mouser, DigiKey and JLCPCB for a",-      "prompt": "compare Mouser, DigiKey and JLCPCB for an LM555"-    },-    {-      "label": "price this BOM across distributors",-      "prompt": "price this BOM across distributors"-    }   ]-}\ No newline at end of file+}
page.json+8−49
@@ -33,25 +33,13 @@   },   "hero": {     "type": "image",-    "path": "screenshots/hero.png"+    "path": "docs/hero.png"   },   "sample_prompts": [-    {-      "label": "source an STM32F103RBT6",-      "prompt": "source an STM32F103RBT6"-    },-    {-      "label": "where can I get an ESP32-S3-WROOM cheape",-      "prompt": "where can I get an ESP32-S3-WROOM cheapest and fastest"-    },-    {-      "label": "compare Mouser, DigiKey and JLCPCB for a",-      "prompt": "compare Mouser, DigiKey and JLCPCB for an LM555"-    },-    {-      "label": "price this BOM across distributors",-      "prompt": "price this BOM across distributors"-    }+    "source an STM32F103RBT6",+    "where can I get an ESP32-S3-WROOM cheapest and fastest",+    "compare Mouser, DigiKey and JLCPCB for an LM555",+    "price this BOM across distributors"   ],   "discovery_triggers": [     "parts search",@@ -66,41 +54,12 @@     "where can I get",     "check stock",     "parts availability",-    "fastest delivery",-    "cheapest part",-    "component search",-    "part lookup",-    "price breaks"+    "fastest delivery"   ],-  "discovery_pitch": "Search Mouser, DigiKey and JLCPCB in parallel with product photos; Mouser-preferred best-source pick. Say 'with parts search' to your AI.",+  "discovery_pitch": "Search Mouser + DigiKey + JLCPCB in parallel from one interface, with product photos and a Mouser-preferred best-source pick.",   "metadata": {     "platform": "linux"   },   "category": "tools",-  "org": "adom",-  "description": "One search box across Mouser, DigiKey and JLCPCB. Parallel queries, side-by-side product photos, and a Mouser-preferred recommendation that reasons around stock and lead time. Dock Bar ready: serve, health, settings, Say it.",-  "dependencies": {-    "adom/adom-mouser": "*",-    "adom/adom-digikey": "*",-    "adom/adom-jlcpcb": "*"-  },-  "needs_sudo": false,-  "scripts": {-    "install": "./install.sh",-    "uninstall": "./uninstall.sh"-  },-  "files": [-    "bin/**",-    "skills/**",-    "docs/icon.svg",-    "dockbar.json",-    "install.sh",-    "uninstall.sh",-    "package.json",-    "README.md",-    "SKILL.md",-    "BUILD-SKILL.md",-    "CHANGELOG.md"-  ],-  "changelog": "The panel mount now retries, and its failures are visible"+  "org": "adom" }\ No newline at end of file
src/app/ui.html+20−11
@@ -711,18 +711,27 @@ window.__tooltipAssert=function(){const r=tip.getBoundingClientRect();return r.l // memory. We own only our phrases, our noun, and what the demo button does. let SAY=[],panelApi=null; function renderSay(list){-  if(!list||!list.length||JSON.stringify(list)===JSON.stringify(SAY))return;-  SAY=list;-  if(panelApi||!window.AdomNewbiePanel)return;-  panelApi=AdomNewbiePanel.mount({-    mount:'#newbie', app:'parts search', appName:'Parts Search', slug:'adom-parts-search',-    toggleButton:'#btnHelp',-    demo:{label:'Play the demo', meta:'8 steps, about 2 minutes', onPlay:function(){demo.start();}},-    phrases:SAY-  });-  if(panelApi&&panelApi.overBudget&&panelApi.overBudget.length)-    console.warn('newbie panel: phrases over budget: '+JSON.stringify(panelApi.overBudget));+  if(!list||!list.length)return;+  if(panelApi&&JSON.stringify(list)===JSON.stringify(SAY))return;+  if(!window.AdomNewbiePanel){console.warn('newbie panel: module not loaded yet, will retry on the next poll');return;}+  try{+    const api=AdomNewbiePanel.mount({+      mount:'#newbie', app:'parts search', appName:'Parts Search', slug:'adom-parts-search',+      toggleButton:'#btnHelp',+      demo:{label:'Play the demo', meta:'8 steps, about 2 minutes', onPlay:function(){demo.start();}},+      phrases:list+    });+    // Only commit SAY once the mount SUCCEEDS. Committing first disabled the+    // retry: every later poll short-circuited on the equality check, and+    // pollState's bare catch swallowed the reason.+    panelApi=api; SAY=list;+    if(api&&api.overBudget&&api.overBudget.length)+      console.warn('newbie panel: phrases over budget: '+JSON.stringify(api.overBudget));+  }catch(e){+    console.error('newbie panel mount failed: '+(e&&e.message||e)+' (retrying next poll)');+  } }+ function countGreenLaunch(){}  // ---- Status pill row (status-leds skill): pills at rest, prose on tap ----