Skip to content

Releases: nicobailon/pi-web-access

v0.24.2

Choose a tag to compare

@nicobailon nicobailon released this 22 Aug 23:33

Pi Web Access 0.24.2 makes automatic search routing feel more natural in Codex sessions and fixes the Windows Gemini Web cookie path added in the last release. If you run Pi with a Codex model, auto search now tries Codex-backed OpenAI search before Exa. Other sessions keep the existing Exa-first behavior. Windows Chrome and Edge users should see fewer false cookie failures when using Gemini Web browser-cookie access.

Highlights

  • auto search now uses Codex-backed OpenAI search when Pi is running a Codex model.
  • Non-Codex sessions still prefer Exa first, so zero-config search keeps its fast keyless path.
  • Gemini Web browser-cookie access is more reliable on Windows Chrome and Edge profiles.

Full changelog

Highlights

  • auto search now uses Codex-backed OpenAI search when Pi is running a Codex model.
  • Non-Codex sessions still prefer Exa first, so zero-config search keeps its fast keyless path.
  • Gemini Web browser-cookie access is more reliable on Windows Chrome and Edge profiles.

Changed

  • Prefer Codex-backed OpenAI search in auto mode when the active Pi model is openai-codex; otherwise prefer Exa before OpenAI.

Fixed

  • Fixed Windows Gemini Web browser-cookie extraction when Chromium cookie expiry values are too large for JavaScript numbers or PowerShell DPAPI key unprotect needs encoded command transport. Thanks to @laixuanthoi for issue #290.

v0.24.1

Choose a tag to compare

@nicobailon nicobailon released this 21 Aug 21:05
fbbd0cb

Added

  • Added pdf.maxPages to limit Datalab, Gemini, and local PDF extraction to the first N pages. Thanks to @jaudiger for issue #277.
  • Added optional openaiSearchProviders config to choose which Pi model providers fund OpenAI web_search, in priority order. Thanks to @hank-warren for PR #276.
  • Added Windows Chrome and Edge browser-cookie support for Gemini Web. Thanks to @laixuanthoi for issue #286.

Fixed

  • Hardened GitHub clone cache path handling. Thanks to @dsvi-b and @spikelab for the responsible disclosures.
  • Updated the local fetch_content HTTP User-Agent for wider compatible content retrieval. Thanks to @_can1357 for the User-Agent observation.
  • Replaced inline RFC 2397 data: URIs in extracted page content with explicit bounded omission markers before content reaches tool results, the fetch cache, or session persistence.
  • Detached Linux curator browser launches so xdg-open cannot block web_search until the browser exits. Thanks to @nguyenphivn for issue #279.
  • Allowed configured Firecrawl API base URLs to use loopback addresses without opening loopback for submitted fetch targets. Thanks to @ackalker for issue #280.

v0.24.0

Choose a tag to compare

@nicobailon nicobailon released this 18 Aug 17:38

Pi Web Access 0.24.0 makes search and fetching more capable and less fragile. You can now use more providers, including Parallel Search MCP, Valyu, and Serper. Pages that hide their real article in Next.js or React Server Components payloads are recovered more reliably. Summary and query rewrite defaults now prefer newer fast models, and nested model calls follow Pi's model registry routing.

Highlights

  • Added more provider choices, including Parallel Search MCP, Valyu, and Serper.
  • Made fetch_content recover useful article text from more Next.js and React Server Components pages.
  • Updated summary and query rewrite model defaults to newer fast models.
  • Made nested summary and rewrite model calls follow Pi's model registry routing.
  • Added more control over summary thinking levels and provider API base URLs.

Full changelog

Highlights

  • Added more provider choices, including Parallel Search MCP, Valyu, and Serper.
  • Made fetch_content recover useful article text from more Next.js and React Server Components pages.
  • Updated summary and query rewrite model defaults to newer fast models.
  • Made nested summary and rewrite model calls follow Pi's model registry routing.
  • Added more control over summary thinking levels and provider API base URLs.

