chore: sync with upstream chrome-devtools-mcp v1.1.1#22
Open
psrednicki wants to merge 61 commits into
Open
Conversation
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 "Chrome" 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 /> [](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 /> [](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 /> [](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 /> [](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 /> [](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>
Tested with my local VS Code.
## 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>
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 /> [](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 /> [](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.
Tentatively addresses #2115
…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 /> [](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.
Closes #2121
🤖 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 /> [](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>
This was referenced May 28, 2026
- 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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
main(up to v1.1.1) into our fork0.2.2), and Opera-specific featuresKey upstream changes included
fix:exit on stdin EOF and SIGTERM/SIGINT/SIGHUP, closing the browser cleanlyfix:viewport emulation, PID file handling, CPU throttling, realpath for MCP rootsfeat:extraHttpHeaders emulation, cursor plugin.json, filePath in evaluate_scriptrefactor:waitForResult helpers, removed redundant validatePath callsConflict resolution strategy
opera-devtools-mcp, version0.2.2)browser.ts: kept Opera'sgetCurrentBrowser()+ upstream's improvedcloseBrowser()McpResponse.ts: merged upstream's#attachedWaitForResult/#deviceScopewith Opera's#logCallbackWaitForHelper.ts: adopted upstream's cleaner#dialogOpenedinstance field approachtool_call_metrics.json/cli-options.ts: included both upstream heap snapshot tools and Opera toolspackage.jsonscripts: dropped--experimental-strip-types(upstream improvement), kept Opera script namingSupersedes #20 and #21.
Test plan
npm run buildcompiles without errorsnpm testpassesopera_chat,opera_do, etc.) with Opera NeonMade with Cursor