Skip to content

v0.3.0

Latest

Choose a tag to compare

@kubed-io kubed-io released this 26 Sep 16:00
· 32 commits to main since this release
bce36b8

Publish
Image Builder
Tests
Quality

Added

  • run_flow reports 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 told selector={"css": "button.go"}, in the same words save_flow uses for a step.

  • outline lists a page's content before its navigation, header, footer and sidebars, says which region each entry is in, and reports a total so 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 given list_resources and read_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.

  • print keeps the page as a PDF or as HTML, with landscape and background for 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_schema and list_secrets are 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 with read_resource. session_files is listed only to hosts that render MCP Apps.

  • BREAKING: --stateless / STATELESS_HTTP is removed. Run one replica.

  • BREAKING: save_pdf is print, at POST /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 as name (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/screenshots until kept or cleared; session://files lists Files and names the screenshots and downloads folders, and entries carry a uri instead of kept.

  • BREAKING: keep_file takes a file's uri — a screenshot moves into Files, a download is copied — and upload_file(kept=) is upload_file(file=uri), for any file.

  • BREAKING: PUT /files/{name}/kept is PUT /files/screenshots/{name}/kept or PUT /files/downloads/{name}/kept, beside GET /files/screenshots and GET /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/upload no longer takes a session field; 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 /health answer while it runs.

  • Cancelling run_flow stops 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 selector referenced a definition the schema did not include.

  • A PDF saved from a plain-http page, or a second screenshot on about:blank or a data: 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 /secrets is 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.0

Python 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.whl

Or straight from the tag:

pip install git+https://github.com/kubed-io/selenium-flow.git@v0.3.0