Added

  • Added summaryModel thinking-level suffix support. Thanks to @pkos98 for issue #264.
  • Added explicit-only Parallel Search MCP support for keyless search and opt-in hosted fetch. Thanks to @happytomatoe for #257.
  • Added explicit-only Valyu and Serper search providers. Thanks to @mikhel01 for issues #259 and #260.
  • Added configurable API base URLs for Brave, keyed Exa, and Tavily requests, with credential stripping across redirect origins. Thanks to @XWIlluDelu for #265.

Changed

  • Refreshed default summary and query rewrite model preferences. Thanks to @hyein-cbio for #266.

Fixed

  • Route nested model calls through Pi's model registry. Thanks to @rany2 for #263.
  • Recover useful Next.js RSC content when Readability only extracts a loading shell, and report full, partial, or failed background content fetches accurately (#272, #273).
  • Keep valid AnySearch results when the API omits or nulls result content. Thanks to @mikhel01 for #258.

v0.23.0

Choose a tag to compare

@nicobailon nicobailon released this 15 Aug 00:53

Added

  • Added opt-in authFetch profiles for local browser-cookie fetch_content requests. Thanks Luka (@lmilojevicc) for issue #254.
  • Added Firecrawl as a web_search provider using the existing Firecrawl configuration. Thanks Andrés Sanabria (@andy-spike) for issue #246.
  • Added macOS Brave profile support for opt-in Gemini Web browser-cookie access. Thanks Rajyavardhan Singh (@imrajyavardhan12) for PR #248.

Changed

  • Made local-video detection use an explicit result state in extraction code.

Fixed

  • Preserve summary draft completion routing through the model registry. Thanks @limwa for PR #249.
  • Constrain numeric tool parameters to supported integer ranges. Thanks @jaudiger for issue #250 and PR #251.

v0.22.0

Choose a tag to compare

@nicobailon nicobailon released this 11 Aug 21:06

Added

  • Added Bocha web search provider support. Thanks @jingyulong for PR #243.
  • Added maxInlineContentChars to configure the direct content and stored-content slice limit, with a 200,000-character maximum. Thanks @be4zad for issue #244.

Fixed

  • Hardened the fetched-content cache against symlink traversal and unsafe permissions, and bounded it to 128 entries and 128 MiB with oldest-entry eviction. Thanks @HerbertGao for issue #240 and PR #241.

v0.21.0

Choose a tag to compare

@nicobailon nicobailon released this 10 Aug 23:42

Added

  • Added per-tool and per-command registration gates plus image and PDF extraction gates. Thanks @jaudiger for issue #234.
  • Added summaryGenerationDeadlineMs to configure the summary model deadline for curator and auto-summary workflows. Thanks @cataldoc for issue #237.

Fixed

  • Store full fetched content in an external cache instead of embedding it in session JSONL entries, preventing large search-heavy sessions from ballooning on restore. Thanks Igor Samokhovets (@samohovets) for issue #236.
  • Document get_search_content parameter constraints in the tool schema. Thanks @iwangjie for PR #233.

v0.20.0

Choose a tag to compare

@nicobailon nicobailon released this 10 Aug 06:16

Added

  • Added keyless DuckDuckGo HTML search as an explicit and routing provider. Thanks @lmilojevicc for issue #228.
  • Added Datalab hosted PDF-to-Markdown extraction as an optional PDF provider. Thanks José Antonio Galiano Sandoval (@jagaliano) for PR #226.

Changed

  • Tightened Datalab JSON response validation and Gemini Web fetch initialization internals.

Fixed

  • Fix Gemini Web "fetch failed" (UND_ERR_HEADERS_OVERFLOW) when running inside a host agent whose global undici dispatcher uses HTTP/1.1 with the default 16 KiB maxHeaderSize: Google's /app page exceeds that budget. Gemini Web requests now use a dedicated undici agent with a 4 MiB header budget. Thanks José Antonio Galiano Sandoval (@jagaliano) for PR #230.
  • Preserve collapsed web_search result background padding. Thanks @SheffeyG for PR #224.

v0.19.0

Choose a tag to compare

@nicobailon nicobailon released this 08 Aug 08:01

Added

  • Added Jina Search as a normal configured web_search provider with jinaApiKey / JINA_API_KEY, explicit/auto/routing/all-provider support, domain and recency constraints, optional inline page content, and Curator integration. Thanks Orbio Agent (@Gabrielgvl) for PR #214.

Fixed

  • Added a tracked npm lockfile for reproducible contributor installs, and updated model-registry auth header typing for current Pi peer packages. Thanks @dougEfresh for PR #218.
  • Keep manual /websearch curator pages in sync if the live SSE stream disconnects or misses events while searches are still running. Thanks @Whisperfall for issue #215.
  • Updated Kagi Search and Extract requests for the current v1 API contracts. Thanks @mattgaff for PR #217.
  • Recognize :max thinking suffixes when matching scoped summary models. Thanks @justin8ty for PR #219.
  • Route local video Gemini upload, polling, and deletion requests through configured geminiBaseUrl / GOOGLE_GEMINI_BASE_URL relays. Thanks Mr. (@Liemo99) for PR #213.
  • Classify xAI 403 spending-limit and quota-exhaustion responses as quota errors so configured search routing can fall back, while preserving ordinary 403 responses as authentication errors. Thanks @0xmarcinz for PR #212.

v0.18.0

Choose a tag to compare

@nicobailon nicobailon released this 03 Aug 03:21

Added

  • fetch_content can now return the original text response with mode: "raw", which is useful for JSON APIs, error pages, and debugging what a server actually sent.
  • fetch_content can now answer a question about a single fetched page with mode: "answer", while still saving the original page text so you can inspect it later.
  • Direct image links now work for PNG, JPEG, WebP, and GIF files. The tool downloads them safely, resizes large images, and returns an inline image result.
  • get_search_content now accepts findText and findMode, so you can search saved content for the passage you need instead of paging through a long page by hand. Inspired by @xl0's pi-lovely-web project.
  • Added optional searxngHeaders so self-hosted SearXNG requests can carry reverse-proxy or Zero Trust auth headers. Thanks @preinpost for PR #202.
  • Added explicit-only xAI/Grok search with xaiApiKey / XAI_API_KEY, Pi model-registry auth, and optional xaiSearchModel. Thanks @join3r for PR #196.
  • Added explicit-only Bright Data SERP search with brightdataApiKey / BRIGHTDATA_API_KEY credentials and a required brightdataSerpZone / BRIGHTDATA_SERP_ZONE zone of Bright Data type serp. Bright Data is never chosen by auto and never participates in provider: "all". Thanks @mo-root for PR #198.
  • Added Bright Data Web Unlocker as a paid fetch_content extraction fallback with brightdataApiKey / BRIGHTDATA_API_KEY credentials and a required brightdataUnlockerZone / BRIGHTDATA_UNLOCKER_ZONE zone of Bright Data type unblocker. Thanks @mo-root for PR #199.
  • Added Kagi Search API support with kagiApiKey / KAGI_API_KEY, plus Kagi Extract as a fetch_content fallback. Thanks @imlonghao for issue #197.
  • Added Ollama Cloud Web Search support with ollamaApiKey / OLLAMA_API_KEY, plus Ollama Web Fetch as a fetch_content fallback. Thanks @bradley-holt for issue #203.
  • Added explicit-only SerpBase Google SERP search with serpbaseApiKey / SERPBASE_API_KEY, domain filters as site: clauses, and recency mapped to Google tbs. Thanks @gefsikatsinelou for issue #195.

Changed

  • Long fetch_content results are easier to continue reading. The first response now stops on cleaner line boundaries and tells you the character, byte, and line totals plus the exact offset to request next.

Fixed

  • Fixed the fetch_content call header showing fetch (no URL) when Pi supplied url together with an empty urls array. Thanks @Vergil824 for issue #192.
  • Resolve preferred summary and query-rewrite models through routed provider registrations such as OpenRouter, preserving the registered provider and model ID instead of falling back when the native provider is unavailable. Thanks @robzolkos for issue #200 and PR #201.
  • GitHub clone subprocesses now disable interactive credential prompts and terminate their process trees on timeout or cancellation, preventing orphaned Git helpers from capturing terminal input. Thanks @MDGChamomile for PR #193.

v0.17.1

Choose a tag to compare

@nicobailon nicobailon released this 31 Jul 18:02

Fixed

  • Removed the unsupported JSON Schema uniqueItems keyword from provider-array tool schemas so Gemini-compatible tool validators can register pi-web-access tools. Thanks @akmaldira for PR #191.