Download Latest Version v26.5.31 source code.zip (2.3 MB)
Email in envelope

Get an email when there's a new version of Vibium

Home / v26.5.31
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-06-01 6.1 kB
v26.5.31 source code.tar.gz 2026-06-01 2.1 MB
v26.5.31 source code.zip 2026-06-01 2.3 MB
Totals: 3 Items   4.4 MB 0

A broad bug-fix release, driven almost entirely by community reports. The headline fix restores the npm package — v26.3.18 shipped without its dist/ folder, which broke require('vibium') / import 'vibium/sync', the bundled TypeScript types, and ESM binary resolution. Beyond that, this release fixes a wide range of issues across the CLI, the MCP server, and the JavaScript, Python, and Java clients — most surfaced by systematic cross-client testing.

📦 Packaging (npm) — repairs the broken v26.3.18

  • The npm package ships dist/ again, so require('vibium'), import 'vibium/sync', and the TypeScript declarations work. A self-healing prepack hook now rebuilds dist/ and refuses to publish an incomplete package. (#103 by @ichimond, [#127] by @snackattas, [#100] by @michaelhly)
  • ESM binary resolution fixedrequire.resolve failed under native ESM, so the vibium binary couldn't be located. (#62 by @cavoirom)

⚙️ Core engine (all clients)

  • fill no longer crashes on <textarea> ("Illegal invocation") — the value setter now matches the element's actual type. (#117 by @paulsmith, [#155] by @lana-20)
  • select errors on a non-matching option instead of silently "succeeding", and now matches by visible label, not just the value attribute. (#140 by @paulsmith) ⚠️
  • waitUntil / waitForFunction accept bare expressions, not only () => … functions. (#123, [#131], [#145] by @lana-20)
  • Clock methods error clearly when clock.install() wasn't called instead of silently doing nothing. (#125 by @lana-20) ⚠️
  • Script exceptions now surface a real error message instead of an empty one. (#111 by @Udit1305)

🤖 MCP server

  • Empty / null results no longer cause invalid_unionbrowser_evaluate of "", an absent attribute, and text-less elements return cleanly. (#154, [#153], [#157] by @lana-20)
  • Stringified numbers accepted — e.g. {"ms": "2000"}. (#85 by @tnsardesai)
  • browser_count no longer crashes on the numeric result. (#149 by @lana-20)
  • browser_storage_state parses BiDi's structured cookie values instead of crashing. (#150 by @lana-20)
  • browser_set_cookie derives the domain from the current page when omitted. (#152 by @lana-20)
  • browser_screenshot { annotate: true } no longer crashes. (#156 by @lana-20)

🖥️ CLI & error messages

  • No more Node stack traces on ordinary command failures — you get the binary's own message and exit code. (#161 by @paulsmith, [#111] by @Udit1305)
  • Errors are categorized correctly — validation/not-found failures are no longer mislabeled as timeouts (and no longer raise TimeoutError in the Python/Java clients). (#64 by @evanniedojadlo) ⚠️

🐍 Python client

  • page.eval() added as an alias for evaluate(). (#144 by @lana-20)
  • element.bounds() supports dict-style access (bb["width"], "width" in bb) alongside attribute access. (#147 by @lana-20)
  • Large pipe messages (e.g. base64 screenshots) no longer crash with LimitOverrunError. (#110 by @Jhoan0714)

☕ Java client

  • Fixed waitForURL (#129), addScript/addStyle (#130), dispatchEvent (#132), dragTo (#134), onError/collectErrors (#136), and clock time formats (#137) — mostly command/parameter mismatches with the engine. el.highlight() is now implemented engine-side (#133). (all reported by @lana-20)

🔧 Tooling & docs

  • make test-python upgrades pip before installing, so the editable install works on stock environments.
  • Windows: npm.cmd spawning, platform-binary copy, and process-cleanup fixes so make test passes on Windows.
  • The Windows and Linux dev-setup guides now list the JDK and Python prerequisites.

⚠️ Notable behavior changes

  • select now errors when the value matches no option (was a silent success) and matches by visible label.
  • Clock operations now error if clock.install() wasn't called first (was a silent no-op).
  • Non-timeout failures are no longer reported as timeouts — in Python/Java they raise a generic error instead of TimeoutError.

🧭 Known issues (deferred to a follow-up)

  • Click → daemon deadlock on native dialogs / navigation (#146, [#151], [#128])
  • Java page.expose() (#135)
  • The remaining CLI bugs tracked in [#112] (B6, B8–B33)

🙏 Thanks

This release was driven almost entirely by community bug reports. A huge thank-you to @lana-20 for an extraordinary amount of systematic, cross-client testing, and to @paulsmith, @Udit1305, @snackattas, @ichimond, @michaelhly, @cavoirom, @tnsardesai, and @Jhoan0714 for the reports that made these fixes possible.


What's Changed

Full Changelog: https://github.com/VibiumDev/vibium/compare/v26.3.18...v26.5.31

Source: README.md, updated 2026-06-01