app
Pup - the AI's own browser
Public Made by Adomby adom
pup gives your AI a real browser on your desktop that it drives completely, in the background, signed in as you: windows that never jump in front of your work, one shared profile that learns your logins, and every window labeled on the taskbar with its AI thread's name.
← Commit history
Add the ComponentSearchEngine per-site login+download recipe: signin flow, the ms-vs-apex host/username gotcha, model-availability check, and the key insight that the download button's href is a Supplyframe tracker redirecting to /partApi/model/download (navigate the href rather than click). Proven end to end downloading a real NE555P multi-format CAD library.
1 file changed
+63
login-recipes/componentsearchengine.com.mdadded+63@@ -0,0 +1,63 @@+# ComponentSearchEngine / SamacSys (componentsearchengine.com)++Free CAD aggregator: symbol + footprint + 3D STEP for millions of parts, in ~24 EDA formats+(Altium, KiCad, Eagle, OrCAD/Allegro, Cadence, PADS, …). Download is **login-gated** (free account).+Proven end to end 2026-08-13: pup logged in with a recovered credential and downloaded a real+multi-format library (`LIB_NE555P.zip`, 1.7 MB — Altium `.SchLib`+`.PcbLib`, OrCAD, Cadence, PDF).++- **Login entry URL:** `https://componentsearchengine.com/signin`+- **Flow type:** single-page email+password form.+- **2FA:** none.+- **Anti-automation:** Cloudflare on some paths — cleared automatically now that pup presents as+ Google Chrome (pup ≥ 2.0.141; see `ee-parts-sites.md`).++## Credential notes (learned the hard way)++- The saved login often lives under **`ms.componentsearchengine.com`** (the SamacSys account host),+ but the sign-in page is the **apex** `componentsearchengine.com`. pup's vault matches across the+ registrable domain (≥ 2.0.144), so a cred saved on either host works on the other.+- **Verify the USERNAME.** A stale/wrong username is a silent failure ("Fail to authenticate"). If+ a login fails, recover the CURRENT username+password straight from the user's browser password+ manager — see `recover-a-current-password.md`.++## Steps++1. `pup_open_window {url:"https://componentsearchengine.com/signin"}` on the durable adom-you profile.+2. `pup_login {submit:true, submitReason:"…"}` — vault autofills + submits (background). Confirm+ sign-in: the header shows the user's name / "Your Profile" (not "Sign In / Register").+3. Go to the part: `https://componentsearchengine.com/part-view/<MPN>/<Manufacturer>` (spaces →+ `%20`). Check the **model is available**: the page must NOT say *"ECAD model is currently+ unavailable"* and the **"Download <MPN> Model"** button must be enabled. Not every part has a+ pre-built model — some only offer "Build this Model" / "Request this Model (48 h)". Pick a part+ with a ready model (most common jellybeans have one; e.g. NE555P does, this exact TI-LM358 did not).++## The download (the non-obvious part)++The blue **"Download <MPN> Model"** control is an `<a class="ecad-model-button">` whose `onclick` is+**analytics only** (`recordUserClickDefer(...)`) — the real action is its **`href`**, a Supplyframe+tracker: `//analytics.supplyframe.com/trackingservlet/track/?r=<token>`. That tracker **302-redirects+to `https://componentsearchengine.com/partApi/model/download?from=…`**, which streams the ZIP.++A bare `pup_click` / `pup_download {selector}` on the button can stall (the click's navigation ++redirect chain doesn't always surface a download event, and the click sometimes bounces to+`/register`). **Reliable recipe: read the href and navigate to it directly** — Chrome follows the+redirect and downloads the ZIP to the Downloads folder:++```+href = pup_eval {"expr":"(document.querySelector('a.ecad-model-button')||{}).href"}+pup_navigate {url: href} # follows tracker → /partApi/model/download → ZIP lands in Downloads+```++Then confirm the file: `LIB_<MPN>.zip` in the user's Downloads (magic `PK`). The archive contains+per-format subfolders (`Altium/*.SchLib`+`*.PcbLib`, `OrCAD_Allegro16/`, `Capture/`, `DEHDL/`,+`How_To_Use_Models.pdf`, `license.txt`). To pull it into the container, use `desktop_pull_file`.++## Gotchas++- **Profile completeness:** a partially-registered CSE account can bounce the download to `/register`+ (Company / Job Role required). If the download redirects to registration, the account needs its+ profile completed once (a human step); after that, downloads flow.+- **Token freshness:** the tracker `?r=` token is per-render — re-read the href on the current part+ page each time; don't cache it.+- The default output format is set in the account's model preferences; the ZIP bundles multiple+ formats regardless, so KiCad/Altium/OrCAD are all present.