Repository navigation
π Browser4 4.14.0
π Browser4 v4.14.0 Release Notes
Release Date: 2026-10-14 08:20:10 UTC
Java Version: 25+
Built by: @galaxyeye
Browser4 4.14.0 is the first stable release of the 4.14 line: the release-candidate cycle is closed and the runtime bundle, the CLI, the REST API and the Maven artifacts ship together under one version number.
- Scraping and formats are first-class. The
scrapecommand (alsoapi/scrapeover REST) captures a live tab as structured content,screenshotorpdf, with--output <dir>for binary results and a three-statestrictcontract for how hard a requested format must succeed. - Crawling and URLs are hardened. A crawl seed that is not a valid URL is refused up front, and URL normalization is consistent across the crawl queue, the snapshot origin check and the experience store β a reordered query string no longer reads as a different document.
- Sessions are visible across workspaces.
list --allnow spans every workspace's persisted sessions (--alland--verbosehad been silent no-ops on the CLI-dispatchedlistpath), with a Workspace column and honestStatus Unknownrows for sessions the current backend cannot verify. - A leftover process can no longer park a runner. The native-command and child-output drains are bounded: they return once both streams reach EOF or the deadline expires, and report which descendants still hold the pipes instead of blocking in a native wait that ignores Ctrl+C.
- Smaller sharp edges:
test.ps1 psrejects unknown arguments instead of silently running the whole suite, and the harness emits UTF-8 instead of the OEM code page, so non-ASCII output survives redirection (34 U+FFFD in one tail block before the fix, 0 after).
Upgrading from 4.13.x: the backend default port is 18182, and installing the runtime bundle keeps the bundle's plugins/, launcher scripts and manifest instead of copying only runtime/, lib/ and bin/.
-
list --allspans every workspace's persisted sessions -
bound the native-command drain so a leftover descendant cannot park the runner
-
bound the child output drain so a leftover descendant cannot hang the runner
-
reject unknown arguments for the ps target
-
emit UTF-8 instead of the OEM code page
-
keep the two newly-run suites honest about their environment
-
file the latest scenario evaluations and refresh the review template
Release gates: the JVM test suite, the Docker image, the runtime-bundle smoke tests on Windows/Linux/macOS, the CLI unit tests and the CLI e2e suite. The features that landed during the cycle β the formats layer, an offline and instant --help, browser-level CDP WebSocket attach, the tab-lifecycle fixes β are described in the v4.14.0-rc.* notes.
π¦ Release Highlights
π Release Statistics
| Metric | Value |
|---|---|
| π JAR Size | 105MB |
| π Commits | 11 |
| π₯ Contributors | 1 |
| ποΈ Build Date | 2026-10-14 08:20:10 UTC |
π Changes Since Last Release
- chore(ci): add task record for the v4.14.0 release.yml failure (d17a95543a)
- fix(ci): give the release CLI e2e step the same 30-minute budget as nightly (441d24140f)
- chore(release): 4.14.0 (3741ead296)
- docs(coworker): file the latest scenario evaluations and refresh the review template (9f5470727e)
- feat(cli): let
list --allspan every workspace's persisted sessions (19e575f9ea) - fix(rws): bound the native-command drain so a leftover descendant cannot park the runner (185175f6eb)
- fix(bin): bound the child output drain so a leftover descendant cannot hang the runner (a009882764)
- fix(bin): reject unknown arguments for the ps target (ddc98239c2)
- fix(scripts): emit UTF-8 instead of the OEM code page (a0b206124b)
- fix(ci): keep the two newly-run suites honest about their environment (0dc4db42ad)
- Auto-bump version to 4.14.0-rc.10 (4107ddc8b5)
π Quick Start
Self-contained install
Use the CLI to download the matching Browser4 runtime bundle for your platform:
browser4-cli install
browser4-cli openCLI & SKILLS
# Open a new browser window
browser4-cli open
# Navigate to a page
browser4-cli goto https://browser4.io
# Inspect the page β note the eN labels on interactive nodes
browser4-cli snapshot
# Interact using refs from the snapshot
browser4-cli click e15
browser4-cli type e15 "Hello World"
browser4-cli press e15 Enter
browser4-cli keydown Shift
browser4-cli mousemove 150 300
browser4-cli mousewheel 0 100
browser4-cli keyup Shift
# Take a screenshot and save it to disk
browser4-cli screenshot
# Use a custom server URL
browser4-cli open --server http://localhost:9090
# Execute multiple commands in one process
browser4-cli batch "open https://browser4.io" "snapshot"
# Stop on the first batch failure
browser4-cli batch --bail "open https://browser4.io" "click e1" "screenshot"
# Advanced: pipe batch commands as JSON via stdin
echo '[
["goto", "https://example.com/form-filling"],
["click", "#reset-btn"],
["fill", "#first-name", "Bob"],
["fill", "#last-name", "Smith"],
["fill", "#email", "bob@example.com"],
["select", "#country", "uk"],
["check", "#agree-terms"],
["click", "#submit-btn"]
]' | browser4-cli batch --json
# Close the session when done
browser4-cli closeπ Full Changelog
Built with β€οΈ by the Browser4 team
browser4-cli
This release also includes prebuilt browser4-cli binaries for:
- Linux x64
- Linux ARM64
- Linux musl x64
- Linux musl ARM64
- Windows x64
- macOS x64
- macOS ARM64
npm package:
npm install -g browser4-cli
CLI package version in this release workflow:
4.14.0
Self-contained Browser4 runtime bundles
This release also includes self-contained Browser4 runtime bundles with:
- a
lib/directory containingBrowser4Bundle.jarand all runtime dependencies - a minimal
jlink-built JRE underruntime/ - platform-specific launcher scripts in
bin/
Runtime model:
runtime/bin/java -cp "lib/*" <MainClass>
Supported release assets:
browser4-bundle-runtime-windows-x64.zipbrowser4-bundle-runtime-linux-x64.tar.gzbrowser4-bundle-runtime-darwin-arm64.tar.gz
Recommended install flow:
browser4-cli install
What's Changed
- fix(nightly-cli): restore Docker-backed backend; fix e2e runtime-dir cwd bug by @platonai in #585
- feat(network): agent browser Network / HAR capability & request routing by @platonai in #586
- test(e2e): repair the six nightly CLI scenarios that fail every night by @platonai in #608
- docs(crawl): keep crawl.md inside the M6 cap, and gate skill docs on change by @platonai in #610
- test(protocol): cover ProxyContext and the driver-pool closer, restoring the PR gate floor by @platonai in #612
Full Changelog: v4.13.23...v4.14.0