<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pi-castle-cdp-search.git/.gitignore, branch master</title>
<subtitle>Search castle's Chrome tabs and history over CDP</subtitle>
<id>https://git.soarez.net/sz/pi-castle-cdp-search.git/atom/.gitignore?h=master</id>
<link rel='self' href='https://git.soarez.net/sz/pi-castle-cdp-search.git/atom/.gitignore?h=master'/>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/pi-castle-cdp-search.git/'/>
<updated>2026-08-03T20:18:02Z</updated>
<entry>
<title>Web search for pi through an existing Chrome over CDP</title>
<updated>2026-08-03T20:18:02Z</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-08-03T20:18:02Z</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/pi-castle-cdp-search.git/commit/?id=495de0d5283dd3e4a6ef715b596c4a2892e95915'/>
<id>urn:sha1:495de0d5283dd3e4a6ef715b596c4a2892e95915</id>
<content type='text'>
Attaches to a browser that is already running — never launches one —
using the same endpoint configuration as pi-browser-harness, so a single
/browser-target choice governs both packages.

One tool, castle_cdp_search, deliberately not named web_search so it
coexists with pi-web-access rather than shadowing it.

Notes from validating against castle's Chrome:

- tbs=qdr:*, the parameter Google's own Tools menu writes, renders an
  empty page on this profile; the older as_qdr=* works. Any date filter
  combined with udm=14 is also empty, so recency drops udm.
- Target.createTarget must not be raced against the abort signal:
  raceAbort abandons the promise but cannot cancel the command, and the
  command's side effect is a tab nothing is left holding.
- A search cancelled while queued has to be removed from the semaphore
  queue, or the slot handed to it later is never counted back.
- A decaying rate-limit block stops serving /sorry/ and returns an empty
  results page instead, indistinguishable from a genuine zero-hit search.
</content>
</entry>
</feed>
