Releases: agent-labs-dev/fastbrowse
Releases · agent-labs-dev/fastbrowse
Release list
v0.4.2: chore: 0.4.2 (#80)
- A form is set up in the order that works. Its mode - which tab of a search, which kind of account or
ticket, which category - decides which fields it has and empties what they hold, so it is chosen before
any value is typed rather than after, which used to mean typing the values twice. The filters a task asks
for are set before submitting where the form offers them, because setting one afterwards submits twice,
and a filter the page only reveals once there are results is set there. On a flight search this removed
five steps of rework; on a two-package comparison it removed the repeated writes to the search box that
had made it the most expensive lookup in the suite.
v0.4.1
- A secret can be declared for a site rather than for one of its hosts.
https://*.example.comcovers
www.example.com,accounts.example.comandexample.comitself, which is how one sign-in spans a site:
the login typed on the account host is the login the shop host asks for. The wildcard
stands for whole labels only, so it does not coverexample.com.evil.test, and neither the scheme nor the
port is ever wildcarded. An exact origin behaves exactly as before. This reaches the MCP server too
(--secret NAME=ENV_VAR@https://*.example.com), where each secret keeps the scope it was declared with
rather than the start page's. ScopedSecrets.per_secret({name: (value, origins)})holds a person's credentials each scoped to the
sites it belongs to, for an application that stores them that way. The single-origin constructor is
unchanged.- An IPv6 origin survives being read back.
origin_ofreturnedhttps://::1, which is not a URL any
parser reads again, so a check against an IPv6 origin could raise rather than answer. The literal keeps its
brackets.
v0.4.0
Everything an application needs to run fastbrowse as its browser engine rather than as a command someone
types. Each of these came from wiring it into a product that already had one.
- Drive a browser you already have.
cdp_urlattaches to any browser over the DevTools protocol,
wherever it runs: a container, a VM, a machine you own. The run opens one tab and closes that tab, so a
browser handed over is left exactly as it was found, and nothing is billed to a cloud account. This is the
option to reach for when the browser should live next to the user rather than in someone else's cloud. - Start from the task alone.
startis optional now. A caller whose own interface takes a goal and no
URL had nowhere to get one; the first address is worked out from the task, as a person would.--start
is optional in the CLI andstartis optional on the MCP server'sbrowsetool, wheretaskis now the
only thing a call must carry, and it holds for an attached browser too, which the run opens its own tab on.
A secret is only ever typed on the start origin, so asking for one without a start page is refused rather
than quietly dropped. - Stop a cloud browser you did not start. The browser event carries the cloud browser's id, so an
application that has to end a run out of band (a user pressing cancel, a subscription ending) can. proxy_countryandviewportreach a cloud browser the run starts, instead of being fixed at what
the library guessed.
Fixed in the same release, from tasks that failed in the field:
- A list longer than one page is answered from the whole of it. A task over a paginated catalogue read the
first page, answered from it and called that done. The run now follows the pager until what was asked for is
evidenced or the page cap is reached, the reader is told when the page it is reading continues, and a claim
about a whole list is not accepted from one page of it. - A bot check is reported as one.
Status.BLOCKEDis new: a CAPTCHA is not a sign-in and no credential
passes it, so a run that meets one says so rather than ending asstuck. A challenge that clears itself once
its script runs is still waited out first, and the check is made whether or not a secret is held for the site. - A reply cut short is asked for again. A read whose answer hit the output limit was parsed as though it
were whole, so facts after the cut were lost without a word. --jsonkeeps its contract on a bad limit.--max-steps 0printed a traceback and nothing parseable; it
is now refused like any other bad flag, with the error on stdout as JSON.- A limit reads as what it is in the message that reports it: a dollar limit as money, a duration as a
duration.
v0.3.4
- A step frame can no longer carry a secret the step itself revealed.
Config(step_frames=True)checked
whether a resolved secret was on screen using the reading of the page the step was decided from, which is
the page before the action ran. A fill that a page mirrors into ordinary text put the secret on the page
after that check, so the frame sent to the caller could contain it as pixels. The check now reads the page
as it is when the image is taken. Affects 0.3.2 and 0.3.3 with step frames enabled; no other surface sent
an image.
v0.3.3
What's Changed
- build: support Python 3.13, so an application pinned to it can depend on this by @cjber in #65
- chore: 0.3.3 by @cjber in #66
Full Changelog: v0.3.2...v0.3.3
v0.3.2
What's Changed
- feat: send the page a step acted on, for a caller showing the run live by @cjber in #63
- chore: 0.3.2 by @cjber in #64
Full Changelog: v0.3.1...v0.3.2
v0.3.1
v0.3.0
What's Changed
- feat: 15-task live eval suite with Bitwarden logins, and the agent fixes it found by @cjber in #9
- fix: tell identically labelled controls apart, and stop ending runs on one model's 'you never told me' by @cjber in #11
- feat(evals): jev-ultrafast arm, fair-arm grading, recordings and head-to-head results by @cjber in #13
- docs(evals): hosted Browser Use re-run with a $0.60 cap by @cjber in #14
- fix(evals): grade Google Flights on the search it rendered, not its URL by @cjber in #17
- perf: accept DONE on confirmed requirements without the LLM verifier by @cjber in #18
- fix(evals): grade the form behind a popup the run left open by @cjber in #19
- General fixes from a dev/held-out split: frames, icons, hover, action effects, loop budget by @cjber in #15
- docs(readme): demo GIF from a nonstop Google Flights search by @cjber in #20
- fix: read typed-search results before leaving them (#7) by @cjber in #21
- fix: count a derived comparison as met when the notes hold its facts (#7) by @cjber in #22
- perf: verify on flash-lite by @cjber in #23
- feat(evals): keep each run's step log and judgement trace in the eval row by @cjber in #26
- fix: cite every note a comparison claim is drawn from by @cjber in #24
- feat(evals): count wasted actions next to pass rate by @cjber in #25
- fix: let recovery direct a read, scroll, back or escape, not only a control by @cjber in #27
- docs: head-to-head results from three passes on every arm by @cjber in #30
- fix(evals): keep a hosted session's cost when its output fails the schema by @cjber in #31
- fix: draw the page before moving the pointer onto a point measured in the DOM by @cjber in #32
- fix: treat a return to an earlier page state as no progress (#12) by @cjber in #28
- fix: try the start page again once when the browser cannot reach it by @cjber in #33
- fix(evals): judge a repeated action by the page it was taken from by @cjber in #34
- fix: try the start page again when it never finishes loading by @cjber in #35
- fix: let a finish stand when the verifier doubts only what the notes cite (#7) by @cjber in #36
- build(evals): run both other arms on their latest releases by @cjber in #37
- fix: wait for an empty page to draw before reading it by @cjber in #38
- docs(readme): lead with the Browser Use comparison and what fastbrowse wins by @cjber in #41
- perf: act on Jev's unsure pick once per page state before paying for recovery by @cjber in #39
- fix: act on a redrawn control's one twin instead of deciding again by @cjber in #40
- fix: outlast a brief provider outage instead of losing the run to it by @cjber in #42
- docs(readme): add experimental warning notice by @furqanrydhan in #50
- docs(security): record provenance and checksum for vendored autoconsent by @furqanrydhan in #48
- docs(security): add a security policy and disclosure channel by @furqanrydhan in #47
- security(ci): pin actions to commit SHAs and add gitleaks secret scan by @furqanrydhan in #46
- feat: serve fastbrowse to MCP clients as one browse tool by @cjber in #43
- refactor(mcp): share the CLI's browser and secret rules instead of restating them by @cjber in #52
- fix: read the package's own text files as UTF-8, and format a day portably by @cjber in #44
- feat: read a list split across pages whole, and stop repeating a click that did nothing (#12) by @cjber in #53
- chore: 0.3.0 by @cjber in #51
New Contributors
- @furqanrydhan made their first contribution in #50
Full Changelog: v0.2.0...v0.3.0
v0.2.0
What's Changed
Full Changelog: v0.1.0...v0.2.0
v0.1.0
What's Changed
- feat: a browser agent that picks instead of generating by @cjber in #1
- perf: cut a task from 44s to 38.5s, and fix the fill that stalled on its own suggestions by @cjber in #2
- perf: 26.7s a task, draft answers, and the open-source readiness review by @cjber in #3
- perf: faster than hosted Browser Use (12.9s median), Jev grounded in Typesafe docs by @cjber in #4
- docs(readme): Browser Use comparison only; build: version 0.1.0 by @cjber in #5
New Contributors
Full Changelog: https://github.com/agent-labs-dev/fastbrowse/commits/v0.1.0