# [Latest](https://github.com/browserless/chrome/compare/v2.24.3...main) - Dependency updates. # [v2.24.3](https://github.com/browserless/chrome/compare/v2.24.2...v2.24.3) - Dependency updates. - Pins Ubuntu@22.04 in Github Actions. - Fixes `headless` types to use `--headless=new` when prior libraries attempt to do `--headless=old` (older playwright). - Typing fixes. # [v2.24.2](https://github.com/browserless/chrome/compare/v2.24.1...v2.24.2) - Dependency updates. - Fix issues with Firefox when using a proxy. - Fixes for the `/meta` API in SDK projects. - Lint fixes. - Link fixes in this CHANGELOG.md file. # [v2.24.1](https://github.com/browserless/chrome/compare/v2.24.0...v2.24.1) - Dependency updates. - Fixes for /performance API in SDK projects. # [v2.24.0](https://github.com/browserless/chrome/compare/v2.23.0...v2.24.0) - Dependency updates. - Supports: - puppeteer-core: 23.10.1. - playwright-core: 1.49.0, 1.48.2, 1.47.2, 1.46.1, 1.45.3 and 1.44.1. - Chromium: 131.0.6778.33. - Chrome: 131.0.6778.109. - Firefox: 132.0. - Webkit: 18.2. - New `/meta` API route for getting details about the container (versions, etc). - Bump NodeJS to `v22.11.0`. - Add `libwebp-dev` for Webkit. - Add support for `trackingId` and `/kill/{id}` and `/kill/all`. - Prettier, internal fixes and improvements. # [v2.23.0](https://github.com/browserless/chrome/compare/v2.22.0...v2.23.0) - Dependency updates. - Fixes `--proxy-bypass-list` CLI arguments not being passed through with function API. - Addition of `fonts-open-sans` to image. # [v2.22.0](https://github.com/browserless/chrome/compare/v2.21.1...v2.22.0) - Dependency updates. - New SDK project command of `npm run install:browsers` to help with browser management. - SDK projects now appropriately handle routes when only certain browsers are available. # [v2.21.1](https://github.com/browserless/chrome/compare/v2.21.0...v2.21.1) - Dependency updates. - Ensure we don't load Chrome routes for SDK projects running linux/arm64. # [v2.21.0](https://github.com/browserless/chrome/compare/v2.20.2...v2.21.0) - Dependency updates. - Supports: - puppeteer-core: 23.4.1 - playwright-core: 1.47.2, 1.46.1, 1.45.3, 1.44, and 1.43. - Stream PDF using createPDFStream() in the PDF APIs. - Inject file-system managers in browser-manager. # [v2.20.2](https://github.com/browserless/chrome/compare/v2.20.1...v2.20.2) - Dependency updates. - Adds a fix to SDK routes that might not require a browser but browserless will still make one. # [v2.20.1](https://github.com/browserless/chrome/compare/v2.20.0...v2.20.1) - Dependency updates. - Fix issues where connecting to a bad /devtools/page route can cause 500's. # [v2.20.0](https://github.com/browserless/chrome/compare/v2.19.0...v2.20.) - Dependency updates. - Supports `puppeteer@23.3.0`. - Support `playwright@1.47.0`. - Use installed playwright-core for downloading browser binaries instead of `npx`, ensuring the appropriate browsers are installed. - Fix JSON routes 404-ing when charset is specified in the content-type header. - Disable the built-in debugger by setting `ENABLE_DEBUGGER=false`. - Automatically run prettier on file save in VS Code. - Windows fixes for SDK projects. - README link fixes. # [v2.19.0](https://github.com/browserless/chrome/compare/v2.18.0...v2.19.0) - Dependency updates. - Drop `sort-keys` for eslint integrations. - Fix devtools URLs when `PROXY` is set and contains a path. - Disable `auth` when using Chrome's internal `/page` APIs. - Small fixes for new eslint rules. # [v2.18.0](https://github.com/browserless/chrome/compare/v2.17.0...v2.18.0) - Dependency updates. - Supports `puppeteer-core@23.1.1`. - Supports `playwright-core@1.46.1, 1.44.1, 1.43.1, 1.42.1, 1.41.2`. - Trailing slashes on routes now won't 404, so `/chrome` and `/chrome/` are treated as the same and will route properly. - `/function` API now works properly when applying a 3rd-party proxy. # [v2.17.0](https://github.com/browserless/chrome/compare/v2.16.1...v2.17.0) - Dependency updates. - Hide token in logs on startup. - Fixes an issue where using `--proxy-server` now works with /function-API calls. - Adds support for the following CORS headers via env variables (headers and their corresponding config names are below). _Please note that these are very permissive by default, but only set when `ENABLE_CORS` is `true`!_ - 'Access-Control-Allow-Credentials': CORS_ALLOW_CREDENTIALS (default '\*') - 'Access-Control-Allow-Headers': CORS_ALLOW_HEADERS (default: '\*') - 'Access-Control-Allow-Methods': CORS_ALLOW_METHODS (default: 'OPTIONS, POST, GET') - 'Access-Control-Allow-Origin': CORS_ALLOW_ORIGIN (default: '\*') - 'Access-Control-Expose-Headers': CORS_EXPOSE_HEADERS (default: '\*') - 'Access-Control-Max-Age': CORS_MAX_AGE (default: '2592000') # [v2.16.1](https://github.com/browserless/chrome/compare/v2.16.0...v2.16.1) - Dependency updates. - Fixes numerous SDK issues when creating and building new projects. # [v2.16.0](https://github.com/browserless/chrome/compare/v2.15.0...v2.16.0) - Dependency updates. - Better extension handling and merging when passing in custom extensions. - Fixes a bug where a failed job (error thrown) causes the internal queue to drain. - Prettier and other source improvements. # [v2.15.0](https://github.com/browserless/chrome/compare/v2.14.0...v2.15.0) - Bug fix to avoid removing healthy jobs from limiter when a job fails - Dependency updates. # [v2.14.0](https://github.com/browserless/chrome/compare/v2.13.0...v2.14.0) **Potentially Breaking** - Merged duplicate code in browsers and fixed name `WebkitPlaywright` to `WebKitPlaywright` (capitalized "K"). - Devtools now bundled into the repository at build-time for the `/debugger` route. - Dependency updates. # [v2.13.0](https://github.com/browserless/chrome/compare/v2.12.0...v2.13.0) **Potentially Breaking** - The `browser` hook now gets the `req` property for the full request instead of `meta`. - Now embeds the debugger located at `/debugger`. - Preliminary support for `trackingId`. - Bug fixes when dealing with ignoreHTTPSError parameters. - Bug fixes to the /function API when it throws errors. - Prettier fixes. - Dependency updates. # [v2.12.0](https://github.com/browserless/chrome/compare/v2.11.0...v2.12.0) **Potentially Breaking** - SDK projects should now use conventional class method properties versus the "fat-arrow" style instance methods. **Updates** - Support for multi-version playwright (puppeteer coming soon). Browserless now checks the version in the User-Agent header and loads the appropriate playwright server for it. - Dependency updates. # [v2.11.0](https://github.com/browserless/chrome/compare/v2.10.0...v2.11.0) - Wrap the pressure response in a pressure key. - New `keepAlive` property on browser objects for downstream SDK projects to flag. - Dependency updates. # [v2.10.0](https://github.com/browserless/chrome/compare/v2.9.0...v2.10.0) - Adds back in the `/pressure` API from V1. - Dependency updates. # [v2.9.0](https://github.com/browserless/chrome/compare/v2.8.0...v2.9.0) - Dependency updates. - Debugger is now included and mounted under the `/debugger` path. - Browserless now uses the `Logger` utility internally. Better logs for certain classes as well. - Fix number of connected clients when using the Page websocket route. - Allows "HEAD" requests for most "GET"-based APIs. - # [v2.8.0](https://github.com/browserless/chrome/compare/v2.7.1...v2.8.0) **April 12, 2024** **Potentially Breaking** - New `Logger` class and SDK primitives in support of that. - Routes now get an instance of `Logger`, before the `browser` argument or as the last argument for HTTP routes. **Updates** - Numerous SDK fixes and updates in the CLI. - Dependency updates. # [v2.7.1](https://github.com/browserless/chrome/compare/v2.7.0...v2.7.1) **April 11, 2024** - Fixes a boot-looping issue due to bad startup script. Adds tests for this as well. - Dependency updates. # [v2.7.0](https://github.com/browserless/chrome/compare/v2.6.1...v2.7.0) - Support for Running GPUs - Dependency updates. # [v2.6.1](https://github.com/browserless/chrome/compare/v2.6.0...v2.6.1) - Fixes for function API calls when behind an external URL. - Dependency updates. # [v2.6.0](https://github.com/browserless/chrome/compare/v2.5.0...v2.6.0) - Adds a `GET /active` route that responds with no message and a `204` http code. - Move to NodeJS 20.12.0. - README, CHANGELOG, Migration and spelling fixes. - New `/active` route for determining if server is able to handle requests. - Better logging around 404'd HTTP requests. - Dependency updates. # [v2.5.0](https://github.com/browserless/chrome/compare/v2.4.0...v2.5.0) - `Config` now allows for programmatic getting and setting of the external address. - Support for a new `Hooks` module for setting up hooks in a more SDK-friendly manner. - Adds new exports for building downstream SDK projects more easily, versus using our CLI: - `getArgSwitches` - `getSourceFiles` - `installDependencies` - `buildDockerImage` - `buildTypeScript` - `README.md` updates. - Dependency updates. # [v2.4.0](https://github.com/browserless/chrome/compare/v2.3.0...v2.4.0) **Potentially Breaking** - Drops support for recording and screencasting in favor of library-based approaches. - `playwright@1.42.1` and `puppeteer@22.4.0`. **Other Changes** - SDK routes now take precedence over core routes when a path-collision occurs. - Support SDK projects with their own `static` directories. - Adds support for user-specified `stop` methods in SDK Module extensions. - Core modules now extend `EventEmitter`, making them able to publish events. - Fixes issues with `addStyleTag` happening before `goto` calls in REST APIs. - Dependency updates. # [v2.3.0](https://github.com/browserless/chrome/compare/v2.2.0...v2.3.0) **Potentially Breaking** - Routes must define a unique `name` property in order to remove them in SDK projects. - A new `browserless` object in the SDK `package.json` file can specify module overrides, in camelCase, instead of using a path-based semantic. - Fixes issues with `npx playwright-core install...` potentially installing other browser versions than what is a dependency of Browserless. - Fixes and other general improvements. - Dependency updates. # [v2.2.0](https://github.com/browserless/chrome/compare/v2.1.0...v2.2.0) **Potentially Breaking** - `ghcr.io/browserless/chrome` now runs actual Chrome and not Chromium! If you were using this tag please update to use `ghcr.io/browserless/chromium`! - This Chrome tag uses the new routing convention below. If you get random 404's, please add `/chrome` to the start of the route. EG, `/pdf` becomes `/chrome/pdf`. - Websocket connections follow a similar breakage in that the URL will go from something like `ws://localhost:3000` to `ws://localhost:3000/chrome`. - Adds a new `ghcr.io/browserless/chromium`, and updates `ghcr.io/browserless/chrome` to use actual Chrome. - New and current APIs now follow a routing convention of `/$BROWSER/$ACTION`. In our Chrome image, you'll see `/chrome/pdf` for the PDF route as opposed to `/pdf`. - To keep things backwards compatible, all our prior REST APIs still have the same path as well as the new semantic, but only in the `multi` and `chromium` tags. - These backwards compatible routes are ONLY available in `ghcr.io/browserless/chromium` and `ghcr.io/browserless/multi`. - Refer to the embedded documentation site for any and all updates on API differences. **Other Changes** - HTTPRoutes and WebSocket routes can now have multiple paths to listen on. - Add `clean` command to `@browserless.io/browserless` CLI. - Adds support for `/json/list`, `/json/new`, `/json/version` and `json/protocol` APIs (Chrome and Chromium only). - When both Chrome and Chromium are present (in the case of the multi image), browserless opts for Chromium for these requests. - Removes legacy `browser.json` files since browserless now generates those and caches when requested. - Stable docker images are coming! Please be sure to see our packages page for stable tags. - Only verify that internally managed browsers are installed when starting. - Preliminary support for `--headless=shell`. - More unit-tests for the Chrome /json APIs. - Dependency updates. # [v2.1.0](https://github.com/browserless/browserless/compare/v2.0.0-beta-1...v2.1.0) - Dependency updates. - Name is now `@browserless.io/browserless` to reflect our npm package. - NEW: SDK is now live here: https://www.npmjs.com/package/@browserless.io/browserless. - Drops gulp and other gulp utilities in favor of our own. Move to modules in `scripts` dir. - Many private class properties now use `protected` so they can be referenced in SDK extensions. - Adds a `/json/version` route for older libraries that use it. - Merge startup/test scripts into `scripts` dir. - Moves installed browsers to `/usr/local/bin/playwright-browsers`. - Merge root files into package.json where possible. - README updates and fixes. - Numerous link and copyright fixes. # [v2.0.0](https://github.com/browserless/chrome/compare/master...feat/browserless-2.0) browserless 2.0.0 represents the best body of work after running browserless for over 5 years. It contains mostly the same functionality and more, and is rebuilt to be more modular and offer a NodeJS SDK. It's also much lighter and faster than prior versions and includes a lot of semantic changes. ## Features - ECMAScript style module loading and dependencies. - New routing system using purely NodeJS's HTTP module. - Better logs and concurrency/queueing parameters. - Support for running the other major browser vendors in the same format and package. - The service now compiles TypeScript to runtime JOI validation for our routes. - Soon: upcoming support for extensions, long-running sessions and more. ## Breaking Changes - Remove support for Selenium. - The `/function` API now runs inside the context of the browser and not in Node. - Drop support for keep-alive and pre-booting. - Support for a single `launch` query-string parameter for launching a browser versus many individual parameters. ## Minor Changes - Many docker parameters have been renamed, but are backwards compatible. See config.ts for details. # [v1.61.0](https://github.com/browserless/chrome/compare/v1.60.2...v1.61.0) - **FINAL of V1 for browserless/chrome. [See notes on V2 here](https://github.com/browserless/chrome/pull/3345)** - Dependency updates. - Added `fonts-urw-base35`. - Supports puppeteer `1.20`, `10.4.0`, `13.1.3`, `14.4.1`, `16.2.0`, `19.7.5` and `21.4.1`. - Supports playwright `1.39`, `1.38`, `1.37`, `1.36`, `1.35`, `1.34`, and `1.33`. - Fixes an issue where keep-alive chrome instances aren't properly tracked when `browser.close` is called. - Fix improper handling of HTTP writing on bare sockets with 500 errors. # [v1.60.2](https://github.com/browserless/chrome/compare/v1.60.1...v1.60.2) - Dependency updates. - Fixes an issue where calls to GET /sessions sometimes return blank results. - Drop puppeteer `21.3.1` in favor of `21.3.6`. # [v1.60.1](https://github.com/browserless/chrome/compare/v1.60.0...v1.60.1) - Dependency updates. - Drop the `partner` repo from builds as we no longer use it for installing `flash`. - Bump to `Ubuntu` lunar. - Bump to NodeJS 18.17.0 - Package.json `engines.node` now reflects what node version we run on the docker image. - Drops support for playwright@`1.33` and default playwright to `1.38`. - Drops support for puppeteer@`21.1.1` in favor of `21.3.1`. - Replaces legacy `request` module with Node's native `fetch` for webhooks. - Drops `node-fetch` across the board in favor of `fetch` native. # [v1.60.0](https://github.com/browserless/chrome/compare/v1.59.0...v1.60.0) - Dependency updates. - New build arguments in our Dockerfile to apply different named base repo. - New `CHROME_STABLE_VERSION` build arg for specifying a particular chrome stable version. - Fixes in postinstall hooks for various platforms and chrome-stable. - NEW: `waitFor` properties in our APIs now supports an object with selector + timeouts for more fine tuning. - Bump puppeteer `20.x.x` to `21.1.1` (116.0.5845.96). - Supports playwright versions `1.37`, `1.36`, `1.35`, `1.34`, and `1.33`. - Fixes in deploy script to handle versions, platforms and architectures. - Fixes an issue where headless defaults to `DEFAULT_STEALTH`. - New `PREBOOT_QUANTITY` for overriding the amount of pre-booted instances of Chrome. - Allow using a host's display by setting `DISPLAY` env variable. - Link fixes in README.md. # [v1.59.0](https://github.com/browserless/chrome/compare/v1.58.0...v1.59.0) - Dependency updates. - Bump to Ubuntu Kinetic release + updates to use relevant packages. - In support of puppeteer 20+, updates to `env.js` for finding/symlinking Chrome. - Supports playwright `1.33`, `1.32`, `1.31`, and `1.29.`. Drops support for earlier versions. - Ad-blocking and other request-interception in browserless is graceful using the `isInterceptResolutionHandled` method. # [v1.58.0](https://github.com/browserless/chrome/compare/v1.57.0...v1.58.0) - Dependency updates. - Documentation link fixes. - Add new required lib `libu2f-udev`. - Support for puppeteer@19.7.5. - Supports playwright versions: `1.27`, `1.28`, `1.29`, `1.30` and `1.31`. - Better internal TypeScript definitions. - Print's a few extra log-lines at startup for links to various resources. - `/kill/all` now supports rebooting when PREBOOT is turned on. - Fixes an issue with chromedriver boot-looping in modern versions. - Adds support for `--headless=new`. - Fixes an issue where user-data-dirs aren't deleted due to a crashed container. # [v1.57.0](https://github.com/browserless/chrome/compare/v1.56.0...v1.57.0) - Dependency updates. - Add back in `puppeteer@13.1.3` for PDF/Screenshot performance. - Replace `puppeteer@18.0.5` in favor of `puppeteer@19.2.2`. - Better puppeteer install/binary path lookups. - Support for the following playwright versions via the /playwright path: - 1.23.3 - 1.24.2 - 1.25.2 - 1.26.1 - 1.27.1 # [v1.56.0](https://github.com/browserless/chrome/compare/v1.55.0...v1.56.0) - Dependency updates. - Fixes various puppeteer issues with regards to revision information and browser-fetching. - Fixes a Selenium issue where failed browsers can cause session to zombie. - Small fix for route error handling. - Better selenium W3C support. # [v1.55.0](https://github.com/browserless/chrome/compare/v1.55.0...v1.54.1) **Potentially Breaking** - Update base OS from Ubuntu 20.04 to Ubuntu 22.04. - Drops `path` support for both `addScriptTag` and `addStyleTag`. Use `url` or inject content directly. --- - Dependency updates. - We now support multiple versions of playwright via `playwright-core`. browserless checks the User-Agent string and tries to load a compatible playwright server at runtime in order to avoid breakages between versions. - New `scrollPage` boolean parameter for the screenshot and other relevant APIs. - browserless now writes appropriately formatted HTTP and WebSocket messages for non-2xx responses. - Better CI coverage with prior puppeteer versions. - Adds back a `browser.json` file in our docker images for easier CDP-related queries. - A new `PORT` arg is available at build time in order to specify a PORT to listen onto. - Updated links for browserless documentation in docs. # [v1.54.1](https://github.com/browserless/chrome/compare/v1.54.1...v1.54.0) - Dependency updates. - Add `browser.json` file to git tags. - Prettier fixes on source. - deploy.js file fixes for creating production tags. - Fix: add the `userDataDir` option so that we don't fill disks when using `stealth`. - Fix: allow `disconnect` listeners to fire before closing. # [v1.54.0](https://github.com/browserless/chrome/compare/v1.53.0...v1.54.0) - Dependency updates. - Move to using `mocha` for better esm support. - Drop puppeteer `13.6.0` in favor of `14.4.1`. - Utilize puppeteer `14.4.1` for `chrome-stable`. - New internal `getCDPClient` for loading a page's CPD connection. # [v1.53.0](https://github.com/browserless/chrome/compare/v1.52.1...v1.53.0) - Dependency updates. - Bump `browserless:base` to `1.16.0`. - Drop `--quiet` from deploy scripts. - `arm64` support for latest as well as puppeteer at versions 9,10 and 13. - Update puppeteer 13 from `13.5.2` to `13.6.0` (revision `982053`). - README updates. # [v1.52.1](https://github.com/browserless/chrome/compare/v1.52.0...v1.52.1) - Dependency updates. - Playwright example correction in README.md. - Use revision `970485` for puppeteer 13.x.x, `latest`, chrome-stable and `arm64`. - When using `KEEPALIVE` and `PREBOOT`, don't create new blank pages, and use the existing one instead. # [v1.52.0](https://github.com/browserless/chrome/compare/v1.51.1...v1.52.0) - Dependency updates. - Added in new fonts: `fonts-gfs-neohellenic`. - Minor code formatting changes. - Drop puppeteer@13.1.3 in favor of 13.5.2. - Make `heapdump` an optional dependency as it's not always used, and add it back in. - Utilize `fs/promise` vs home-rolled promisified utils. - Fix an issue where PREBOOT and KEEPALIVE might return an `undefined` browser. - Logging when file-protocol requests happen and terminate a session. - Move the browser process exit listener into the puppeteer-provider for better session cleanup. - Allow "headfull" playwright sessions. - Don't `await` chrome-helper's closing of the browser as it's not truly async. - Remove `body-parser` in favor of `express`'s JSON and other parsers. - Fixes an issue where using a user-data-dir that doesn't exist causes chrome to crash. - Add in more unit and integration tests. # [v1.52.0](https://github.com/browserless/chrome/compare/v1.51.1...v1.52.0) - Dependency updates. - Added in new fonts: `fonts-gfs-neohellenic`. - Minor code formatting changes. - Drop puppeteer@13.1.3 in favor of 13.5.2. - Make `heapdump` an optional dependency as it's not always used, and add it back in. - Utilize `fs/promise` vs home-rolled promisified utils. - Fix an issue where PREBOOT and KEEPALIVE might return an `undefined` browser. - Logging when file-protocol requests happen and terminate a session. - Move the browser process exit listener into the puppeteer-provider for better session cleanup. - Allow "headfull" playwright sessions. - Don't `await` chrome-helper's closing of the browser as it's not truly async. - Remove `body-parser` in favor of `express`'s JSON and other parsers. - Fixes an issue where using a user-data-dir that doesn't exist causes chrome to crash. - Add in more unit and integration tests. # [v1.51.1](https://github.com/browserless/chrome/compare/v1.51.0...v1.51.1) - Dependency updates. - Updates the `vm2` module to `3.9.7`. # [v1.51.0](https://github.com/browserless/chrome/compare/v1.50.0...v1.51.0) - Dependency updates. - New `viewport` option inside of the content API. - New `encoding` option in the screenshot API. - Drop puppeteer@12.x.x in favor of 13.x.x. - Fixes in our deploy scripts. - Fixes for windows binaries in our postinstall hook. - Fixes an issue where playwright tries to use a pre-booted chrome instance. - Small type updates. # [v1.50.0](https://github.com/browserless/chrome/compare/v1.49.1...v1.50.0) - Dependency updates. - Drops support for `puppeteer-4.0.1` in favor of `puppeteer-12.0.1`. - Chrome-stable now utilizes puppeteer @ `12.0.1`. - Support for `arm64` via production tags (`1-arm64`) as well as in `latest`. - Static JSON files (`protocol.json`, `version.json`) are built at runtime on their first request and then cached in memory. - Bumps `browserless/base` to `1.14.0`. - New `selector` property for screenshot-ing a single DOM node in the screenshot API. - `puppeteerVersions` in the package.json file has been rename do `chromeVersions`. - Internal changes for deploying production tag scripts. - Consolidate scripts for `postinstall`. - Drop support for `heapdump` due to its age and lack of platform varieties. - New `/metrics/total` route for summing up all statistics in a single JSON payload. # [v1.49.1](https://github.com/browserless/chrome/compare/v1.49.0...v1.49.1) - Dependency updates. - Fix webhook not using timeout URL. # [v1.49.0](https://github.com/browserless/chrome/compare/v1.48.0...v1.49.0) - Dependency updates. - Support for ARM64 builds by dropping flash for it. - Bump puppeteer 10.2.0 for 10.4.0. - New puppeteer-hook for injecting a puppeteer-compatible library, eg. puppeteer-extra. # [v1.48.0](https://github.com/browserless/chrome/compare/v1.47.0...v1.48.0) **Potentially Breaking** - API calls with `html` in their payloads now use the `page.setContent` API versus a prior hack using one-time network-request interception ([example here](https://github.com/browserless/chrome/compare/v1.47.0...master#diff-67b699af1b24472604e21081d0509620d4ab3d986fcd4f8aa0b04d5ee5e4c63fL88)). Old versions of puppeteer might not work properly with this (<= 5.x.x). This effects the following APIS: `/content`, `/pdf` and `/screenshot`. --- - Dependency updates. - Bump `browserless/base` to `1.12.0` (add user-id to `blessuser` of `BLESS_USER_ID=999`). - Bumps puppeteer @10.x.x to `10.2.0` with revision `901912`. - Makes API calls use `setContent` properly now (no more one-time network interception). This fixes certain issues with images not loading in PDFs and screenshots. - Fix some typings in tests. # [v1.47.0](https://github.com/browserless/chrome/compare/v1.46.0...v1.47.0) - Dependency updates. - Bump `browserless/base` to `1.11.0`. - Add new lint task and rename GitHub actions tasks, remove `tslint`. - Lint and prettier fixes. - Delay url parsing until after `before` hook runs. - New `meta` object param for page hooks (passing through arbitrary meta data set by prior hooks). - New `FUNCTION_ENV_VARS` environment variable pass through an allow-list of environment variables for functions to access. - Fix `someObject.hasOwnProperty` to `Object.prototype.hasOwnProperty.call`. - # [v1.46.0](https://github.com/browserless/chrome/compare/v1.45.0...v1.46.0) - Dependency updates. - Move to Node 16.x.x. - Bump browserless/base to 1.10.0. - Limit `x-response-url` to 100 characters. - Add support for puppeteer@10.x.x. - Add `maxConcurrent` stat for metrics API + log stats every 5 minutes to stdout. - Some performance improvements to how pages/browsers are setup and torn down. - Add `API_DOCS_ENDPOINT` as a filterable API to deny access to. - Minor code reformatting from prettier. - Better page setup and logging. - Fixes `DEFAULT_STEALTH` for self-hosted deployments. - Improvements on how chrome is closed. # [1.45.0](https://github.com/browserless/chrome/compare/v1.44.0...v1.45.0) - Dependency Updates. - Support for [playwright proxies](https://github.com/browserless/chrome/commit/0903795e936b93a511ec04f7ae35c03397682905). - Fixes an issue with larger headers potentially causing load-balancers to crash and fail. # [v1.44.0](https://github.com/browserless/chrome/compare/v1.43.0...v1.44.0) **Potentially Breaking** - `PROXY_HOST` and `PROXY_PORT` are now replaced with a single `PROXY_URL` param, eg: `https://www.mybrowserless.com/optional/paths`. When set, browserless uses this fully-qualified URL to build out links _back_ to its internal debugger and sessions. Useful when you're instance is behind a proxy or load-balancer of some kind. --- - Dependency Updates. - Use recent Node 14 (browserless-base 1.7.0). - New `rejectResourceTypes` property on most APIs (content, screenshot, pdf, etc.). - Allow serving of `file://` protocols when explicitly enabled (default is off due to security concerns). Set `ALLOW_FILE_PROTOCOL=true` in your env params. - The `/pressure` API now takes into account CPU/Memory consumption, and adds a "reason" property for why the machine might be not available. - Fixes an issue where playwright couldn't download files. - You can now filter /sessions calls with a `trackingId` parameter. - `detached` functions now return a `trackingId` when present. - More types, tests, and utility consolidation. # [v1.43.0](https://github.com/browserless/chrome/compare/v1.42.0...v1.43.0) - Dependency Updates. - Fixes an issue where --user-data-dirs aren't deleted properly, potentially filling disks. - Changes CPU/Memory checks to be user-based and not the entire OS. - Adds tests for the user-data-dir issue. # [v1.42.0](https://github.com/browserless/chrome/compare/v1.41.0...v1.42.0) - Dependency Updates. - Move to Node 14! - Use `esModuleInterop` for imports. - Remove `page.waitFor` in favor of downstream methods. - Adds new `?stealth` parameter for API calls (see puppeteer-extra-stealth-plugin). - New `DEFAULT_STEALTH` param for making stealth calls by default. - Fixes `ignoreDefaultArgs` in chrome stable. - Ensure temp user-data-dirs are always cleaned up. # [v1.41.0](https://github.com/browserless/chrome/compare/v1.40.2...v1.41.0) - Dependency Updates. - New `SESSION_CHECK_FAIL_URL` webhook for when pre-session checks fail. - Health checks now take the last two CPU/Memory samples to determine if a failure (5 minutes). # [v1.40.2](https://github.com/browserless/chrome/compare/v1.40.1...v1.40.2) - Dependency Updates. - Fix potentially unhandled stream error events when closing chrome. - Bump puppeteer to 5.4.1 for major 5. # [v1.40.1](https://github.com/browserless/chrome/compare/v1.40.0...v1.40.1) - Dependency Updates - New `SOCKET_CLOSE_METHOD` for better load-balancing behavior when under load. # [v1.40.0](https://github.com/browserless/chrome/compare/v1.39.0...v1.40.0) - Dependency Updates - Support for playwright 1.4.0 and greater. [See more here](https://github.com/microsoft/playwright/issues/4054). - New `PRE_REQUEST_HEALTH_CHECK` env variable to check CPU/Memory prior to running a session. Set `MAX_CPU_PERCENT` or `MAX_MEMORY_PERCENT` for setting these thresholds. Responds with a `503` HTTP code if CPU/Memory are high on any inbound session (API, puppeteer or webdriver). # [v1.39.0](https://github.com/browserless/chrome/compare/v1.38.0...v1.39.0) - Dependency Updates - Fixes a crash due to `browser.close` streams not completing properly. - Adds a `dumpio` query-string parameter for launching with puppeteer. # [v1.38.0](https://github.com/browserless/chrome/compare/v1.37.2...v1.38.0) - Dependency Updates - Fixes a memory leak when browsers don't close properly. - Adds a `/heapdump` route for capturing heap dumps. Turn on by setting `ENABLE_HEAP_DUMP=true` in your docker env. - `emulateMedia` fixes on the pdf route. - CodeQL implemented. - README fixes. # [v1.37.2](https://github.com/browserless/chrome/compare/v1.37.1...v1.37.2) - Dependency Updates - Fixes an issue where the webserver can crash after rejecting a request. - Fixes deployment script not waiting for zip files to be finished unzipped. # [1.37.1](https://github.com/browserless/chrome/compare/v1.37.0...v1.37.1) - Dependency Updates - Fixes an issue in webdriver not starting properly. # [1.37.0](https://github.com/browserless/chrome/compare/v1.36.0...v1.37.0) **Potentially Breaking** - Due to stability issues, puppeteer version 3.x.x and 4.x.x now use chromium revision `782078`. See our `package.json` for details. --- - Dependency Updates - README Updates - Fixes an issue for secured containers using prometheus (plus tests). - Support for puppeteer `5.2.1` # [1.36.0](https://github.com/browserless/chrome/compare/v1.35.0...v1.36.0) - Dependency Updates - Drops support for puppeteer `2.0.0` and `3.0.4`, please use `2.1.1` and `3.3.0` for those revisions. - Adds support for puppeteer `5.0.0`. - Bug-fix with the server randomly closing with an uncaught error event thrown from inside underlying socket connection. - Adds back in `--disable-dev-shm-usage` to default arguments for better SHM performance. # [1.35.0](https://github.com/browserless/chrome/compare/v1.34.0...v1.35.0) - Dependency Updates - New `maxTime`, `minTime`, `meanTime` and `totalTime` of all sessions for a given period in /stats. - Bugfix on CPU/Memory triggering health failure webhooks. - Fix issues in websocket errors by awaiting browser.close (or 5 seconds, whichever is quickest). # [v1.34.0](https://github.com/browserless/chrome/compare/v1.33.1...v1.34.0) **Potentially Breaking** - screencast API no longer supports `audio` or the `setPreferences` function in order to offer a better video experience. In order to set the width/height, simply set a page width height to what you'd like. - `chrome-stable` will now use `puppeteer@3.1.0` for better compatibility. --- - Dependency updates. - Drops puppeteer version `1.20.0` and below. - Move `browserless/base` to `v1.5.0`. - Puppeteer support for `3.3.0` (3.2.x and 3.1.x have the same chromium revision). - Fixes `trackingId` on pre-booted sessions. - `about:blank` pages now are returned in the `/sessions` API for transparency of open sessions/browsers. # [1.33.1](https://github.com/browserless/chrome/compare/v1.33.0...v1.33.1) - Dependency updates. - Fix socket errors from accidentally firing error webhooks. # [1.33.0](https://github.com/browserless/chrome/compare/v1.32.0...v1.33.0) - Drops support for puppeteer 1.17.x and 1.18.x - Support for puppeteer 3.0.x - Dependency updates - Fix reject stat firing on debugger pages not being found - Consolidates more types. # [1.32.0](https://github.com/browserless/chrome/compare/v1.31.1...v1.32.0) - Dependency Updates. - Adds roboto fonts. - Updates `pressure` API to take account of running browsers in the `running` count. - Adds `maxConcurrent`, `maxQueued`, `cpu` and `memory` to pressure. # [1.31.1](https://github.com/browserless/chrome/compare/v1.31.0...v1.31.1) - Dependency Updates. - Fixes a small issue where XVFB doesn't start properly during an automated restart. # [1.31.0](https://github.com/browserless/chrome/compare/v1.30.0...v1.31.0) - Dependency Updates. - Allows `trackingId` on uploaded files to save in the appropriate tracking-ID folder. - New `userAgent` param for setting user-agent in API requests. - Fixes an issue where chrome wasn't being closed in rare cases. # [1.30.0](https://github.com/browserless/chrome/compare/v1.29.1...v1.30.0) - Dependency Updates. - Updates to Node 13 for speed and memory improvements. - browserless/base@1.4.0 # [1.29.1](https://github.com/browserless/chrome/compare/v1.29.0...v1.29.1) - Dependency Updates. - Fixes how deploy script determines errors when running child commands. - Fixes issues when many selenium sessions can potentially fill up disk space. # [1.29.0](https://github.com/browserless/chrome/compare/v1.28.0...v1.29.0) - Dependency updates. - Uses `pipe`'s for most API calls and other internal endpoints for faster/better throughput. Works only for `headless` API/puppeteer calls. - Allows custom lighthouse configs via POST `config` property. - Patches vm2. - Before hooks no longer end requests forcefully -- external hooks must manually end the request/sockets themselves. - Properly passes socket errors to the error handler/webhook # [1.28.0](https://github.com/browserless/chrome/compare/v1.27.0...v1.28.0) - Dependency updates. - Sets a system-default font of Ubuntu for most sites that use `system-ui` in their font declarations. - Fixes health-check failure webhooks. - New `PROXY_HOST`, `PROXY_PORT` and `PROXY_SSL` for external load-balancers. [See docsite for more info](https://www.browserless.io/docs/docker.html#using-a-proxy). - Moves over to GH actions over Travis for CI. # [1.27.0](https://github.com/browserless/chrome/compare/v1.26.1...v1.27.0) - Dependency updates. - New `manipulate` params for screenshots, allowing for resizing, flipping and more. - Better tracking of chrome-process for cleanup of zombied sessions. # [1.26.1](https://github.com/browserless/chrome/compare/v1.26.0...v1.26.1) - Dependency updates. - Added `git` as a dependency in dockerfile for git-based npm dependencies to work. - Fixed an issue in `start.sh` so that errors bubble up properly and close the process. - Bumps `browserless/base` to `1.2.0`. # [1.26.0](https://github.com/browserless/chrome/compare/v1.25.0...v1.26.0) - Dependency updates. - Dropping pre-push hooks for speed. - Consolidate all interfaces/types to a types.d.ts file. - Fixes an issue where numerous chrome instances launch when prebooting. - Fixes an issue where incoming requests don't use the pre-booted chrome instance. - Uses `page.setViewport` when `--window-size` is set in params to help with screenshots not appearing properly (chromedriver only). - # [1.25.0](https://github.com/browserless/chrome/compare/v1.24.0...v1.25.0) - Dependency updates. - Stricter build-time arguments for chromium and chromedriver assets. - Better XVFB functionality. - New parameters for most API's, `addScriptTag` and `addStyleTag`, accepting an array of scripts/styles respectively. - Drop support for `puppeteer@1.17.0`. - Proper support for parsing `ignoreDefaultArgs` query-parameters. # [1.24.0](https://github.com/browserless/chrome/compare/v1.23.1...v1.24.0) - Dependency updates. - Bugfix on our debugger's play button being off-center. - Fixes driver.close() calls not cleaning the browser. - New `/GET` option for most our APIs. Stringify your JSON and add a ?body=YOUR-JSON with a /GET call to most of our functions! Requires `ENABLE_API_GET=true` in you docker env variables. - WebSocket (Socket) exception handling and logging. - More integration and unit tests added. # [1.23.1](https://github.com/browserless/chrome/compare/v1.23.0...v1.23.1) - Fixes an issue in chromedriver where commands would hang. - Fixes an issue in chromedriver sessions not being removed properly. - Fixes and pins the base image so that headful sessions work again. # [1.23.0](https://github.com/browserless/chrome/compare/v1.22.0...v1.23.0) - Dependency updates. - Use `apt-get` to install `dumb-init`. - Add a LANG arg in docker. - New `setJavaScriptEnabled` property for REST APIs. - Fixes an issue with `waitFor` functions in REST API calls. - Fixes issues when PREBOOT_CHROME and KEEPALIVE are true. - Updates protocol and host information in ad-blocking. # [1.22.0](https://github.com/browserless/chrome/compare/v1.21.0...v1.22.0) - Dependency updates. - Removal of unnecessary '--disable-dev-shm-usage' - Squelching of chromedriver's verbose args unless `DEBUG=*` is set. - New `/kill/${id}` route for remotely killing a certain browser. - Allowing of sub-child routes in workspaces. # [1.21.0](https://github.com/browserless/chrome/compare/v1.20.0...v1.21.0) - Dependency updates. - New `viewport` property option for PDF endpoint. - The `/stats` endpoint now runs in a separate process meaning it can be parallelized. - Fixed a bug where hardware monitoring can cause the container to restart/crash. - Fixes an issue with the file-chooser API not working in puppeteer. # [1.20.0](https://github.com/browserless/chrome/compare/v1.19.0...v1.20.0) - Dependency updates. - New `/scrape` API! # [1.19.0](https://github.com/browserless/chrome/compare/v1.18.0...v1.19.0) - Dependency updates. - Fixes chrome-stable's binary chromedriver. - Move over to Node 12. - Bugfix on width/height in the screencast API. - Support for puppeteer@2.0.0. - Fixed issues with the devtools JS files missing. - Adds support for blacklisting routes in Docker. - Consolidates hooks into a hooks module. - Allows Selenium to specify download-paths and pausing via preferences. - Fixes an issue in certain JSON-based CDP libraries. - Function API's can now run incognito mode with a new Docker param. - # [1.18.0](https://github.com/browserless/chrome/compare/v1.17.0...v1.18.0) - Dependency updates - Better `IS_DOCKER` check for kubernetes. - Updates to README.md, spelling fixes and Slack link. - Fixes to debugger and larger code bodies. - Removal of analytics in debugger. - Screencast improvements and adding ability to set new options. - New `waitFor` property in our APIs (content, pdf and screenshot). - Don't allow file requests on the debugger for security reasons. - Better metrics monitoring. - `singleRun` mode in docker. - New prometheus support! - Fixing issues with keeping chrome alive (only closing once TTL is met). # [1.17.0](https://github.com/browserless/chrome/compare/v1.16.0...v1.17.0) - Dependency updates - Splitting docker images into two repositories for faster builds and pulls - Adding in external routing capabilities - New error hook - More/better types - Updating `deviceScaleFactor` in API's for more granular control. - Better chromedriver failure messages. # [1.16.0](https://github.com/browserless/chrome/compare/v1.15.0...v1.16.0) - Adding `ffmpeg` to the docker dependency list. - Add `timecut` as a dependency for recording. - Better logs on chrome PID's and closing forcefully. - Fixed `DEFAULT_CHROME` => `DEFAULT_HEADLESS`. - Fixed a bug where `xvfb` doesn't start in time. - Use `SIGKILL` for killing chromedriver. - `/json/version` now returns a `webSocketDebuggerUrl`. # [1.15.0](https://github.com/browserless/chrome/compare/v1.14.1...v1.15.0) - New `page` and `browser` hooks for docker images that `FROM` browserless. - `bluebird` added as a module for `function` and other endpoints. - More dependency updates. # [1.14.1](https://github.com/browserless/chrome/compare/v1.14.0...v1.14.1) - Bugfix when running multiple "headfull" sessions. - Dependency updates. # [1.14.0](https://github.com/browserless/chrome/compare/v1.13.0...v1.14.0) - New `WORKSPACE_DELETE_EXPIRED` and `WORKSPACE_EXPIRE_DAYS` to auto-cleanup workspace dirs. - README.md cleanup now that HTTPS is no longer required. - Support for `~` in docker env parameters. - More alignment with how chromedriver and puppeteer sessions get cleaned up. - `/session` API now returns `browserWSEndpoint` and `browserId` properties for having multiple debuggers connected. - Support for reconnecting(!!). When a `?keepalive=KEEP-ALIVE-IN-MS` is seen in the `puppeteer.connect` call we keep the browser active for that many ms after the debugger disconnects. - New `/kill/all` route which closes _all_ actively running sessions. - New internal scheduler module, making future things like cron-based jobs a possibility. - Better internal types. # [1.13.0](https://github.com/browserless/chrome/compare/v1.12.0...v1.13.0) - A minor refactor to consolidate calls to `url.parse` for performance gains. - Introduces a per-session based timeout that overrides the global timeout. - Consolidates authorization checks to remove duplication. - Moves more types into their backing modules in order to better consolidate files. # [1.12.0](https://github.com/browserless/chrome/compare/v1.11.0...v1.12.0) - Set's a non-conflicting `WORKSPACE_DIR` and `DEFAULT_USER_DATA_DIR` in docker by default. - Drops support for puppeteer `1.15.0` and adds `1.19.0`. - Web-based debugger now sends cookies for docker deployments that are secure. # [1.11.0](https://github.com/browserless/chrome/compare/v1.10.0...v1.11.0) - Live debugger is now self-hosted, no more enforced https though it's still recommended. - Consolidated build steps. - Using the same chromedriver binary that matches the puppeteer's bundled chromium. - Introducing `trackingId` workflows. - Fixing unused export's, removing extraneous internal methods. - `/workspace` API now returns sub-files and scopes sessions by `trackingId` when present. - Support for `/json/new` protocol. - Dependency updates. # [1.10.0](https://github.com/browserless/chrome/compare/v1.9.0...v1.10.0) - Dropped support for puppeteer `1.9.0 => 1.14.0`. - Added support for puppeteer `1.16.0 => 1.18.0`. - A version of chromedriver is now installed to perfectly match the version of puppeteer's chromium. - In dev, chromedriver now uses the puppeteer version of chromium. - Defaulted most ENV-variables in docker to sensible defaults. - New `rotate` feature for PDF endpoint: `{ rotate: 90 }` => rotate left 90 degrees. - Support for `browserless.token` in the docker image. - puppeteer integration now returns semantic HTTP codes for certain errors (`400`, `403` and `429`). - Support for chromedriver's move to the W3C spec 'goog:chromeOptions'. - The debugger now filters out `about:blank` pages, and includes sessions by Selenium. - Workspace support for selenium-based integrations. # [1.9.0](https://github.com/browserless/chrome/compare/v1.8.0...v1.9.0) - Better handling of browser/socket closing in puppeteer integrations. - Numerous screencast fixes. - Moved all GH links to new repo location. - Dep updates. # [1.8.0](https://github.com/browserless/chrome/compare/v1.7.0...v1.8.0) - Better windows dev experience. - Indian font support. - Video capture now supports audio and browser width/height. - Dependency updates. - DEFAULT env variables for launching pre-booted Chrome. # 1.7.0 - Dep updates - New `?blockAds` query-parameter for disabling 3rd-party ad calls. # 1.6.0 - New `authenticate` and `setExtraHTTPHeaders` params for the `content`, `pdf`, and `screenshot` APIs. Useful for using proxies in our REST APIs. - Fixed a bunch of bugs inside of the webdriver integration, making it more REST-ful. - Updated dependencies inside of Chromedriver. - New `DISABLE_AUTO_SET_DOWNLOAD_BEHAVIOR` for mitigating errors in puppeteer < 1.15.0. - Bumped Puppeteer to 1.15.0. # 1.5.0 - New `/session` API (and accompanying routes) for display/viewing active sesions in a remote debugger(!). - New `?pause` query-param for pausing sessions prior to running them (useful for the live debug viewer). - The browserless debugger now exposes links to these debug pages via the sidebar. - New Debugger page can be disabled via the `ENABLE_DEBUG_VIEWER=false` environment variable flag. - Move to use `node@10`. - No more `no-implicit-any`'s inside the codebase. # 1.4.0 - During connection, we now set the download dir of REST and puppeteer sessions. Cloud users and docker users no longer have to manually set this field, and the `/workspace` API references it as well! # 1.3.1 # Fixes - New deploy.js file to do deployments "on-prem" - Updated new builds for puppeteer 1.12.2 and 1.13.0 - Fixes an issues in CORS handling # 1.3.0 # Minor changes - The `screenshot`, `function`, `pdf`, and `content` API's now accept new content-types for easier POSTing of small payloads (see docsite). - The `screencast` API can now start/stop recording programmatically via a `startScreencast` and `stopScreencast` params (see docsite). - New `external` dir for injecting custom `before` and `after` hooks in external docker builds. - A new `timeout` query-option for session-based timeouts vs using the global one. - New `requestInterceptors` for injection custom request behavior. # Fixes - Numerous default fixes in the APIs. - Stray consoles removed :) - Consolidated download behavior in `screencast` and `download` APIs # 1.2.0 # Minor Changes - New `requestInterceptors` for the /screenshot API, [allowing you to mock data in response to a request](https://github.com/browserless/chrome/pull/119). - Code debugger now transmits code over-the-wire via cookies to avoid URL max-length issues. - Now supports cookie-based authentication via a `browserless_token=TOKEN;` cookie. # Fixes - [Comments in the debugger won't break it.](https://github.com/browserless/chrome/issues/118) - Requests that are rejected due to auth reasons aren't logged in stats. # 1.1.0 With 1.1.0 we offer a refined way of dealing with both downloads and uploads. Both use-cases are tightly coupled to the file-system, and can leave you scratching your head as to what's going one. For more information and detailed documentation, please refer to our doc-site at https://www.browserless.io/ ## Minor Changes - New `WORKSPACE_DIR` variable for controlling where browserless stores files and uploads. - New `/workspace` API for doing RESTful operations on the downloads/uploads file-system. - New `/download` API for running a puppeteer-script, and responding with the resulting downloaded file. ## Internal Changes - Moved routes out of the browserless module and into their own file/module. - Renamed the `browserless-web-service` module to just `browserless` for simplicity. - Moved the `DOWNLOAD_DIR` to `WORKSPACE_DIR` since it handles both uploads and downloads. # 1.0.0 🥁 -- Stable version 1.0 is here! While this doesn't include major functionality changes, it _does_ change how the docker builds are generated going forward. The versioning will now contain two pieces of crucial information: the version of the _browserless_ service + the version of Chrome under-the-hood. For instance `1.2.3-puppeteer-1.10.0` is browserless at `1.2.3`, exposing puppeteer at `1.10.0`. Similar to how NodeJS itself does docker releases, we'll now provide releases in 3 distinct ways: - An _immutable_, pinned version release: `1.0.0-puppeteer-1.11.0` - A mutable minor version release: `1.1-puppeteer-1.12.0` - A mutable major version release: `1-puppeteer-1.9.0` For production deployments, we recommend using _pinned_ version releases as they won't change once released. The mutable minor/major releases will receive on-going updates whenever we do changes that are bug-fixes or feature release. Even with the best intentions it's possible that instability can be introduced with these mutable images, hence why recommend the pinned version releases. Finally, we'll continue to ship support for the last 5 minor versions of Puppeteer + the Google Chrome (stable). Old images will remain, but newer versions of browserless won't be included. We'll continue to keep this changelog up-to-date anytime we do docker releases.