app
Parts Search
Public Made by Adomby adom
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.
← Commit history
Publish 1.1.2
6 files changed
+98−12
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"+ } ]-}+}
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" }
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` |