Pi Web Access 0.30.0 starts faster, gives you tighter control over web tools, and expands OpenAI search options. Published installs now load a precompiled bundle, while source checkouts keep the same TypeScript development workflow. You can reuse an existing Pi provider URL for OpenAI search, opt into standalone search, restrict available providers and fetch modes, or use the new Serply provider. This release also improves proxy isolation, OpenCode compatibility, PDF answers, source checks, and stored-content retrieval.
Highlights
- Start installed copies of Pi Web Access much faster with a precompiled bundle.
- Use standalone OpenAI search or reuse an existing Pi provider URL without duplicating gateway configuration.
- Control which search providers and fetch modes are available.
- Search Google through the new explicit Serply provider.
- Get more reliable proxy handling, OpenCode requests, PDF answers, source checks, and stored-content retrieval.
Need to know
- Fresh installs now use the silent
noneweb search workflow by default. Existing explicit or configured Curator and summary workflows are unchanged.
Full changelog
Highlights
- Start installed copies of Pi Web Access much faster with a precompiled bundle.
- Use standalone OpenAI search or reuse an existing Pi provider URL without duplicating gateway configuration.
- Control which search providers and fetch modes are available.
- Search Google through the new explicit Serply provider.
- Get more reliable proxy handling, OpenCode requests, PDF answers, source checks, and stored-content retrieval.
Added
- Added opt-in
openaiUseProviderBaseUrlto reuse a selected Pi provider's URL and credentials for OpenAI search. An explicitopenaiResponsesUrlstill takes precedence. - Added opt-in
openaiUseAlphaSearchfor standalone OpenAI search, with source limits, recency filtering, allowed-domain filtering, and normal provider fallback. Existing Responses search remains the default. Thanks to @ZacharyQin for PR #420. - Added
fetch.defaultModeandfetch.allowedModesfor choosing the defaultfetch_contentmode and disabling unwanted modes. Thanks to @Slooz for #395. - Added
webSearch.allowedProvidersto restrict providers consistently across search, source checks, routing, aggregation, schemas, and Curator. Thanks to @Slooz for #396. - Added an explicit-only Serply Google Search provider with domain filtering, recency filtering, routing, and Curator support. Configure it with
serplyApiKeyorSERPLY_API_KEY. Thanks to Serply vendor @googio for PR #386.
Changed
- Published packages now load a precompiled bundle for faster startup, while source checkouts continue loading TypeScript directly. Thanks to @Yisus423 for issue #418 and PR #419.
- Fresh installs now use the silent
noneweb search workflow by default. Explicit and configured Curator or summary workflows are unchanged. Thanks to @ducaoya for issue #416.
Fixed
- Preserve legacy
~/.pi/web-search.jsonconfiguration when~/.pi/agent/web-search.jsonis absent in default environments withoutXDG_CONFIG_HOME. Thanks to @fancyboi999 for issue #411. - List Crawl4AI in the README provider summary and the package description, which both still omitted it after the provider shipped in 0.29.0. Thanks to @bergheim for PR #382.
- Removed the unconditional global
fetchreplacement during extension initialization; proxy transport is now installed lazily when a proxied web-tool operation runs. Thanks to @AdrianJ20 for issue #388. - Send OpenCode session attribution headers when generating summaries, preventing configured
opencodeandopencode-gosummary models from silently falling through to another candidate. Thanks to @damozhang for issue #385. - Send the
x-opencode-session/x-opencode-clientattribution headers whenfetch_contentanswer mode uses anopencodeoropencode-gomodel. The answer path dispatches through the model registry, which bypasses the attribution headers Pi merges in the main agent loop, so those requests were rejected with400 MissingSessionID. Thanks to @MrSerious0 for PR #381. - Pass extracted PDF Markdown to
fetch_contentanswer mode instead of the saved-file notice, while preserving readable-mode file output and stored-content retrieval. Thanks to @MDGChamomile for PR #390. - Prevent malformed
fetch_contentauth, mode, or proxy parameters from breaking tool-call rendering while preserving strict execution validation. Thanks to @tekumara for issue #387. - Clarified that a negative
fetch_contentanswer-mode result means the answer was not found in the extracted content, rather than asserting that it is absent from the whole page. Thanks to @Slooz for issue #394. - Stop inferring claim support or contradiction from unrelated lexical markers in
source_check; retrieved passages now require manual semantic review. Thanks to @wayenchan for issue #383. - Return bounded
get_search_contentexcerpts instead of dropping oversized merged match ranges, using compact query IDs to reserve representative ranges when discovered spans fit the output budget. Thanks to @MDGChamomile for PR #391.