← Commit history
CHANGELOG.md+6
@@ -1,5 +1,11 @@ # Changelog +## 1.1.2 (2026-08-23)++Try it buttons return as copy-to-clipboard with a confirming toast++- Try it sits next to each Say it phrase again; clicking it copies the phrase (clipboard API with a textarea fallback) and shows a success toast: "Copied to clipboard. Paste it into any AI thread." No AI-thread call is made from the page or the server; the staging code stays dormant until the platform re-enables it.+ ## 1.1.1 (2026-08-23)  Quota guard, copy-only Say it phrases, neutral best-source language
README.md+1−1
@@ -26,7 +26,7 @@ You do not have to drive the page. Ask your AI, using the words **parts search** - "check stock on an ESP32-S3-WROOM-1 with parts search" - "source the parts in my BOM with parts search" -The same phrases sit at the top of the page; click one to copy it. The strip has an X: close it+The same phrases sit at the top of the page; a click (or Try it) copies one to the clipboard and a toast confirms it. The strip has an X: close it once and it stays closed (Settings brings it back).  ## Quick start
bin/adom-parts-search
⋯ 1 unchanged line ⋯
package.json+41−2
@@ -1,6 +1,6 @@ {   "slug": "adom-parts-search",-  "version": "1.1.1",+  "version": "1.1.2",   "type": "app",   "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": {@@ -38,5 +38,44 @@     "SKILL.md",     "BUILD-SKILL.md",     "CHANGELOG.md"+  ],+  "changelog": "Try it buttons return as copy-to-clipboard with a confirming toast",+  "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+49−8
@@ -4,7 +4,7 @@   "slug": "adom-parts-search",   "title": "Parts Search",   "brief": "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.",-  "version": "1.1.1",+  "version": "1.1.2",   "install": {     "binary_name": "adom-parts-search",     "install_dir": "",@@ -36,10 +36,22 @@     "path": "screenshots/hero.png"   },   "sample_prompts": [-    "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"+    {+      "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"+    }   ],   "discovery_triggers": [     "parts search",@@ -54,12 +66,41 @@     "where can I get",     "check stock",     "parts availability",-    "fastest delivery"+    "fastest delivery",+    "cheapest part",+    "component search",+    "part lookup",+    "price breaks"   ],-  "discovery_pitch": "Search Mouser + DigiKey + JLCPCB in parallel from one interface, with product photos and a Mouser-preferred best-source pick.",+  "discovery_pitch": "Search Mouser, DigiKey and JLCPCB in parallel with product photos; Mouser-preferred best-source pick. Say 'with parts search' to your AI.",   "metadata": {     "platform": "linux"   },   "category": "tools",-  "org": "adom"+  "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": "Try it buttons return as copy-to-clipboard with a confirming toast" }\ No newline at end of file
skills/adom-parts-search-dock/SKILL.md+1−1
@@ -48,7 +48,7 @@ click lands on the same Parts Search page a user gets from `adom-parts-search sh | Direct URL | `src/serve.rs` | prints `http://127.0.0.1:8893/`, never the `:7380/proxy/` form and never the name `localhost` (IPv6-first on Windows, ~800 ms per request) | | Fast health with CORS | `src/app/mod.rs` | `/api/status` (alias `/health`) is cached stale-while-revalidate: answers in ~10 ms from the last reading, refreshes in the background when older than 5 s. Every `/api/*` route sends `Access-Control-Allow-Origin: *` and answers `OPTIONS` | | Per-facet LEDs + owned rollup | `src/app/mod.rs` | facets: Mouser, DigiKey, JLCPCB (each backend's own `/health`, with Mouser's daily quota surfaced), and Search (idle or the running query). Top-level `state`: `fail` when no backend answers, `warn` when any is down, off, or quota-hit, else `ok` |-| Say it | `dockbar.json` + the page | six phrases in the user's noun ("find the cheapest LM358 with **parts search**") shown on the interstitial and, as a strip at the top of the page, copy on click plus Try it (stages into the app's own thread: census first, history second, copy fallback). The strip's X hides it for good (`showSayStrip` setting) |+| Say it | `dockbar.json` + the page | six phrases in the user's noun ("find the cheapest LM358 with **parts search**") shown on the interstitial and, as a strip at the top of the page, copy on click plus a Try it button that also copies and confirms with a toast; live staging into AI threads is parked platform-side, the code stays dormant. The strip's X hides it for good (`showSayStrip` setting) | | Settings window | the page | the cog in the 44px header opens the settings modal (settings-layout skill) | | Taskbar progress | `src/taskbar.rs` | a determinate bar on the Hydrogen taskbar button sized from measured search durations; indeterminate for an AI-driven `show` |