Skip to content

v0.0.2

Choose a tag to compare

@kubed-io kubed-io released this 10 Sep 20:41
· 81 commits to main since this release
48c5a0a

Publish
Image Builder
Tests
Quality

The first release. Everything is new, which is why there is no Changed or
Fixed below — both are relative to a version somebody is running, and there
isn't one.

Added

  • Drive a real Chrome or Firefox browser from an agent. Fourteen actions: open and end a browser, navigate, click, hover, type, press keys, read an element, screenshot, print to PDF, upload a file, switch frames, answer dialogs, resize, and run JavaScript.

  • Every action is an MCP tool and a plain HTTP endpoint, one to one. Hand the whole job to an agent over MCP, or drive the same actions yourself from an n8n HTTP node when you want exact control.

  • The browser stays open between calls, keeping its page, cookies and scroll position — it lives on the Grid, so a restart of this server does not lose it.

  • The server can hold your browser for you. Name your session with ?session=<name> on the MCP URL or an X-Session-Key header, and session_id becomes optional on every call.

  • A session outlives its browser. When the Grid reaps one, or an operator ends it, the session keeps the browser choice, the window size and the page it was on — so open_session() with no arguments puts you back where you were.

  • Chrome or Firefox, chosen per session with open_session(browser="firefox"). Every other action behaves identically on either.

  • session://current says what you are holding: the browser, the page, the window size, whether you are inside a frame, and whether the Grid still has it. Reading it never opens a browser.

  • Screenshots come back as images an agent can see — the viewport, one element, or the whole scrollable page.

  • save_pdf prints with the browser's own print engine, so the text stays selectable and the whole document is included rather than just the viewport.

  • Everything the browser downloads is kept with the session, alongside anything saved with screenshot(save=true) or save_pdf, and listed as session://files.

  • Signed file URLs, so a screenshot can be shown in a chat transcript or an <img> tag rather than described. Rotating the server token revokes every link.

  • An admin UI at /admin: live sessions, what each has downloaded, clickable thumbnails, the Grid's own console, and buttons to clear a session's files or end its browser. It updates itself as things change.

  • Bearer token auth on both surfaces. /health stays open so a kubelet can probe a pod that has no credentials, and reports Grid readiness rather than just process liveness.

  • GET /openapi.yaml describing the HTTP surface, generated from the MCP tool schemas so the two contracts cannot drift.

  • An Agent Skill ships inside the wheel, written as an index so an agent loads only the reference its task needs.

  • MCP Apps components: a host that implements the extension renders a file grid instead of JSON.

  • Sessions in memory or Redis, and --stateless for running more than one replica.

  • Ships as the kubed/selenium-flow image, and as a wheel attached to each release. The manual is the wiki.

What's Changed

  • ci: static analysis, audits and a package step for the PR flow by @kferrone in #1
  • fix(tests): run on Python 3.10, which the matrix proved they never did by @kferrone in #3
  • deps(pip): Update redis requirement from <7,>=5.0 to >=5.0,<9 by @dependabot[bot] in #2
  • refactor: a quality pass over code, tests and the lint that guards them by @kferrone in #4
  • chore: prepare the first release by @kferrone in #5
  • ci: stop the release notes being silently dropped, and two doc corrections by @kferrone in #7

New Contributors

Full Changelog: v0.0.1...v0.0.2

Container image

The image is what this repo ships, and what the cluster runs:

docker pull kubed/selenium-flow:v0.0.2

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.0.2/kubed_selenium_flow-0.0.2-py3-none-any.whl

Or straight from the tag:

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