Skip to content

chore: sync with upstream chrome-devtools-mcp v1.1.1#22

Open
psrednicki wants to merge 61 commits into
mainfrom
chore/merge-upstream-1.1.1
Open

chore: sync with upstream chrome-devtools-mcp v1.1.1#22
psrednicki wants to merge 61 commits into
mainfrom
chore/merge-upstream-1.1.1

Conversation

@psrednicki
Copy link
Copy Markdown
Contributor

Summary

  • Merges 59 commits from ChromeDevTools/chrome-devtools-mcp main (up to v1.1.1) into our fork
  • Resolves all merge conflicts preserving Opera branding, versioning (0.2.2), and Opera-specific features

Key upstream changes included

  • fix: exit on stdin EOF and SIGTERM/SIGINT/SIGHUP, closing the browser cleanly
  • fix: viewport emulation, PID file handling, CPU throttling, realpath for MCP roots
  • feat: extraHttpHeaders emulation, cursor plugin.json, filePath in evaluate_script
  • refactor: waitForResult helpers, removed redundant validatePath calls
  • Various dependency bumps (puppeteer, chrome-devtools-frontend, etc.)

Conflict resolution strategy

  • Branding/naming: Opera (opera-devtools-mcp, version 0.2.2)
  • browser.ts: kept Opera's getCurrentBrowser() + upstream's improved closeBrowser()
  • McpResponse.ts: merged upstream's #attachedWaitForResult/#deviceScope with Opera's #logCallback
  • WaitForHelper.ts: adopted upstream's cleaner #dialogOpened instance field approach
  • tool_call_metrics.json / cli-options.ts: included both upstream heap snapshot tools and Opera tools
  • package.json scripts: dropped --experimental-strip-types (upstream improvement), kept Opera script naming

Supersedes #20 and #21.

Test plan

  • Verify npm run build compiles without errors
  • Verify npm test passes
  • Smoke-test Opera tools (opera_chat, opera_do, etc.) with Opera Neon

Made with Cursor

Lightning00Blade and others added 30 commits May 13, 2026 12:31
There is no behavior change. 

This groups utilities into two modules:
- `transformation.ts`: for any logic related to mutating / filtering of
the names, values of telemetry entries.
- `metricsRegistry.ts`: for any logic that related to the maintenance of
metrics.json files.
## Summary

Adds an optional `filePath` parameter to `evaluate_script` that saves
the script output to a file instead of returning it inline.

Refs #153

## Motivation

Issue #153 requested `filePath` support for `take_snapshot` and
`evaluate_script`. `take_snapshot` was addressed in #463. PR #248
previously attempted this but was closed due to conflicts. This PR
implements the same feature on the current codebase, completing the
remaining piece.

## Changes

- Add optional `filePath` parameter to the `evaluate_script` schema
- Add `context.validatePath(filePath)` call for path validation
- Pass `{filePath, context}` options to `performEvaluation()`
- In `performEvaluation()`: when `filePath` is provided, save output via
`context.saveFile()` with `.json` extension; otherwise return inline as
before
- Update `docs/tool-reference.md` via `npm run docs:generate`
- Add unit test for file output

## Key design decisions

