Releases: tea-tools/pi-fox
Releases · tea-tools/pi-fox
Release list
pi-fox v1.0.6
Fixed
/searchand "Add a provider" wizard now collect the API key via an inline text prompt and save it directly tosettings.json; previously both flows only printed manual-setup instructions and saved nothing.
pi-fox v1.0.5
[1.0.5] - 2026-06-28
Changed
- Updated development dependencies to pi SDK v0.80.2; no runtime changes for extension consumers.
- Removed three unused runtime dependencies (
@mozilla/readability,linkedom,p-limit); content extraction has always used Turndown directly.
Fixed
ImageContentshape updated to the flat{ data, mimeType }format introduced in SDK v0.80.2 (was using the old Anthropic APIsource: { type, mediaType, data }wrapper).- Explicit return-type annotation added to
execute()functions with multipledetailsshapes, resolvingAgentToolResult<T>inference failures under TypeScript 6.0. - Dead second parameter removed from the internal
toolErrorhelper and its 11 call sites. - CHANGELOG compare links for versions 1.0.3 and 1.0.4 were missing;
[Unreleased]still pointed at v1.0.2. All links now correct. browser_forwardnow mirrors thebrowser_backSPA guard: arms apopstatemarker and useswaitUntil: "commit"so same-document (pushState) forward entries no longer time out with a false failure.browser_tab_newno longer leaks the newly created page on navigation failure; the tab is closed before the error is re-thrown.web_searchwithincludeContent: truenow returnscontentFetchIdin its result details, making the background-fetched page bodies retrievable viaget_search_content.urlToCacheKeynow appends a DJB2 hash of the full URL so two URLs sharing the same first characters no longer collide in the fetch cache.browser_networkclear now also clearspendingNetworkQueue; previously pending entries accumulated across repeated clears.browser_keycountis now clamped to[1, 100]before the press loop; previously negative or very large values caused silent no-ops or indefinite hangs.
v1.0.4
Fixed
- Provider menus in
/searchand/browser(switch / add / remove / custom-provider wizard) passed{ value, label }option objects to the pi SDK'sui.select, which renders and returns plain strings — so menus showed[object Object]and a selection returned an object instead of an id, corrupting config (e.g.activeProvider). Menus now pass string labels and map the choice back to its value; rows are label-only.
Also in this release (repo-only, not in the npm tarball): a GitHub Actions test workflow and a package-lock.json refresh to pi SDK 0.79.9.
v1.0.3
[1.0.3] - 2026-06-18
Changed
- Align tool failure behavior with pi SDK v0.79.7: extension tools now throw for failed executions instead of returning
isError: true, so pi marks failures as actual tool errors. browser_dialognow uses pi's Google-compatibleStringEnumhelper for itsaccept/dismissaction schema.
Fixed
- Declared the
@earendil-works/pi-aipeer dependency used by theStringEnumschema helper.
v1.0.2 — Documentation release
Documentation release (no runtime changes). Version bump so npm serves the updated README.
Fixed
- Install docs: npm path now includes
npx playwright install firefox(no postinstall — the browser binary must be fetched once, or browser tools fail on first use). - Corrected a broken Credits link (pointed at a non-existent
earendil-works/pi-coding-agent; now links canonicalearendil-works/pi).
Changed
- README overhaul: Highlights section, merged Install + Setup into one procedural flow, lowercase pi / pi-fox wordmark, consistent "Markdown" terminology, trimmed redundancy.
v1.0.1
Added
- Eight browser tools:
browser_scroll,browser_key,browser_hover,browser_drag,browser_upload_file,browser_console,browser_network,browser_dialog - Capture infrastructure (
CaptureState) — console logs, network requests, and dialog handling collected automatically and surviving browser restarts browser_clickaccepts optionalx/yto click by viewport position (no selector) — for strict-CSP and screenshot-driven flows
Changed
- Custom search providers now require
browserExt.trustCustomProviders: trueto load — their transforms run arbitrary code, so they stay inert until trusted
Removed
- Dead code: unused
Result<T>andfindCacheByUrl()
Fixed
browser_backobserves same-documentpushState(SPA) navigation (waits onpopstate, notload)browser_tab_closeruns the tab's unload lifecycle (pagehide) before switchingfetch_contentrevalidates every redirect hop (see Security)- Firefox/Playwright compatibility for
browser_hover,browser_scroll,browser_key,browser_type
Security
fetch_contentSSRF guard —http/httpsonly; rejects loopback/private/link-local/cloud-metadata IPs on the resolved host and every redirect hop- Custom-provider code (
new Function) runs only withbrowserExt.trustCustomProviders: true(off by default) browser_upload_filehonorsbrowserExt.allowedUploadRootswhen set — symlink-safe, so paths can't escape an allowed root
v1.0.0
Initial public release (pi-fox).
Added
- Browser automation via Playwright (Firefox default): navigate, click, type, snapshot, screenshot, evaluate, wait, tab management, back/forward/reload/close
- Multi-provider web search (Brave, Perplexity, Tavily, Exa, Gemini) with automatic fallback, plus
code_search,fetch_content, andget_search_content /searchcommand hub — switch/add/remove providers and onboarding (replaces/web-switch);/search <id>for instant switching/browsercommand — engine settings (headless, supervised-mode screenshots)- Custom search provider wizard — add any search API via
/searchwithout editing source; singleasync function(query, n, apiKey, fetchJson)transform contract with a live raw→mapped test and an editable draft template fetch_contentHTML→Markdown via Turndown, with a plain-text fallback- Optional supervised mode — auto-screenshot after each browser action