Repository navigation
Added
-
run_flowreports progress — the step it is on, and a heartbeat while one waits — so a long run stays alive in clients that abort a silent call, and shows as a progress bar where the client draws one. -
A flow can declare its own
timeout, in seconds, for a run that exists to wait longer than the default. -
A refused tool call says what shape it wanted —
css="button.go"is toldselector={"css": "button.go"}, in the same wordssave_flowuses for a step. -
outlinelists a page's content before its navigation, header, footer and sidebars, says whichregioneach entry is in, and reports atotalso a cut-short map says so. -
VS Code Copilot can read everything without
?resources=off. A client whose model cannot read resources is recognised and givenlist_resourcesandread_resource(uri), and told so in its instructions. -
Resources have readable names, and flow and file names complete in a client's resource and prompt pickers.
-
printkeeps the page as a PDF or as HTML, withlandscapeandbackgroundfor a PDF. -
open_session(insecure=true)accepts a self-signed certificate, for that session's browser. -
The admin UI's session page has Files and Flows tabs, and Files is three rows — Downloads, Screenshots and Files — each cleared the way that fits it.
-
The lightbox steps with ‹ Prev / Next › and the arrow keys, and Keep in it moves on to the next screenshot.
-
A Secrets tab lists every secret's keys and where it may be used — never a value — and the flows that type it, including names no secret answers to.
-
A source install can skip the admin UI. Without
npm --prefix ui run build, the admin page reads "Selenium Flow" and no MCP App is offered; every tool still works.
Changed
-
The admin page is faster: Secrets and flow listings load at once where a couple of dozen flows took over a second, and Files and the session list no longer slow down as screenshots pile up.
-
A flow run's default budget is 120 seconds, down from 300. A flow meant to wait longer sets
timeout. -
A failed MCP call reads like a failed HTTP call — no Selenium stack dump for the caller, and a caller's mistake is one warning line in the log rather than a traceback.
-
BREAKING:
current_session,selenium_flow_skill,list_flows,get_flow,flow_schemaandlist_secretsare gone. Everything they returned is a resource —session://current,skill://selenium-flow/SKILL.md,flow://flows,flow://flows/{name},flow://schema,secret://secrets— read directly or withread_resource.session_filesis listed only to hosts that render MCP Apps. -
BREAKING:
--stateless/STATELESS_HTTPis removed. Run one replica. -
BREAKING:
save_pdfisprint, atPOST /browser/print. -
Screenshots and prints are kept with the session from the start, on any page, and outlive the browser. They need
FLOW_DATA_DIR; a second of the same name is kept asname (1). -
Tool descriptions are half as long, and hints, errors, prompts and the skill name what to read by URI.
-
BREAKING: screenshots are kept in
session://files/screenshotsuntil kept or cleared;session://fileslists Files and names the screenshots and downloads folders, and entries carry auriinstead ofkept. -
BREAKING:
keep_filetakes a file'suri— a screenshot moves into Files, a download is copied — andupload_file(kept=)isupload_file(file=uri), for any file. -
BREAKING:
PUT /files/{name}/keptisPUT /files/screenshots/{name}/keptorPUT /files/downloads/{name}/kept, besideGET /files/screenshotsandGET /files/downloads. -
BREAKING: a server configured for Redis that cannot reach it now refuses to start, rather than running on in-memory sessions until someone notices.
-
BREAKING:
POST /browser/uploadno longer takes asessionfield; a file is always read from the calling session.
Fixed
-
Stopping the server is prompt and quiet with the admin page open: SIGTERM finishes in a fraction of a second instead of waiting out a 2s timeout and logging a traceback.
-
A slow browser action or flow run over HTTP no longer stalls the server; MCP calls, the admin page and
/healthanswer while it runs. -
Cancelling
run_flowstops the run instead of leaving it to drive the browser to the end. -
Error messages keep their XPath.
//input[@name='q']was cut to//name='q']by the credential scrub. -
The flow document schema resolves its selectors; every step's
selectorreferenced a definition the schema did not include. -
A PDF saved from a plain-http page, or a second screenshot on
about:blankor adata:page, is no longer lost. -
A failed resource read no longer quotes the Grid's internal URL, and a caller's bad read is one warning line in the log.
-
GET /secretsis in the OpenAPI spec and the wiki. -
The MCP App now starts. Its SDK ships bundled and pinned, instead of loading from a CDN URL that 404'd.
What's Changed
- A long flow run reports progress, can be cancelled, and sets its own budget by @kferrone in #37
- A refused call names the shape it wanted, and outline puts content first by @kferrone in #38
- Everything to read is a URI, and two tools read one for clients that cannot by @kferrone in #39
- print replaces save_pdf and keeps files directly, read errors are scrubbed, /secrets is documented by @kferrone in #40
- The Hangar: Downloads, Screenshots and Files, tabs, a stepping lightbox, and Secrets by @kferrone in #41
- The admin UI on Svelte: same page, real components, a smaller build by @kferrone in #42
- deps(docker): Build the UI on node:26 by @dependabot[bot] in #43
- deps(npm): Bump @types/node from 24.13.6 to 26.6.1 in /ui by @dependabot[bot] in #44
- Secrets and flow listings load at once: libyaml, and parsed flows cached by content by @kferrone in #45
- deps(npm): Bump @types/node from 26.6.1 to 26.6.2 in /ui in the npm-minor-patch group by @dependabot[bot] in #46
Full Changelog: v0.2.0...v0.3.0
Container image
The image is what this repo ships, and what the cluster runs:
docker pull kubed/selenium-flow:v0.3.0Python package
Not on PyPI. The wheel and sdist are attached to this release:
pip install https://github.com/kubed-io/selenium-flow/releases/download/v0.3.0/kubed_selenium_flow-0.3.0-py3-none-any.whlOr straight from the tag:
pip install git+https://github.com/kubed-io/selenium-flow.git@v0.3.0