- **Same pattern as existing tools**: Follows the `context.saveFile()`
pattern established by `take_snapshot` (#463), `take_screenshot`,
`get_network_request` (#795), and performance tools (#686).
- **Minimal change surface**: Only `performEvaluation()` gains an
optional `options` parameter. No new interfaces or abstractions.
- **Backwards compatible**: `filePath` is optional. When omitted,
behavior is identical to before.

## Testing

**Unit test added** (`tests/tools/script.test.ts`):
- Call `evaluate_script` with `filePath` set to a temp file
- Assert response contains "Output saved to"
- Assert file content matches the JSON-serialized return value
- Clean up temp file in `finally` block

**Manual testing performed**:
- `() => document.title` with `filePath: /tmp/test.json` → file contains
`"Example Domain"`
- `() => document.title` without `filePath` → inline ```json block
returned (no regression)
- `() => Array.from({length: 100}, ...)` with `filePath` → 100-item
array saved correctly
- `filePath` pointing to non-existent directory → directory
auto-created, file saved
- Relative path (`test.json`) → resolved to CWD, absolute path shown in
response
- Function that throws → error returned, no partial file created
- Existing file as `filePath` → file overwritten completely

---------

Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
Underscore followed by numbers is not encouraged in the proto style
guide. See "Underscores in Identifiers" in
https://protobuf.dev/programming-guides/style/.

This recently became an issue because we have `list_3p_developer_tools`
and `execute_3p_developer_tool` which would have been dis-allowed. This
change replaces them with `list3p_developer_tools` and
`execute3p_developer_tool` respectively, as suggested by the style
guide.

This only affects the logged version. The tool name is still the
existing one.

This transformation is also applied to other similar places, like flag
names, tool name in error logging, and tool args.

The `tool_name_metrics.json` was manually updated because we never
landed the server side change because it was disallowed by proto style
check.
This also caught and fixed an issue where the enum index is not
sequential :/

No error enums have been defined on the service side yet so it's
possible to modify the enum index directly.
## Summary
- register tool input schemas as passthrough so extra named arguments
reach ToolHandler validation
- report unknown arguments with an explicit error that names the unknown
and expected arguments
- stop before invoking tool handlers when unknown arguments are present
- add ToolHandler coverage for reporting an extra argument

Fixes #1940

## Tests
- `npm run check-format`
- `npx tsc --noEmitOnError false` *(emits build artifacts but still
reports the existing `chrome-devtools-frontend` type conflict in
`ModelImpl.ts`)*
- `node --experimental-strip-types --no-warnings=ExperimentalWarning
scripts/post-build.ts`
- `NODE_TEST_REPORTER=spec npm run test:no-build --
tests/ToolHandler.test.ts`
… group across 1 directory (#2045)

Bumps the bundled group with 1 update in the / directory:
[puppeteer](https://github.com/puppeteer/puppeteer).

Updates `puppeteer` from 24.43.0 to 25.0.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/puppeteer/puppeteer/releases">puppeteer's
releases</a>.</em></p>
<blockquote>
<h2>puppeteer-core: v25.0.2</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v25.0.1...puppeteer-core-v25.0.2">25.0.2</a>
(2026-05-15)</h2>
<h3>🛠️ Fixes</h3>
<ul>
<li>update docs text (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14992">#14992</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/36527b8b9dd856e11a372b46cba23409e5613573">36527b8</a>)</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@​puppeteer/browsers</code> bumped from 3.0.1 to 3.0.2</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>puppeteer: v25.0.2</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.0.1...puppeteer-v25.0.2">25.0.2</a>
(2026-05-15)</h2>
<h3>♻️ Chores</h3>
<ul>
<li><strong>puppeteer:</strong> Synchronize puppeteer versions</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@​puppeteer/browsers</code> bumped from 3.0.1 to 3.0.2</li>
<li>puppeteer-core bumped from 25.0.1 to 25.0.2</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>puppeteer-core: v25.0.1</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v25.0.0...puppeteer-core-v25.0.1">25.0.1</a>
(2026-05-13)</h2>
<h3>🛠️ Fixes</h3>
<ul>
<li>enabled features should take precedence over disabled features (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14985">#14985</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/f6fd7c29f92e6183b2fd48f0571957306c58d440">f6fd7c2</a>)</li>
<li>roll to Chrome 148.0.7778.167 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14980">#14980</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/84c46fede6b02a1e9a00104b97b28c263f0c84df">84c46fe</a>)</li>
<li>roll to Firefox 150.0.3 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14983">#14983</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/872f77822d6b6b9b6510752d838107a967241bdb">872f778</a>)</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@​puppeteer/browsers</code> bumped from 3.0.0 to 3.0.1</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>puppeteer: v25.0.1</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.0.0...puppeteer-v25.0.1">25.0.1</a>
(2026-05-13)</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md">puppeteer's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.0.1...puppeteer-v25.0.2">25.0.2</a>
(2026-05-15)</h2>
<h3>♻️ Chores</h3>
<ul>
<li><strong>puppeteer:</strong> Synchronize puppeteer versions</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@​puppeteer/browsers</code> bumped from 3.0.1 to 3.0.2</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li>update docs text (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14992">#14992</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/36527b8b9dd856e11a372b46cba23409e5613573">36527b8</a>)</li>
</ul>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.0.0...puppeteer-v25.0.1">25.0.1</a>
(2026-05-13)</h2>
<h3>♻️ Chores</h3>
<ul>
<li><strong>puppeteer:</strong> Synchronize puppeteer versions</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@​puppeteer/browsers</code> bumped from 3.0.0 to 3.0.1</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li>enabled features should take precedence over disabled features (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14985">#14985</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/f6fd7c29f92e6183b2fd48f0571957306c58d440">f6fd7c2</a>)</li>
<li>roll to Chrome 148.0.7778.167 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14980">#14980</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/84c46fede6b02a1e9a00104b97b28c263f0c84df">84c46fe</a>)</li>
<li>roll to Firefox 150.0.3 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14983">#14983</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/872f77822d6b6b9b6510752d838107a967241bdb">872f778</a>)</li>
</ul>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.43.1...puppeteer-v25.0.0">25.0.0</a>
(2026-05-12)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>remove deprecated Puppeteer.product (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14977">#14977</a>)</li>
<li>bump min NodeJS to 22 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14973">#14973</a>)</li>
<li>return a Promise for executablePath, defaultArgs (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14965">#14965</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/3aadc38c533caa8df87f381868291ede870883e2"><code>3aadc38</code></a>
chore: release main (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14993">#14993</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/36527b8b9dd856e11a372b46cba23409e5613573"><code>36527b8</code></a>
fix: update docs text (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14992">#14992</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/3ea7bd54b97965fb0e1b83a2c017720162785c92"><code>3ea7bd5</code></a>
fix: capitalize &quot;Chrome&quot; in troubleshooting.md (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14991">#14991</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/ae72fdbec9720c982fc2ed818036d7be9b2aa1dc"><code>ae72fdb</code></a>
chore: Tiny punctuation update in troubleshooting.md (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14990">#14990</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/1597fde55de1e7b3c31032aa43dce0607b4307d3"><code>1597fde</code></a>
chore: release main (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14982">#14982</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/f6fd7c29f92e6183b2fd48f0571957306c58d440"><code>f6fd7c2</code></a>
fix: enabled features should take precedence over disabled features (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14985">#14985</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/bf05fb9bf5bac997e365eda2e31c6067e5ec1677"><code>bf05fb9</code></a>
fix: update browsers to trigger release (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14984">#14984</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/872f77822d6b6b9b6510752d838107a967241bdb"><code>872f778</code></a>
fix: roll to Firefox 150.0.3 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14983">#14983</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/84c46fede6b02a1e9a00104b97b28c263f0c84df"><code>84c46fe</code></a>
fix: roll to Chrome 148.0.7778.167 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14980">#14980</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/ee655d8292f37cc33f279746ef72613e5ccb5db8"><code>ee655d8</code></a>
chore(main): release ng-schematics 0.8.0 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14978">#14978</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.43.0...puppeteer-v25.0.2">compare
view</a></li>
</ul>
</details>
<br />

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
…0.1630574 in the bundled-devtools group (#2068)

Bumps the bundled-devtools group with 1 update:
[chrome-devtools-frontend](https://github.com/ChromeDevTools/devtools-frontend).

Updates `chrome-devtools-frontend` from 1.0.1628368 to 1.0.1630574
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/6af5395a25b5273b53283bef669317c9659cfc42"><code>6af5395</code></a>
Update DevTools DEPS (trusted)</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/2d60b9283c744495ffc4f4c2ff8326b8c648bd04"><code>2d60b92</code></a>
Update DevTools DEPS (trusted)</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/6faa751c6b1f8da99ec413df4a3bb7c509ecacd2"><code>6faa751</code></a>
Roll browser-protocol and CfT</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/1b0e599cd6710384392043c611abbda57560641b"><code>1b0e599</code></a>
Update DevTools DEPS (trusted)</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/0a34b9acf92f6be5b9d66bdb11a7cf91daca9891"><code>0a34b9a</code></a>
Roll browser-protocol and CfT</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/5ed28384784766a5f3e1fbf49512664b3fc448b3"><code>5ed2838</code></a>
Roll browser-protocol and CfT</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/e78614a1746e4f5ba10bcb3f6e52abee11e3f9a2"><code>e78614a</code></a>
Update DevTools DEPS (trusted)</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/5dfb21679dc5d9affc8a50122a3e245ff69f1d08"><code>5dfb216</code></a>
Add Plus Button (1/3): TabbedPane trailing-button slot + overflow
event</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/5a7917ec7a0e6c45fcf0f25f671eb1ae41693153"><code>5a7917e</code></a>
Frontend: Display Generic Issue for Back-To-Ad Intervention</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/bcbb0e7b28282fe8e1dd210c77914a1d520fab51"><code>bcbb0e7</code></a>
Roll browser-protocol and CfT</li>
<li>Additional commits viewable in <a
href="https://github.com/ChromeDevTools/devtools-frontend/compare/v1.0.1628368...v1.0.1630574">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=chrome-devtools-frontend&package-manager=npm_and_yarn&previous-version=1.0.1628368&new-version=1.0.1630574)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ith 3 updates (#2067)

Bumps the dev-dependencies group with 3 updates in the / directory:
[@google/genai](https://github.com/googleapis/js-genai),
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
and [rollup](https://github.com/rollup/rollup).

Updates `@google/genai` from 2.2.0 to 2.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/js-genai/releases">@​google/genai's
releases</a>.</em></p>
<blockquote>
<h2>v2.3.0</h2>
<h2><a
href="https://github.com/googleapis/js-genai/compare/v2.2.0...v2.3.0">2.3.0</a>
(2026-05-15)</h2>
<h3>Features</h3>
<ul>
<li>interaction.{output_text,output_image,output_audio,output_video} (<a
href="https://github.com/googleapis/js-genai/commit/0188233bc1a18033f0a2a8bb228c04181a05dbad">0188233</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/js-genai/blob/main/CHANGELOG.md">@​google/genai's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/js-genai/compare/v2.2.0...v2.3.0">2.3.0</a>
(2026-05-15)</h2>
<h3>Features</h3>
<ul>
<li>interaction.{output_text,output_image,output_audio,output_video} (<a
href="https://github.com/googleapis/js-genai/commit/0188233bc1a18033f0a2a8bb228c04181a05dbad">0188233</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/js-genai/commit/2f3bfefc7568a3ac746ba01b0cd17bdf39d2be8c"><code>2f3bfef</code></a>
chore(main): release 2.3.0 (<a
href="https://redirect.github.com/googleapis/js-genai/issues/1594">#1594</a>)</li>
<li><a
href="https://github.com/googleapis/js-genai/commit/0188233bc1a18033f0a2a8bb228c04181a05dbad"><code>0188233</code></a>
feat:
interaction.{output_text,output_image,output_audio,output_video}</li>
<li><a
href="https://github.com/googleapis/js-genai/commit/2a51b788171a46c4542f574fbcd98798751637dc"><code>2a51b78</code></a>
chore: Remove experimental warnings for interactions</li>
<li><a
href="https://github.com/googleapis/js-genai/commit/cd4d52c10098ef6959a358c35377c14a2b16685b"><code>cd4d52c</code></a>
chore: Fix nondeterministic baseUrl errors</li>
<li><a
href="https://github.com/googleapis/js-genai/commit/1cc001c918cbf0eb9f67585c256485fb1cc1ebd2"><code>1cc001c</code></a>
chore: Cleanup</li>
<li><a
href="https://github.com/googleapis/js-genai/commit/cceb61fb50a23d1e155cb22932548907d6140778"><code>cceb61f</code></a>
Copybara import of the project:</li>
<li><a
href="https://github.com/googleapis/js-genai/commit/d79a95d19daf872d3d3d2fe6f91991b6dd9f805f"><code>d79a95d</code></a>
feat: support speech to speech translation in Gemini Live</li>
<li>See full diff in <a
href="https://github.com/googleapis/js-genai/compare/v2.2.0...v2.3.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `@types/node` from 25.7.0 to 25.8.0
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />

Updates `rollup` from 4.60.3 to 4.60.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rollup/rollup/releases">rollup's
releases</a>.</em></p>
<blockquote>
<h2>v4.60.4</h2>
<h2>4.60.4</h2>
<p><em>2026-05-14</em></p>
<h3>Bug Fixes</h3>
<ul>
<li>Improve stability of chunk hashes (<a
href="https://redirect.github.com/rollup/rollup/issues/6362">#6362</a>)</li>
</ul>
<h3>Pull Requests</h3>
<ul>
<li><a
href="https://redirect.github.com/rollup/rollup/pull/6362">#6362</a>:
fix: stabilize chunk assignment across parallel file reads (<a
href="https://github.com/sonukapoor"><code>@​sonukapoor</code></a>, <a
href="https://github.com/Sonu"><code>@​Sonu</code></a> Kapoor, <a
href="https://github.com/TrickyPi"><code>@​TrickyPi</code></a>, <a
href="https://github.com/lukastaegert"><code>@​lukastaegert</code></a>)</li>
<li><a
href="https://redirect.github.com/rollup/rollup/pull/6370">#6370</a>:
fix(deps): update minor/patch updates (<a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot])</li>
<li><a
href="https://redirect.github.com/rollup/rollup/pull/6371">#6371</a>:
chore(deps): update dependency lru-cache to v11 (<a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot], <a
href="https://github.com/lukastaegert"><code>@​lukastaegert</code></a>)</li>
<li><a
href="https://redirect.github.com/rollup/rollup/pull/6372">#6372</a>:
chore(deps): update react monorepo to v19 (major) (<a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot])</li>
<li><a
href="https://redirect.github.com/rollup/rollup/pull/6373">#6373</a>:
chore(deps): lock file maintenance (<a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot], <a
href="https://github.com/lukastaegert"><code>@​lukastaegert</code></a>)</li>
<li><a
href="https://redirect.github.com/rollup/rollup/pull/6375">#6375</a>:
Resolve vulnerabilities (<a
href="https://github.com/lukastaegert"><code>@​lukastaegert</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rollup/rollup/blob/master/CHANGELOG.md">rollup's
changelog</a>.</em></p>
<blockquote>
<h2>4.60.4</h2>
<p><em>2026-05-14</em></p>
<h3>Bug Fixes</h3>
<ul>
<li>Improve stability of chunk hashes (<a
href="https://redirect.github.com/rollup/rollup/issues/6362">#6362</a>)</li>
</ul>
<h3>Pull Requests</h3>
<ul>
<li><a
href="https://redirect.github.com/rollup/rollup/pull/6362">#6362</a>:
fix: stabilize chunk assignment across parallel file reads (<a
href="https://github.com/sonukapoor"><code>@​sonukapoor</code></a>, <a
href="https://github.com/Sonu"><code>@​Sonu</code></a> Kapoor, <a
href="https://github.com/TrickyPi"><code>@​TrickyPi</code></a>, <a
href="https://github.com/lukastaegert"><code>@​lukastaegert</code></a>)</li>
<li><a
href="https://redirect.github.com/rollup/rollup/pull/6370">#6370</a>:
fix(deps): update minor/patch updates (<a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot])</li>
<li><a
href="https://redirect.github.com/rollup/rollup/pull/6371">#6371</a>:
chore(deps): update dependency lru-cache to v11 (<a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot], <a
href="https://github.com/lukastaegert"><code>@​lukastaegert</code></a>)</li>
<li><a
href="https://redirect.github.com/rollup/rollup/pull/6372">#6372</a>:
chore(deps): update react monorepo to v19 (major) (<a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot])</li>
<li><a
href="https://redirect.github.com/rollup/rollup/pull/6373">#6373</a>:
chore(deps): lock file maintenance (<a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot], <a
href="https://github.com/lukastaegert"><code>@​lukastaegert</code></a>)</li>
<li><a
href="https://redirect.github.com/rollup/rollup/pull/6375">#6375</a>:
Resolve vulnerabilities (<a
href="https://github.com/lukastaegert"><code>@​lukastaegert</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/rollup/rollup/commit/d311a84b0bb4d4a6f50d19ffd2c29cca28660c88"><code>d311a84</code></a>
4.60.4</li>
<li><a
href="https://github.com/rollup/rollup/commit/6aa324854482e273b711972955d2d1b3bb445bcc"><code>6aa3248</code></a>
fix: stabilize chunk assignment across parallel file reads (<a
href="https://redirect.github.com/rollup/rollup/issues/6362">#6362</a>)</li>
<li><a
href="https://github.com/rollup/rollup/commit/82a0fe76b1372a2cf509fc4067d69f25569b83f5"><code>82a0fe7</code></a>
Resolve vulnerabilities (<a
href="https://redirect.github.com/rollup/rollup/issues/6375">#6375</a>)</li>
<li><a
href="https://github.com/rollup/rollup/commit/71f5ebc893d7ff76b5571d63b04ea2ed4a4ddd9d"><code>71f5ebc</code></a>
chore(deps): update dependency lru-cache to v11 (<a
href="https://redirect.github.com/rollup/rollup/issues/6371">#6371</a>)</li>
<li><a
href="https://github.com/rollup/rollup/commit/af91d778cdf564dd1ae1bfd6e92604ec031824a7"><code>af91d77</code></a>
chore(deps): lock file maintenance (<a
href="https://redirect.github.com/rollup/rollup/issues/6373">#6373</a>)</li>
<li><a
href="https://github.com/rollup/rollup/commit/65e7b94ddda9f02334fa8f12ff6bf699c1f07833"><code>65e7b94</code></a>
chore(deps): update react monorepo to v19 (major) (<a
href="https://redirect.github.com/rollup/rollup/issues/6372">#6372</a>)</li>
<li><a
href="https://github.com/rollup/rollup/commit/642587f3d9c5b4aa482a5027672f0fa8ea76da12"><code>642587f</code></a>
fix(deps): update minor/patch updates (<a
href="https://redirect.github.com/rollup/rollup/issues/6370">#6370</a>)</li>
<li>See full diff in <a
href="https://github.com/rollup/rollup/compare/v4.60.3...v4.60.4">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…group (#2073)

Bumps the bundled group with 1 update:
[puppeteer](https://github.com/puppeteer/puppeteer).

Updates `puppeteer` from 25.0.2 to 25.0.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/puppeteer/puppeteer/releases">puppeteer's
releases</a>.</em></p>
<blockquote>
<h2>puppeteer-core: v25.0.3</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v25.0.2...puppeteer-core-v25.0.3">25.0.3</a>
(2026-05-18)</h2>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@​puppeteer/browsers</code> bumped from 3.0.2 to 3.0.3</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>puppeteer: v25.0.3</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.0.2...puppeteer-v25.0.3">25.0.3</a>
(2026-05-18)</h2>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@​puppeteer/browsers</code> bumped from 3.0.2 to 3.0.3</li>
<li>puppeteer-core bumped from 25.0.2 to 25.0.3</li>
</ul>
</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md">puppeteer's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.0.2...puppeteer-v25.0.3">25.0.3</a>
(2026-05-18)</h2>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@​puppeteer/browsers</code> bumped from 3.0.2 to 3.0.3</li>
</ul>
</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/acb4b9ee4403eaeb7acc33a341db4a5032a24e7c"><code>acb4b9e</code></a>
chore: release main (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14999">#14999</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/cce47de9040963d4ad8ec249c76569fd4fc8517e"><code>cce47de</code></a>
fix: fix tar.exe invocation (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14997">#14997</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/2e315b9956f99d1cd9f4d12f5964057620a2d3e1"><code>2e315b9</code></a>
chore(deps): bump the all group with 2 updates (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14995">#14995</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/042838f9734d29b5908ed1c744c1bd1f45934b45"><code>042838f</code></a>
chore(deps): bump node from <code>e989123</code> to <code>050bf2b</code>
in /docker in the all grou...</li>
<li>See full diff in <a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.0.2...puppeteer-v25.0.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=puppeteer&package-manager=npm_and_yarn&previous-version=25.0.2&new-version=25.0.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…0.1631386 in the bundled-devtools group (#2072)

Bumps the bundled-devtools group with 1 update:
[chrome-devtools-frontend](https://github.com/ChromeDevTools/devtools-frontend).

Updates `chrome-devtools-frontend` from 1.0.1630574 to 1.0.1631386
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/181247026d6acf87b47b3faf9919c3345f13a588"><code>1812470</code></a>
Roll browser-protocol and CfT</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/0e158017c43be0de378b02d4ce8bb818ae531b63"><code>0e15801</code></a>
Update DevTools DEPS (trusted)</li>
<li>See full diff in <a
href="https://github.com/ChromeDevTools/devtools-frontend/compare/v1.0.1630574...v1.0.1631386">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=chrome-devtools-frontend&package-manager=npm_and_yarn&previous-version=1.0.1630574&new-version=1.0.1631386)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…pendencies group (#2071)

Bumps the dev-dependencies group with 1 update:
[@google/genai](https://github.com/googleapis/js-genai).

Updates `@google/genai` from 2.3.0 to 2.4.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/js-genai/releases">@​google/genai's
releases</a>.</em></p>
<blockquote>
<h2>v2.4.0</h2>
<h2><a
href="https://github.com/googleapis/js-genai/compare/v2.3.0...v2.4.0">2.4.0</a>
(2026-05-17)</h2>
<h3>Features</h3>
<ul>
<li>support Agent and Environment APIs. (<a
href="https://github.com/googleapis/js-genai/commit/b0d9d2b84b3f94ba710b30b8a993cb7d23a10d35">b0d9d2b</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>output_text for turns that don't end with text. (<a
href="https://github.com/googleapis/js-genai/commit/1a3d94f81574256e2f9e72af6bd5273f44d9fe2f">1a3d94f</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/js-genai/blob/main/CHANGELOG.md">@​google/genai's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/js-genai/compare/v2.3.0...v2.4.0">2.4.0</a>
(2026-05-17)</h2>
<h3>Features</h3>
<ul>
<li>support Agent and Environment APIs. (<a
href="https://github.com/googleapis/js-genai/commit/b0d9d2b84b3f94ba710b30b8a993cb7d23a10d35">b0d9d2b</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>output_text for turns that don't end with text. (<a
href="https://github.com/googleapis/js-genai/commit/1a3d94f81574256e2f9e72af6bd5273f44d9fe2f">1a3d94f</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/js-genai/commit/dbe44849a327e4f3d00f6c38024cd52fd9ea917b"><code>dbe4484</code></a>
chore(main): release 2.4.0 (<a
href="https://redirect.github.com/googleapis/js-genai/issues/1604">#1604</a>)</li>
<li><a
href="https://github.com/googleapis/js-genai/commit/b0d9d2b84b3f94ba710b30b8a993cb7d23a10d35"><code>b0d9d2b</code></a>
feat: support Agent and Environment APIs.</li>
<li><a
href="https://github.com/googleapis/js-genai/commit/38451221d646326e50473ebeb79e9b78d08ced3a"><code>3845122</code></a>
chore: Improve APIConnectionTimeoutError message.</li>
<li><a
href="https://github.com/googleapis/js-genai/commit/6bb8572807036d41d986f1a0513b9fc18aab7a05"><code>6bb8572</code></a>
chore: Deprecate image_config and response_mime_type</li>
<li><a
href="https://github.com/googleapis/js-genai/commit/1a3d94f81574256e2f9e72af6bd5273f44d9fe2f"><code>1a3d94f</code></a>
fix: output_text for turns that don't end with text.</li>
<li>See full diff in <a
href="https://github.com/googleapis/js-genai/compare/v2.3.0...v2.4.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@google/genai&package-manager=npm_and_yarn&previous-version=2.3.0&new-version=2.4.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Adds test coverage for 26, removes test coverage for 23 and 20.
## Summary
- Add a README section explaining how to configure concurrent MCP
sessions
- Document when to use `--experimentalPageIdRouting` for shared server
instances
- Point independent sessions at `--isolated` to avoid sharing the
default user data directory

Refs #2052

## Testing
- `npm run check-format`
Allows the LLM to query the heapsnapshot further to understand what the
retainer path logic.
- add a message about successful configuration
- add a message about the currently emulated geolocation
- switch to comma separate format instead of `x` separator.

Tested with https://www.audero.it/demo/geolocation-api-demo.html
…group (#2078)

Bumps the bundled group with 1 update:
[puppeteer](https://github.com/puppeteer/puppeteer).

Updates `puppeteer` from 25.0.3 to 25.0.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/puppeteer/puppeteer/releases">puppeteer's
releases</a>.</em></p>
<blockquote>
<h2>puppeteer-core: v25.0.4</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v25.0.3...puppeteer-core-v25.0.4">25.0.4</a>
(2026-05-18)</h2>
<h3>🛠️ Fixes</h3>
<ul>
<li>Throw TargetCloseError when session ID not found (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15002">#15002</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/611abef6c4efd1852947025ac2eb141d99d991b4">611abef</a>)</li>
</ul>
<h2>puppeteer: v25.0.4</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.0.3...puppeteer-v25.0.4">25.0.4</a>
(2026-05-18)</h2>
<h3>♻️ Chores</h3>
<ul>
<li><strong>puppeteer:</strong> Synchronize puppeteer versions</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li>puppeteer-core bumped from 25.0.3 to 25.0.4</li>
</ul>
</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md">puppeteer's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.0.3...puppeteer-v25.0.4">25.0.4</a>
(2026-05-18)</h2>
<h3>♻️ Chores</h3>
<ul>
<li><strong>puppeteer:</strong> Synchronize puppeteer versions</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li>puppeteer-core bumped from 25.0.3 to 25.0.4</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li>Throw TargetCloseError when session ID not found (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15002">#15002</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/611abef6c4efd1852947025ac2eb141d99d991b4">611abef</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/019b49bd85e543338f7ae7e0dd0698652530ff5d"><code>019b49b</code></a>
chore: release main (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15003">#15003</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/611abef6c4efd1852947025ac2eb141d99d991b4"><code>611abef</code></a>
fix: Throw TargetCloseError when session ID not found (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15002">#15002</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/272b850dff7e1b7e390257c32ae2f101fdc16b3f"><code>272b850</code></a>
chore(webmcp): Update list tools test with fixed declarative behavior
(<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15000">#15000</a>)</li>
<li>See full diff in <a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.0.3...puppeteer-v25.0.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=puppeteer&package-manager=npm_and_yarn&previous-version=25.0.3&new-version=25.0.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
🤖 I have created a release *beep* *boop*
---


##
[1.0.0](ChromeDevTools/chrome-devtools-mcp@chrome-devtools-mcp-v0.26.0...chrome-devtools-mcp-v1.0.0)
(2026-05-18)


### 🎉 Features

* report new URL after actions that trigger navigation
([#1853](ChromeDevTools/chrome-devtools-mcp#1853))
([b594858](ChromeDevTools/chrome-devtools-mcp@b594858))
* support filePath in evaluate_script
([#2054](ChromeDevTools/chrome-devtools-mcp#2054))
([90d368d](ChromeDevTools/chrome-devtools-mcp@90d368d))


### 🛠️ Fixes

* disable NetworkManager in DevTools
([#1834](ChromeDevTools/chrome-devtools-mcp#1834))
([d0e6539](ChromeDevTools/chrome-devtools-mcp@d0e6539))
* do not use getSelectedMcpPage
([85f935b](ChromeDevTools/chrome-devtools-mcp@85f935b))
* improve geolocation emulation
([#2036](ChromeDevTools/chrome-devtools-mcp#2036))
([213720b](ChromeDevTools/chrome-devtools-mcp@213720b))
* report unknown tool arguments
([#2064](ChromeDevTools/chrome-devtools-mcp#2064))
([041b208](ChromeDevTools/chrome-devtools-mcp@041b208))
* respect user's npm registry configuration in update check
([#2038](ChromeDevTools/chrome-devtools-mcp#2038))
([83a299f](ChromeDevTools/chrome-devtools-mcp@83a299f))


### 📄 Documentation

* explain concurrent session options
([#2062](ChromeDevTools/chrome-devtools-mcp#2062))
([41944b3](ChromeDevTools/chrome-devtools-mcp@41944b3))
* fix typo
([#2075](ChromeDevTools/chrome-devtools-mcp#2075))
([1deb4f8](ChromeDevTools/chrome-devtools-mcp@1deb4f8))
* remove windows workaround and document Node LTS support
([#2074](ChromeDevTools/chrome-devtools-mcp#2074))
([30dcd0b](ChromeDevTools/chrome-devtools-mcp@30dcd0b))
* unhide various experimental flags
([#2055](ChromeDevTools/chrome-devtools-mcp#2055))
([081c903](ChromeDevTools/chrome-devtools-mcp@081c903))


### 🏗️ Refactor

* waitForResult helpers
([#2041](ChromeDevTools/chrome-devtools-mcp#2041))
([f6a12be](ChromeDevTools/chrome-devtools-mcp@f6a12be))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Fixes #1910

Summary:
- save image content before returning structured CLI JSON output
- include saved image metadata in `structuredContent.images`
- add coverage for JSON output with image content

Tests:
- `npm test -- tests/daemon/client.test.ts`
- `npx eslint src/daemon/client.ts tests/daemon/client.test.ts && npx
prettier --check src/daemon/client.ts tests/daemon/client.test.ts`

Co-authored-by: Nicholas Roscino <nroscino@google.com>
🤖 I have created a release *beep* *boop*
---


##
[1.0.1](ChromeDevTools/chrome-devtools-mcp@chrome-devtools-mcp-v1.0.0...chrome-devtools-mcp-v1.0.1)
(2026-05-18)


### 🛠️ Fixes

* include saved image paths in CLI JSON output
([#2070](ChromeDevTools/chrome-devtools-mcp#2070))
([a9fb555](ChromeDevTools/chrome-devtools-mcp@a9fb555))


### 📄 Documentation

* add version to the LTS
([#2080](ChromeDevTools/chrome-devtools-mcp#2080))
([a2083a2](ChromeDevTools/chrome-devtools-mcp@a2083a2))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Update the tools to all include the `heapsnapshot` term for easier
handling.
Renames UID to ID to reduce confusion with the snapshot UIDs.
Renames Id to NodeId to better differentiate from the base Id.
Remove EdgeIndex as it was not useful.

Closes:
ChromeDevTools/chrome-devtools-mcp#1970
Refs: #2052

Co-authored-by: Samiya Caur <samiyac@chromium.org>
## Summary

Extend the existing `emulate` tool with an `extraHTTPHeaders` parameter
that calls Puppeteer's `page.setExtraHTTPHeaders()` (which uses CDP
`Network.setExtraHTTPHeaders` under the hood).

Closes #1175

## Approach

Per [feedback from
@natorion](ChromeDevTools/chrome-devtools-mcp#1175 (comment)),
this integrates into the existing `emulate` tool rather than adding a
standalone tool. The `emulate` tool is already the central hub for
page-level state modifications (userAgent, viewport, networkConditions,
geolocation, colorScheme), and custom HTTP headers fit naturally
alongside them. This also avoids increasing the MCP tool count and LLM
token overhead.

## Changes

- **`src/types.ts`** — Added `extraHTTPHeaders?: Record<string, string>`
to `EmulationSettings`
- **`src/tools/emulation.ts`** — Added `extraHTTPHeaders` as an optional
zod parameter on the `emulate` tool
- **`src/McpContext.ts`** — Added handler logic in the `emulate()`
method:
- Calls `page.setExtraHTTPHeaders()` when `extraHTTPHeaders` is provided
  - Clears from settings when an empty `{}` is passed
- Preserves existing headers when the param is **omitted** (unlike other
emulation settings that reset when omitted) — prevents
`emulate({colorScheme: "dark"})` from accidentally clearing
previously-set headers
- **`tests/tools/emulation.test.ts`** — Added 5 test cases:
  1. Sets extra headers on requests
  2. Clears headers with `{}`
  3. Headers persist across navigations
  4. Does not affect other emulation settings
  5. Reports correctly per-page (new page has no headers)

## Use Case

This enables setting custom HTTP headers on **all** requests — including
the initial document navigation and `<script>` tag loads — which
`initScript` cannot do since it runs after the document is already
fetched.

## Usage

```js
// Set headers
emulate({ extraHTTPHeaders: { "X-Custom": "value", "Authorization": "Bearer token" } })

// Clear headers
emulate({ extraHTTPHeaders: {} })

// Combine with other emulation settings
emulate({ extraHTTPHeaders: { "X-Branch": "feature-1" }, userAgent: "MyBot/1.0" })
```

---------

Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
Co-authored-by: Nicholas Roscino <nroscino@google.com>
…uting flag (#2085)

Refs #2052 

This change updates all the eval scenarios so that they work with and
without experimentalPageIdRouting flag

Co-authored-by: Samiya Caur <samiyac@chromium.org>
wolfib and others added 27 commits May 22, 2026 07:17
This addresses #1955 

CPU throttling needs to be applied to both the primary puppeteer session
and the secondary CDP session from the DevTools universe to have an
effect.

For network throttling this does not seem to be the case, I can see a
slowdown with the current implementation which only applies the network
throttling to the primary CDP session.

I also had to increase the navigation timeout to prevent timeout errors.
This addresses #1955.

Throttling information needs to be passed to the parser for the output
to be correct.
Bumps [qs](https://github.com/ljharb/qs) from 6.14.2 to 6.15.2.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ljharb/qs/blob/main/CHANGELOG.md">qs's
changelog</a>.</em></p>
<blockquote>
<h2><strong>6.15.2</strong></h2>
<ul>
<li>[Fix] <code>stringify</code>: skip null/undefined entries in
<code>arrayFormat: 'comma'</code> + <code>encodeValuesOnly</code>
instead of crashing in <code>encoder</code></li>
<li>[Fix] <code>stringify</code>: use configured <code>delimiter</code>
after <code>charsetSentinel</code> (<a
href="https://redirect.github.com/ljharb/qs/issues/555">#555</a>)</li>
<li>[Fix] <code>stringify</code>: apply <code>formatter</code> to
encoded key under <code>strictNullHandling</code> (<a
href="https://redirect.github.com/ljharb/qs/issues/554">#554</a>)</li>
<li>[Fix] <code>stringify</code>: skip null/undefined filter-array
entries instead of crashing in <code>encoder</code> (<a
href="https://redirect.github.com/ljharb/qs/issues/551">#551</a>)</li>
<li>[Fix] <code>parse</code>: handle nested bracket groups and add
regression tests (<a
href="https://redirect.github.com/ljharb/qs/issues/530">#530</a>)</li>
<li>[readme] fix grammar (<a
href="https://redirect.github.com/ljharb/qs/issues/550">#550</a>)</li>
<li>[Dev Deps] update <code>@ljharb/eslint-config</code></li>
<li>[Tests] add regression tests for keys containing percent-encoded
bracket text</li>
</ul>
<h2><strong>6.15.1</strong></h2>
<ul>
<li>[Fix] <code>parse</code>: <code>parameterLimit: Infinity</code> with
<code>throwOnLimitExceeded: true</code> silently drops all
parameters</li>
<li>[Deps] update <code>@ljharb/eslint-config</code></li>
<li>[Dev Deps] update <code>@ljharb/eslint-config</code>,
<code>iconv-lite</code></li>
<li>[Tests] increase coverage</li>
</ul>
<h2><strong>6.15.0</strong></h2>
<ul>
<li>[New] <code>parse</code>: add <code>strictMerge</code> option to
wrap object/primitive conflicts in an array (<a
href="https://redirect.github.com/ljharb/qs/issues/425">#425</a>, <a
href="https://redirect.github.com/ljharb/qs/issues/122">#122</a>)</li>
<li>[Fix] <code>duplicates</code> option should not apply to bracket
notation keys (<a
href="https://redirect.github.com/ljharb/qs/issues/514">#514</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ljharb/qs/commit/9aca4076fe788338c67cf7e115f0be6bc58d85a8"><code>9aca407</code></a>
v6.15.2</li>
<li><a
href="https://github.com/ljharb/qs/commit/5e33d33447ed0bf1ddab9abc41d27dea4687d992"><code>5e33d33</code></a>
[Dev Deps] update <code>@ljharb/eslint-config</code></li>
<li><a
href="https://github.com/ljharb/qs/commit/21f80b33e5c8b3f7eba1034fff0da4a4a37a1d41"><code>21f80b3</code></a>
[Fix] <code>stringify</code>: skip null/undefined entries in
<code>arrayFormat: 'comma'</code> + `e...</li>
<li><a
href="https://github.com/ljharb/qs/commit/a0a81ea2071acce3eff41a040f719ac8f5c4f64c"><code>a0a81ea</code></a>
[Fix] <code>stringify</code>: use configured <code>delimiter</code>
after <code>charsetSentinel</code></li>
<li><a
href="https://github.com/ljharb/qs/commit/e3062f78f5233b338ceeb8e8dfa5a07dea4b32a8"><code>e3062f7</code></a>
[Fix] <code>stringify</code>: apply <code>formatter</code> to encoded
key under <code>strictNullHandling</code></li>
<li><a
href="https://github.com/ljharb/qs/commit/0c180a40adb8c6703fffc85b2ff06ca209f5c1e0"><code>0c180a4</code></a>
[Fix] <code>stringify</code>: skip null/undefined filter-array entries
instead of crashi...</li>
<li><a
href="https://github.com/ljharb/qs/commit/3a8b94aec19bd664720f6f6b1e66c4a0dfe4b656"><code>3a8b94a</code></a>
[Tests] add regression tests for keys containing percent-encoded bracket
text</li>
<li><a
href="https://github.com/ljharb/qs/commit/96755abd357c0e534dd3442a84a04d08864bfe0d"><code>96755ab</code></a>
[readme] fix grammar</li>
<li><a
href="https://github.com/ljharb/qs/commit/a419ce5bbfcdb98a299f1a0bb47ea055baef20e6"><code>a419ce5</code></a>
[Fix] <code>parse</code>: handle nested bracket groups and add
regression tests</li>
<li><a
href="https://github.com/ljharb/qs/commit/3f5e1c528c967d915096787efbffa73cf6044170"><code>3f5e1c5</code></a>
v6.15.1</li>
<li>Additional commits viewable in <a
href="https://github.com/ljharb/qs/compare/v6.14.2...v6.15.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=qs&package-manager=npm_and_yarn&previous-version=6.14.2&new-version=6.15.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/ChromeDevTools/chrome-devtools-mcp/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the dev-dependencies group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [@google/genai](https://github.com/googleapis/js-genai) | `2.4.0` |
`2.6.0` |
|
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
| `25.8.0` | `25.9.1` |
|
[@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)
| `8.59.3` | `8.59.4` |
|
[@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)
| `8.59.3` | `8.59.4` |
| [semver](https://github.com/npm/node-semver) | `7.8.0` | `7.8.1` |
|
[typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint)
| `8.59.3` | `8.59.4` |

Updates `@google/genai` from 2.4.0 to 2.6.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/js-genai/releases">@​google/genai's
releases</a>.</em></p>
<blockquote>
<h2>v2.6.0</h2>
<h2><a
href="https://github.com/googleapis/js-genai/compare/v2.5.0...v2.6.0">2.6.0</a>
(2026-05-21)</h2>
<h3>Features</h3>
<ul>
<li>add <code>enable_prompt_injection_detection</code> for Computer Use
feature for the Gemini API. (<a
href="https://github.com/googleapis/js-genai/commit/f780f3c6dcbf311b8712a8d2bda2b1cee38d3067">f780f3c</a>)</li>
<li>Add budget_exceeded status (<a
href="https://github.com/googleapis/js-genai/commit/1e97bd0ab7791f6140b24d3a4457c097dd2d48a0">1e97bd0</a>)</li>
<li>Add gemini-3.5-flash (<a
href="https://github.com/googleapis/js-genai/commit/1e97bd0ab7791f6140b24d3a4457c097dd2d48a0">1e97bd0</a>)</li>
<li>add new fields (<a
href="https://github.com/googleapis/js-genai/commit/b78eeee55607797a1bb14d41e648dacab863a7d2">b78eeee</a>)</li>
</ul>
<h2>v2.5.0</h2>
<h2><a
href="https://github.com/googleapis/js-genai/compare/v2.4.0...v2.5.0">2.5.0</a>
(2026-05-20)</h2>
<h3>Features</h3>
<ul>
<li>Add Gemini 3.5 Flash model to options (<a
href="https://github.com/googleapis/js-genai/commit/fcf26e386d4c8586047b64ecb0f01705d7a0a43e">fcf26e3</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/js-genai/blob/main/CHANGELOG.md">@​google/genai's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/js-genai/compare/v2.5.0...v2.6.0">2.6.0</a>
(2026-05-21)</h2>
<h3>Features</h3>
<ul>
<li>add <code>enable_prompt_injection_detection</code> for Computer Use
feature for the Gemini API. (<a
href="https://github.com/googleapis/js-genai/commit/f780f3c6dcbf311b8712a8d2bda2b1cee38d3067">f780f3c</a>)</li>
<li>Add budget_exceeded status (<a
href="https://github.com/googleapis/js-genai/commit/1e97bd0ab7791f6140b24d3a4457c097dd2d48a0">1e97bd0</a>)</li>
<li>Add gemini-3.5-flash (<a
href="https://github.com/googleapis/js-genai/commit/1e97bd0ab7791f6140b24d3a4457c097dd2d48a0">1e97bd0</a>)</li>
<li>add new fields (<a
href="https://github.com/googleapis/js-genai/commit/b78eeee55607797a1bb14d41e648dacab863a7d2">b78eeee</a>)</li>
</ul>
<h2><a
href="https://github.com/googleapis/js-genai/compare/v2.4.0...v2.5.0">2.5.0</a>
(2026-05-20)</h2>
<h3>Features</h3>
<ul>
<li>Add Gemini 3.5 Flash model to options (<a
href="https://github.com/googleapis/js-genai/commit/fcf26e386d4c8586047b64ecb0f01705d7a0a43e">fcf26e3</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/js-genai/commit/a631549ff5e2913eb42d5f01e756231949633197"><code>a631549</code></a>
chore(main): release 2.6.0 (<a
href="https://redirect.github.com/googleapis/js-genai/issues/1623">#1623</a>)</li>
<li><a
href="https://github.com/googleapis/js-genai/commit/f780f3c6dcbf311b8712a8d2bda2b1cee38d3067"><code>f780f3c</code></a>
feat: add <code>enable_prompt_injection_detection</code> for Computer
Use feature for th...</li>
<li><a
href="https://github.com/googleapis/js-genai/commit/b78eeee55607797a1bb14d41e648dacab863a7d2"><code>b78eeee</code></a>
feat: add new fields</li>
<li><a
href="https://github.com/googleapis/js-genai/commit/1e97bd0ab7791f6140b24d3a4457c097dd2d48a0"><code>1e97bd0</code></a>
feat: Add budget_exceeded status</li>
<li><a
href="https://github.com/googleapis/js-genai/commit/2cb1814017fe43de42514ac5d7edd5d411c99c2d"><code>2cb1814</code></a>
chore(main): release 2.5.0 (<a
href="https://redirect.github.com/googleapis/js-genai/issues/1616">#1616</a>)</li>
<li><a
href="https://github.com/googleapis/js-genai/commit/f06e3a2aecf64294174d32b32f05b4cd0893c52a"><code>f06e3a2</code></a>
chore: update comment in BatchJobOutputInfo to unblock javadoc
generation</li>
<li><a
href="https://github.com/googleapis/js-genai/commit/fcf26e386d4c8586047b64ecb0f01705d7a0a43e"><code>fcf26e3</code></a>
feat: Add Gemini 3.5 Flash model to options</li>
<li><a
href="https://github.com/googleapis/js-genai/commit/b252753f39c9cd33a39d357ec2be12cbf7a8ebb2"><code>b252753</code></a>
chore: Cleanup</li>
<li>See full diff in <a
href="https://github.com/googleapis/js-genai/compare/v2.4.0...v2.6.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `@types/node` from 25.8.0 to 25.9.1
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />

Updates `@typescript-eslint/eslint-plugin` from 8.59.3 to 8.59.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/releases">@​typescript-eslint/eslint-plugin's
releases</a>.</em></p>
<blockquote>
<h2>v8.59.4</h2>
<h2>8.59.4 (2026-05-18)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [no-floating-promises] stack
overflow when using recursive types (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12294">#12294</a>)</li>
<li><strong>project-service:</strong> throw error cause in
<code>getParsedConfigFileFromTSServer</code> (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12321">#12321</a>)</li>
<li><strong>typescript-eslint:</strong> export Compatible* types from
typescript-eslint to resolve pnpm TS error (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12340">#12340</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Kirk Waiblinger <a
href="https://github.com/kirkwaiblinger"><code>@​kirkwaiblinger</code></a></li>
<li>lumir</li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.4">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md">@​typescript-eslint/eslint-plugin's
changelog</a>.</em></p>
<blockquote>
<h2>8.59.4 (2026-05-18)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [no-floating-promises] stack
overflow when using recursive types (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12294">#12294</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.4">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/ca6ca1431b6d18235297a7e29feb5d98f012dff2"><code>ca6ca14</code></a>
chore(release): publish 8.59.4</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/4302433ae6bf93d4ddc35264ad1b951254758566"><code>4302433</code></a>
fix(eslint-plugin): [no-floating-promises] stack overflow when using
recursiv...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/10b79f1ba8e98610a3af85152a1b3b406f91e633"><code>10b79f1</code></a>
chore(deps): update dependency eslint to v10.4.0 (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/12339">#12339</a>)</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/2a6765d9628dc776f8127c96f088bb807c0bcab2"><code>2a6765d</code></a>
chore: clenaup <code>getAwaitedType</code> from
<code>typescript.d.ts</code> (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/12302">#12302</a>)</li>
<li>See full diff in <a
href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.4/packages/eslint-plugin">compare
view</a></li>
</ul>
</details>
<br />

Updates `@typescript-eslint/parser` from 8.59.3 to 8.59.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/releases">@​typescript-eslint/parser's
releases</a>.</em></p>
<blockquote>
<h2>v8.59.4</h2>
<h2>8.59.4 (2026-05-18)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [no-floating-promises] stack
overflow when using recursive types (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12294">#12294</a>)</li>
<li><strong>project-service:</strong> throw error cause in
<code>getParsedConfigFileFromTSServer</code> (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12321">#12321</a>)</li>
<li><strong>typescript-eslint:</strong> export Compatible* types from
typescript-eslint to resolve pnpm TS error (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12340">#12340</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Kirk Waiblinger <a
href="https://github.com/kirkwaiblinger"><code>@​kirkwaiblinger</code></a></li>
<li>lumir</li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.4">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md">@​typescript-eslint/parser's
changelog</a>.</em></p>
<blockquote>
<h2>8.59.4 (2026-05-18)</h2>
<p>This was a version bump only for parser to align it with other
projects, there were no code changes.</p>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.4">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/ca6ca1431b6d18235297a7e29feb5d98f012dff2"><code>ca6ca14</code></a>
chore(release): publish 8.59.4</li>
<li>See full diff in <a
href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.4/packages/parser">compare
view</a></li>
</ul>
</details>
<br />

Updates `semver` from 7.8.0 to 7.8.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/npm/node-semver/releases">semver's
releases</a>.</em></p>
<blockquote>
<h2>v7.8.1</h2>
<h2><a
href="https://github.com/npm/node-semver/compare/v7.8.0...v7.8.1">7.8.1</a>
(2026-05-21)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><a
href="https://github.com/npm/node-semver/commit/17aa702d91166472b197a2ea768f085083bee2e4"><code>17aa702</code></a>
<a href="https://redirect.github.com/npm/node-semver/pull/869">#869</a>
strip build metadata before comparator trimming (<a
href="https://redirect.github.com/npm/node-semver/issues/869">#869</a>)
(<a
href="https://github.com/owlstronaut"><code>@​owlstronaut</code></a>)</li>
<li><a
href="https://github.com/npm/node-semver/commit/5f3ca133e040210b6ea80c350a1d61d9da02e722"><code>5f3ca13</code></a>
<a href="https://redirect.github.com/npm/node-semver/pull/867">#867</a>
handle prerelease bounds in subset (<a
href="https://redirect.github.com/npm/node-semver/issues/867">#867</a>)
(<a
href="https://github.com/puneetdixit200"><code>@​puneetdixit200</code></a>,
Puneet Dixit)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/npm/node-semver/blob/main/CHANGELOG.md">semver's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/npm/node-semver/compare/v7.8.0...v7.8.1">7.8.1</a>
(2026-05-21)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><a
href="https://github.com/npm/node-semver/commit/17aa702d91166472b197a2ea768f085083bee2e4"><code>17aa702</code></a>
<a href="https://redirect.github.com/npm/node-semver/pull/869">#869</a>
strip build metadata before comparator trimming (<a
href="https://redirect.github.com/npm/node-semver/issues/869">#869</a>)
(<a
href="https://github.com/owlstronaut"><code>@​owlstronaut</code></a>)</li>
<li><a
href="https://github.com/npm/node-semver/commit/5f3ca133e040210b6ea80c350a1d61d9da02e722"><code>5f3ca13</code></a>
<a href="https://redirect.github.com/npm/node-semver/pull/867">#867</a>
handle prerelease bounds in subset (<a
href="https://redirect.github.com/npm/node-semver/issues/867">#867</a>)
(<a
href="https://github.com/puneetdixit200"><code>@​puneetdixit200</code></a>,
Puneet Dixit)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/npm/node-semver/commit/76416081a8413383cf6e24c82cafa438bd076d41"><code>7641608</code></a>
chore: release 7.8.1 (<a
href="https://redirect.github.com/npm/node-semver/issues/868">#868</a>)</li>
<li><a
href="https://github.com/npm/node-semver/commit/17aa702d91166472b197a2ea768f085083bee2e4"><code>17aa702</code></a>
fix: strip build metadata before comparator trimming (<a
href="https://redirect.github.com/npm/node-semver/issues/869">#869</a>)</li>
<li><a
href="https://github.com/npm/node-semver/commit/5f3ca133e040210b6ea80c350a1d61d9da02e722"><code>5f3ca13</code></a>
fix: handle prerelease bounds in subset (<a
href="https://redirect.github.com/npm/node-semver/issues/867">#867</a>)</li>
<li>See full diff in <a
href="https://github.com/npm/node-semver/compare/v7.8.0...v7.8.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `typescript-eslint` from 8.59.3 to 8.59.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/releases">typescript-eslint's
releases</a>.</em></p>
<blockquote>
<h2>v8.59.4</h2>
<h2>8.59.4 (2026-05-18)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [no-floating-promises] stack
overflow when using recursive types (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12294">#12294</a>)</li>
<li><strong>project-service:</strong> throw error cause in
<code>getParsedConfigFileFromTSServer</code> (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12321">#12321</a>)</li>
<li><strong>typescript-eslint:</strong> export Compatible* types from
typescript-eslint to resolve pnpm TS error (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12340">#12340</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Kirk Waiblinger <a
href="https://github.com/kirkwaiblinger"><code>@​kirkwaiblinger</code></a></li>
<li>lumir</li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.4">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md">typescript-eslint's
changelog</a>.</em></p>
<blockquote>
<h2>8.59.4 (2026-05-18)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>typescript-eslint:</strong> export Compatible* types from
typescript-eslint to resolve pnpm TS error (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12340">#12340</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Kirk Waiblinger <a
href="https://github.com/kirkwaiblinger"><code>@​kirkwaiblinger</code></a></li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.4">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/ca6ca1431b6d18235297a7e29feb5d98f012dff2"><code>ca6ca14</code></a>
chore(release): publish 8.59.4</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/4b927c607755b2648d5854b9e928c1dbb2b8e088"><code>4b927c6</code></a>
fix(typescript-eslint): export Compatible* types from typescript-eslint
to re...</li>
<li>See full diff in <a
href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.4/packages/typescript-eslint">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…0.1632065 in the bundled-devtools group (#2112)

Bumps the bundled-devtools group with 1 update:
[chrome-devtools-frontend](https://github.com/ChromeDevTools/devtools-frontend).

Updates `chrome-devtools-frontend` from 1.0.1631386 to 1.0.1632065
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/53df97e01cc8c5649d0bfa7068ddac65d932d01c"><code>53df97e</code></a>
selfXSS protection for live expressions</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/15467553e15a03c46e72b7b690cd024ae8b65184"><code>1546755</code></a>
Update DevTools DEPS (trusted)</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/9b15593e59513f5d966d1bf46fb2832018f070ac"><code>9b15593</code></a>
[storage-agent] Hook up storage agent with local/session storage</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/2bc21270c002b769544f6fbebf6a3048bdcac07c"><code>2bc2127</code></a>
[AI] Show 'COMPUTED_STYLES' widget when the AccessibilityAgent's
'getElementA...</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/30d6ecf81a40050a68fe67fba0a07cdfc267d8ee"><code>30d6ecf</code></a>
Keep track of thoughtSignature in AI conversations</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/281217b2c13d7f0ded40072b6082d6fe18277ab8"><code>281217b</code></a>
Disallow function call on navigation</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/42ac38c52b7198fe30b662e98c37ea8c77b08447"><code>42ac38c</code></a>
Roll browser-protocol and CfT</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/11984db47b3ccde41dea2e33f3e4b3b3f737f586"><code>11984db</code></a>
[ui] Mark MenuItem as role=menuitem instead of role=option</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/d6a260d60a6a3f94ebe61e1075e9a472a36002cf"><code>d6a260d</code></a>
Update DevTools DEPS (trusted)</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/48d3ee2ceb68287b1cf9ed22a1b9b3e8c77eb68a"><code>48d3ee2</code></a>
Support editing <a
href="https://github.com/function"><code>@​function</code></a>
rules</li>
<li>Additional commits viewable in <a
href="https://github.com/ChromeDevTools/devtools-frontend/compare/v1.0.1631386...v1.0.1632065">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=chrome-devtools-frontend&package-manager=npm_and_yarn&previous-version=1.0.1631386&new-version=1.0.1632065)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Summary

Two small typo fixes in `.github/ISSUE_TEMPLATE/`:

- `02-feature.yml`: "Suggest an idea for for chrome-devtools-mcp" had a
duplicate "for".
- `03-task.yml`: "mainainers only" was missing the first `t`.

Both strings appear on the GitHub issue picker when a user clicks "New
issue", so they're user-facing.

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
The regex used to match the versions is 
```js
const regex = /(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)(-(?<preRelease>[\w.]+))?(\+(?<build>[-\w.]+))?/
```
And they replace what was matched.
Closes ChromeDevTools/chrome-devtools-mcp#2121
… cleanly (#2117)

Fixes #2116.

`chrome-devtools-mcp-main.ts` currently has no shutdown handler. After a
session calls `navigate_page` (or anything else that launches Chrome),
the Chrome subprocess keeps the Node event loop ref'd, so closing stdin
(the stdio MCP convention for "I'm done") doesn't make the server exit.
Callers that close stdin to terminate the server have to fall back to
SIGTERM / SIGKILL on every page-loaded session — deterministically, not
flakily.

This change:

1. Adds `closeBrowser()` in `browser.ts` that calls `browser.close()`
for launched instances (reaps the Chrome subprocess) and
`browser.disconnect()` for attached instances (leaves the user's Chrome
alive). No-op if no browser is active or the connection has already been
dropped.

2. Registers shutdown handlers in `chrome-devtools-mcp-main.ts` for:
   - `stdin.on('end' | 'close')` — stdio MCP transport convention
- `SIGTERM` / `SIGINT` / `SIGHUP` — clients that signal instead of
closing stdin (`SIGHUP` for parity with `src/daemon/daemon.ts`)

The handler is idempotent (guarded `shuttingDown` flag), and has an
unref'd 10s timeout backstop in case Chrome teardown hangs (slow
`beforeunload` handlers, many tabs, etc.).

### Note on scope

This complements (does not replace) the client-side fixes filed against
#1765, e.g. google-gemini/gemini-cli#13391 and
anthropics/claude-code#42300. The MCP stdio convention is that closing
stdin signals shutdown; a server that doesn't honor that forces every
client to special-case it. The watchdog sub-process
(`src/telemetry/watchdog/main.ts:145-146`) and the daemon
(`src/daemon/daemon.ts:224-230`) both already implement this for the
same reason — this PR extends the same pattern to the main entry point
so all three execution paths behave consistently.

### Measurement

Repro script in #2116, same env (chrome-devtools-mcp@1.0.1, Chrome
148.0.7778.178, Node v24.11.1, Linux), 10 iterations:

| Scenario | Before | After |
|---|---|---|
| `tools/list only` (no navigation) | 10/10 clean, 30-37 ms | 10/10
clean, 29-40 ms |
| `navigate example.com` | 10/10 SIGTERM at ~5080 ms | 10/10 clean at
145-180 ms |

### Notes

- I didn't add a subprocess-based test for this; the existing
`tests/utils.ts:runCli` infrastructure targets the `chrome-devtools`
CLI, not the stdio MCP server, and a shutdown-timing test would
introduce non-trivial Chrome-startup flakiness in CI. Happy to add one
if maintainers want it — pointer to the right test directory
appreciated.
We should primarily validate in the tool calls before we start invoking
tool handlers.
…group (#2130)

Bumps the bundled group with 1 update:
[puppeteer](https://github.com/puppeteer/puppeteer).

Updates `puppeteer` from 25.0.4 to 25.1.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/puppeteer/puppeteer/releases">puppeteer's
releases</a>.</em></p>
<blockquote>
<h2>puppeteer-core: v25.1.0</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v25.0.4...puppeteer-core-v25.1.0">25.1.0</a>
(2026-05-26)</h2>
<h3>🎉 Features</h3>
<ul>
<li>roll to Chrome 149.0.7827.2 (<a
href="https://github.com/puppeteer/puppeteer/commit/af1b9be6b6a178f7ea6e197f738ca3cf99d786f7">af1b9be</a>)</li>
<li>roll to Firefox 151.0 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15013">#15013</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/767ea549da1510f0838987f250b5d6be4e0f8960">767ea54</a>)</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li>roll to Chrome 148.0.7778.178 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15014">#15014</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/59764acccc9e1c7bca75a60472b288595d3f6cbf">59764ac</a>)</li>
</ul>
<h3>📄 Documentation</h3>
<ul>
<li>use ESM and top level await (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15030">#15030</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/34ecc62957bdd2c83820a51d5d1a6acb81e2957d">34ecc62</a>)</li>
</ul>
<h3>🏗️ Refactor</h3>
<ul>
<li>remove debug dependency (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15023">#15023</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/94d1e1c3dc84ed102d2e801a4e6343cd9fd4a9af">94d1e1c</a>)</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@​puppeteer/browsers</code> bumped from 3.0.3 to 3.0.4</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>puppeteer: v25.1.0</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.0.4...puppeteer-v25.1.0">25.1.0</a>
(2026-05-26)</h2>
<h3>🎉 Features</h3>
<ul>
<li>roll to Chrome 149.0.7827.2 (<a
href="https://github.com/puppeteer/puppeteer/commit/af1b9be6b6a178f7ea6e197f738ca3cf99d786f7">af1b9be</a>)</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li>improve progress bar and install (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15042">#15042</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/51db32a5bb48f40cc635ac3eaa2ebb60e6f5bfd5">51db32a</a>)</li>
<li>support concurrency in progress bars (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15045">#15045</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/ab0171d8f4206bdb9dd4e93c2db8d28530bf3fb9">ab0171d</a>)</li>
</ul>
<h3>🏗️ Refactor</h3>
<ul>
<li>replace cosmiconfig with lilconfig (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15031">#15031</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/4a1c2fffe634d430228cac3f8bc7a72f4b5a4a29">4a1c2ff</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md">puppeteer's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.0.4...puppeteer-v25.1.0">25.1.0</a>
(2026-05-26)</h2>
<h3>🎉 Features</h3>
<ul>
<li>roll to Chrome 149.0.7827.2 (<a
href="https://github.com/puppeteer/puppeteer/commit/af1b9be6b6a178f7ea6e197f738ca3cf99d786f7">af1b9be</a>)</li>
<li>roll to Firefox 151.0 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15013">#15013</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/767ea549da1510f0838987f250b5d6be4e0f8960">767ea54</a>)</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li>roll to Chrome 148.0.7778.178 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15014">#15014</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/59764acccc9e1c7bca75a60472b288595d3f6cbf">59764ac</a>)</li>
</ul>
<h3>🏗️ Refactor</h3>
<ul>
<li>remove debug dependency (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15023">#15023</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/94d1e1c3dc84ed102d2e801a4e6343cd9fd4a9af">94d1e1c</a>)</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li><code>@​puppeteer/browsers</code> bumped from 3.0.3 to 3.0.4</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>📄 Documentation</h3>
<ul>
<li>use ESM and top level await (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15030">#15030</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/34ecc62957bdd2c83820a51d5d1a6acb81e2957d">34ecc62</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/ede66693bc0a6d9a8029f66288d13e26966173ce"><code>ede6669</code></a>
chore: release main (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15056">#15056</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/7bc09e7d30e98687668dfe33089b9a3a633cece7"><code>7bc09e7</code></a>
chore(deps): bump the all group with 5 updates (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15052">#15052</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/8c8117047020a49d61f1dff5e302f05ab672951d"><code>8c81170</code></a>
chore(deps): bump the all group in /website with 3 updates (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15051">#15051</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/09eced565903369338ff7537b20727b24a284495"><code>09eced5</code></a>
chore: update lock</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/53b9fdadc131449377ed6de59162426140d29db6"><code>53b9fda</code></a>
chore(deps): bump the dependencies group with 2 updates (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15049">#15049</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/d8424116590afac99369c0e996e0dfaf9029b34c"><code>d842411</code></a>
chore(deps): bump node from <code>050bf2b</code> to <code>8530f76</code>
in /docker in the all grou...</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/1d2a5696d3c7b592b8d65327d76cc2264f9fba9f"><code>1d2a569</code></a>
docs: document read-only Docker directories (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15048">#15048</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/ab0171d8f4206bdb9dd4e93c2db8d28530bf3fb9"><code>ab0171d</code></a>
fix: support concurrency in progress bars (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15045">#15045</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/51db32a5bb48f40cc635ac3eaa2ebb60e6f5bfd5"><code>51db32a</code></a>
fix: improve progress bar and install (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15042">#15042</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/d32384baa5ef8bcd81319ee698e9d46edba1e957"><code>d32384b</code></a>
chore(deps): bump qs and express in /website (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/15040">#15040</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.0.4...puppeteer-v25.1.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=puppeteer&package-manager=npm_and_yarn&previous-version=25.0.4&new-version=25.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
🤖 I have created a release *beep* *boop*
---


##
[1.1.0](ChromeDevTools/chrome-devtools-mcp@chrome-devtools-mcp-v1.0.1...chrome-devtools-mcp-v1.1.0)
(2026-05-26)


### 🎉 Features

* add extraHttpHeaders emulation to emulate tool
([#1176](ChromeDevTools/chrome-devtools-mcp#1176))
([6992106](ChromeDevTools/chrome-devtools-mcp@6992106))
* created cursor plugin.json setting file with release auto versioning
([#2091](ChromeDevTools/chrome-devtools-mcp#2091))
([10c8205](ChromeDevTools/chrome-devtools-mcp@10c8205))


### 🛠️ Fixes

* Apply CPU throttling to secondary CDP session
([#2092](ChromeDevTools/chrome-devtools-mcp#2092))
([3ade962](ChromeDevTools/chrome-devtools-mcp@3ade962))
* **cli:** address pid file creation issues
([#2124](ChromeDevTools/chrome-devtools-mcp#2124))
([1b51a52](ChromeDevTools/chrome-devtools-mcp@1b51a52))
* exit on stdin EOF and SIGTERM/SIGINT/SIGHUP, closing the browser
cleanly
([#2117](ChromeDevTools/chrome-devtools-mcp#2117))
([43b934c](ChromeDevTools/chrome-devtools-mcp@43b934c))
* Fix throttling info in performance trace output
([#2096](ChromeDevTools/chrome-devtools-mcp#2096))
([57f32b0](ChromeDevTools/chrome-devtools-mcp@57f32b0))
* make pageId required
([#2084](ChromeDevTools/chrome-devtools-mcp#2084))
([d751693](ChromeDevTools/chrome-devtools-mcp@d751693)),
closes
[#2052](ChromeDevTools/chrome-devtools-mcp#2052)
* remove duplicate .mcp.json
([#2095](ChromeDevTools/chrome-devtools-mcp#2095))
([dbf6ba9](ChromeDevTools/chrome-devtools-mcp@dbf6ba9))
* Set viewport after updating timeouts when setting emulation
([#2134](ChromeDevTools/chrome-devtools-mcp#2134))
([0c3ac37](ChromeDevTools/chrome-devtools-mcp@0c3ac37))
* use pinned version for plugins
([#2135](ChromeDevTools/chrome-devtools-mcp#2135))
([8ea5f09](ChromeDevTools/chrome-devtools-mcp@8ea5f09))
* use realpath for MCP roots validation
([#2127](ChromeDevTools/chrome-devtools-mcp#2127))
([176eb69](ChromeDevTools/chrome-devtools-mcp@176eb69))


### 📄 Documentation

* align coding agent examples with Antigravity
([#2094](ChromeDevTools/chrome-devtools-mcp#2094))
([ce31594](ChromeDevTools/chrome-devtools-mcp@ce31594))
* fix installation instructions for VS Code
([#2087](ChromeDevTools/chrome-devtools-mcp#2087))
([9f47df3](ChromeDevTools/chrome-devtools-mcp@9f47df3))


### 🏗️ Refactor

* remove redundant validatePath calls
([#2136](ChromeDevTools/chrome-devtools-mcp#2136))
([521c388](ChromeDevTools/chrome-devtools-mcp@521c388))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Refs #1777 

This change makes pageId as the first argument for CLI if
experimentalPageIdRouting flag is enabled

Co-authored-by: Samiya Caur <samiyac@chromium.org>
Local user must have Node =>v22.18 to use it without flags, consider we
should be using v24 locally due to .nvm we can remove the flags and make
it easier to read what the commands are doing.
🤖 I have created a release *beep* *boop*
---


##
[1.1.1](ChromeDevTools/chrome-devtools-mcp@chrome-devtools-mcp-v1.1.0...chrome-devtools-mcp-v1.1.1)
(2026-05-27)


### 🛠️ Fixes

* **cli:** have pageId as first argument
([#2142](ChromeDevTools/chrome-devtools-mcp#2142))
([60be3e6](ChromeDevTools/chrome-devtools-mcp@60be3e6))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
…0.1635648 in the bundled-devtools group (#2129)

Bumps the bundled-devtools group with 1 update:
[chrome-devtools-frontend](https://github.com/ChromeDevTools/devtools-frontend).

Updates `chrome-devtools-frontend` from 1.0.1632065 to 1.0.1635648
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/baad1f9760c7168078a7734315493801271aa34e"><code>baad1f9</code></a>
Roll browser-protocol and CfT</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/44d52116dc42f14036103e26f04e4a0e3fa443b4"><code>44d5211</code></a>
Network: ensure too large images are linked</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/b8fec712b8d2c9bbaee7672dfda2d89170ea7c2b"><code>b8fec71</code></a>
Update DevTools DEPS (trusted)</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/7de281862ab9b80aa6fa27c00e939b79a3022b62"><code>7de2818</code></a>
Roll browser-protocol and CfT</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/1adef13b6f26cc7be5e3f771c1b66339c3fad03f"><code>1adef13</code></a>
Update DevTools DEPS (trusted)</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/839f6d242ac83a8c265ebaaf48e8e0c6f92d5925"><code>839f6d2</code></a>
Update DevTools DEPS (trusted)</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/8bbc3ffedbe713e5dba10f48552413f4af1ea624"><code>8bbc3ff</code></a>
Update DevTools DEPS (trusted)</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/f4d0583fc171242e6e5c1e408e1d18da7a2c413d"><code>f4d0583</code></a>
Add Plus Button (2/3): declarative plus-button option for
TabbedLocation</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/f8fbed4db685c65f13af56dcad96531b44b9a4b7"><code>f8fbed4</code></a>
AI: Fix cross-origin data leak in AccessibilityAgent</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/9be84a9904de7d976f4713aafc28cd1edc9ad465"><code>9be84a9</code></a>
Updated performance formatters to support an optional deviceScope,</li>
<li>Additional commits viewable in <a
href="https://github.com/ChromeDevTools/devtools-frontend/compare/v1.0.1632065...v1.0.1635648">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=chrome-devtools-frontend&package-manager=npm_and_yarn&previous-version=1.0.1632065&new-version=1.0.1635648)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Nicholas Roscino <nroscino@google.com>
CrUX data returned with the performance tool now reflects the emulated
device

Closes: #1813
…ith 3 updates (#2128)

Bumps the dev-dependencies group with 3 updates in the / directory:
[@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin),
[@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)
and
[typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).

Updates `@typescript-eslint/eslint-plugin` from 8.59.4 to 8.60.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/releases">@​typescript-eslint/eslint-plugin's
releases</a>.</em></p>
<blockquote>
<h2>v8.60.0</h2>
<h2>8.60.0 (2026-05-25)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>rule-tester:</strong> added updates of RuleTester from
upstream (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12291">#12291</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li>playground TS version selector is not working (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12326">#12326</a>,
<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/issues/12325">#12325</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Vinccool96</li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.60.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md">@​typescript-eslint/eslint-plugin's
changelog</a>.</em></p>
<blockquote>
<h2>8.60.0 (2026-05-25)</h2>
<p>This was a version bump only for eslint-plugin to align it with other
projects, there were no code changes.</p>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.60.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/f891c29de5f3e23f3d8c59cc599d3196e54e9b58"><code>f891c29</code></a>
chore(release): publish 8.60.0</li>
<li>See full diff in <a
href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.60.0/packages/eslint-plugin">compare
view</a></li>
</ul>
</details>
<br />

Updates `@typescript-eslint/parser` from 8.59.4 to 8.60.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/releases">@​typescript-eslint/parser's
releases</a>.</em></p>
<blockquote>
<h2>v8.60.0</h2>
<h2>8.60.0 (2026-05-25)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>rule-tester:</strong> added updates of RuleTester from
upstream (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12291">#12291</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li>playground TS version selector is not working (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12326">#12326</a>,
<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/issues/12325">#12325</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Vinccool96</li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.60.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md">@​typescript-eslint/parser's
changelog</a>.</em></p>
<blockquote>
<h2>8.60.0 (2026-05-25)</h2>
<p>This was a version bump only for parser to align it with other
projects, there were no code changes.</p>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.60.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/f891c29de5f3e23f3d8c59cc599d3196e54e9b58"><code>f891c29</code></a>
chore(release): publish 8.60.0</li>
<li>See full diff in <a
href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.60.0/packages/parser">compare
view</a></li>
</ul>
</details>
<br />

Updates `typescript-eslint` from 8.59.4 to 8.60.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/releases">typescript-eslint's
releases</a>.</em></p>
<blockquote>
<h2>v8.60.0</h2>
<h2>8.60.0 (2026-05-25)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>rule-tester:</strong> added updates of RuleTester from
upstream (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12291">#12291</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li>playground TS version selector is not working (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12326">#12326</a>,
<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/issues/12325">#12325</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Vinccool96</li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.60.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md">typescript-eslint's
changelog</a>.</em></p>
<blockquote>
<h2>8.60.0 (2026-05-25)</h2>
<p>This was a version bump only for typescript-eslint to align it with
other projects, there were no code changes.</p>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.60.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/f891c29de5f3e23f3d8c59cc599d3196e54e9b58"><code>f891c29</code></a>
chore(release): publish 8.60.0</li>
<li>See full diff in <a
href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.60.0/packages/typescript-eslint">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Wolfgang Beyer <wolfi@chromium.org>
Merge 59 commits from ChromeDevTools/chrome-devtools-mcp main.

Co-authored-by: Cursor <cursoragent@cursor.com>
- Add missing `hidden` fields in chrome-devtools-mcp-cli-options.ts
- Fix import path: metricUtils.js -> transformation.js
- Fix import path: toolMetricsUtils.js -> metricsRegistry.js

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.