natorion-patch-cc-instructions
811 次代码提交
| 作者 | SHA1 | 备注 | 提交日期 | |
|---|---|---|---|---|
|
|
3c24f8e97c |
docs: Change Claude Code installation instructions to omit custom marketplace
Updated installation instructions for Chrome DevTools MCP, clarifying CLI and plugin methods. |
||
|
|
510ec0f48b |
fix(input): stop native select option clicks from timing out (#1960)
## Summary Teach the `click` tool to handle accessibility snapshot targets that point at an `option` inside a native, single-select `<select>` element. When the target is a native select option, `click` now selects that option through the owning `<select>` element instead of asking Puppeteer to click an option node that has no clickable box while the dropdown is collapsed. Other option-like targets, including custom ARIA options, continue through the normal click path. ## Motivation Fixes #1941. The text snapshot can expose native `<option>` nodes with stable uids. This makes it natural for an agent to call `click` on an option uid after seeing the desired option in the snapshot. However, a collapsed native `<select>` does not expose its child `<option>` nodes as directly clickable page boxes. In that state, the option can exist in the DOM and accessibility tree while still having no clickable geometry. Puppeteer therefore waits for the option to become interactive and eventually times out. The existing `fill` tool already handles selecting native `<select>` options. This change keeps that guidance explicit in the `click` tool description, while also making `click(option_uid)` robust for the native select case that appears in the snapshot. ## Changes - Added a constrained native select fallback in `click`: - Only runs for single-click requests. - Only runs when the snapshot node role is `option`. - Only handles real `HTMLOptionElement` nodes owned by a native `<select>`. - Does not handle disabled selects, disabled options, disabled optgroups, or multi-selects. - Falls back to the existing locator click behavior for all other targets. - Dispatches `input` and `change` events when selecting a different native option. - Updated the `click` tool description to steer agents toward `fill` for native `<select>` option selection. - Regenerated CLI/tool reference docs with `npm run gen`. - Added regression coverage for: - Clicking an option uid in a collapsed native `<select>`. - Clicking an option uid inside a native `<optgroup>`. - Clicking a custom ARIA `role="option"` element through the normal click path. ## Test Plan Passed: ```bash npm run test -- tests/tools/input.test.ts npm run check-format ``` Also attempted: ```bash npm run test ``` The full suite hit unrelated local failures outside this change area: - `tests/tools/network.test.ts`: snapshot ordering difference for redirected requests. - `tests/tools/screenshot.test.ts`: `Page.captureScreenshot` failed for the large full-page screenshot case with `Page is too large`. The changed input tool tests pass locally. ## Risk Low. The fallback is intentionally narrow: - It is gated by the accessibility role being `option`. - It verifies the DOM node is an actual `HTMLOptionElement`. - It only applies to native, non-disabled, single-select `<select>` controls. - It does not reinterpret custom combobox/listbox implementations. - It preserves the existing locator click path for non-native option targets. The main behavior change is that `click(option_uid)` can now succeed for native collapsed dropdowns that previously timed out. ## Related Issue Closes #1941. ## Maintainer Context This targets a small but high-impact mismatch between the snapshot representation and browser interaction semantics. The snapshot correctly exposes native options because they exist in the accessibility tree. The click implementation previously treated that uid like any other clickable element, but collapsed native options do not have normal clickable layout boxes. This PR makes the native select case explicit without expanding `click` into a general custom dropdown heuristic. The tool description still recommends `fill` for native `<select>` selection so agents are guided toward the more direct tool. The code fallback exists for the common case where an agent already selected an option uid from the snapshot. |
||
|
|
2dcd641ff5 |
chore(main): release chrome-devtools-mcp 0.24.0 (#1944)
publish-on-tag / publish-to-npm (push) Has been cancelled
publish-on-tag / publish-to-mcp-registry (push) Has been cancelled
🤖 I have created a release *beep* *boop* --- ## [0.24.0](https://github.com/ChromeDevTools/chrome-devtools-mcp/compare/chrome-devtools-mcp-v0.23.0...chrome-devtools-mcp-v0.24.0) (2026-05-02) ### 🎉 Features * agentic browsing in lighthouse ([#1931](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/1931)) ([chrome-devtools-mcp-v0.24.0 |
||
|
|
5fa2750456 |
feat: agentic browsing in lighthouse (#1931)
pending https://github.com/GoogleChrome/lighthouse/pull/16980 --------- Co-authored-by: Lusa Zhan <lusazhan@chromium.org> Co-authored-by: Alex Rudenko <alexrudenko@chromium.org> |
||
|
|
a90378adf3 |
fix: always allow tmpdir access with client roots (#1984)
This PR changes the implementation to allow access to tmpdir even if the client is not configured it explicitly because several tools default to the tmpdir for outputs. Many clients like gemini-cli/claude do not configure the tmp dir as a root by default. |
||
|
|
b2b3e99d67 |
feat(cli): generate commands for conditional tools (#1962)
This PR adds all tools in the CLI interface. When a tool is not enabled the server responds with an error guiding the user on how to enable the category or the experiment. Closes: https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/1933 |
||
|
|
7ee5e867ef |
chore(deps): bump the all group with 2 updates (#1959)
Bumps the all group with 2 updates: [actions/setup-node](https://github.com/actions/setup-node) and [googleapis/release-please-action](https://github.com/googleapis/release-please-action). Updates `actions/setup-node` from 6.3.0 to 6.4.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/setup-node/releases">actions/setup-node's releases</a>.</em></p> <blockquote> <h2>v6.4.0</h2> <h2>What's Changed</h2> <h3>Dependency updates:</h3> <ul> <li>Upgrade <a href="https://github.com/actions"><code>@actions</code></a> dependencies by <a href="https://github.com/Copilot"><code>@Copilot</code></a> in <a href="https://redirect.github.com/actions/setup-node/pull/1525">actions/setup-node#1525</a></li> <li>Update Node.js versions in versions.yml and bump package to v6.4.0 by <a href="https://github.com/priya-kinthali"><code>@priya-kinthali</code></a> in <a href="https://redirect.github.com/actions/setup-node/pull/1533">actions/setup-node#1533</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/Copilot"><code>@Copilot</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-node/pull/1525">actions/setup-node#1525</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/setup-node/compare/v6...v6.4.0">https://github.com/actions/setup-node/compare/v6...v6.4.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/setup-node/commit/48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e"><code>48b55a0</code></a> Update Node.js versions in versions.yml and bump package to v6.4.0 (<a href="https://redirect.github.com/actions/setup-node/issues/1533">#1533</a>)</li> <li><a href="https://github.com/actions/setup-node/commit/ab72c7e7eba0eaa11f8cab0f5679243900c2cac9"><code>ab72c7e</code></a> Upgrade <a href="https://github.com/actions"><code>@actions</code></a> dependencies (<a href="https://redirect.github.com/actions/setup-node/issues/1525">#1525</a>)</li> <li>See full diff in <a href="https://github.com/actions/setup-node/compare/53b83947a5a98c8d113130e565377fae1a50d02f...48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e">compare view</a></li> </ul> </details> <br /> Updates `googleapis/release-please-action` from 4 to 5 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/googleapis/release-please-action/releases">googleapis/release-please-action's releases</a>.</em></p> <blockquote> <h2>v5.0.0</h2> <h2><a href="https://github.com/googleapis/release-please-action/compare/v4.4.1...v5.0.0">5.0.0</a> (2026-04-22)</h2> <h3>⚠ BREAKING CHANGES</h3> <ul> <li>upgrade to node24 (<a href="https://redirect.github.com/googleapis/release-please-action/issues/1188">#1188</a>)</li> </ul> <h3>Features</h3> <ul> <li>upgrade to node24 (<a href="https://redirect.github.com/googleapis/release-please-action/issues/1188">#1188</a>) (<a href="https://github.com/googleapis/release-please-action/commit/46dfc01594fc6ec99626bc73e479c52bdf554f88">46dfc01</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li>bump release-please from 17.3.0 to 17.6.0 (<a href="https://redirect.github.com/googleapis/release-please-action/issues/1199">#1199</a>) (<a href="https://github.com/googleapis/release-please-action/commit/f533c26b74c2778db7edc90c96b63a7d08035765">f533c26</a>)</li> </ul> <h2>v4.4.1</h2> <h2><a href="https://github.com/googleapis/release-please-action/compare/v4.4.0...v4.4.1">4.4.1</a> (2026-02-20)</h2> <h3>Bug Fixes</h3> <ul> <li>bump release-please from 17.1.3 to 17.3.0 (<a href="https://redirect.github.com/googleapis/release-please-action/issues/1183">#1183</a>) (<a href="https://github.com/googleapis/release-please-action/commit/ef9c2745dbfb629d38ebfafa3347a81ab2d51409">ef9c274</a>)</li> </ul> <h2>v4.4.0</h2> <h2><a href="https://github.com/googleapis/release-please-action/compare/v4.3.0...v4.4.0">4.4.0</a> (2025-10-09)</h2> <h3>Features</h3> <ul> <li>add ability to select versioning-strategy and release-as (<a href="https://redirect.github.com/googleapis/release-please-action/issues/1121">#1121</a>) (<a href="https://github.com/googleapis/release-please-action/commit/ee0f5bae453367755be0c4340193531b3f538374">ee0f5ba</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><code>changelog-host</code> parameter ignored when using manifest configuration (<a href="https://redirect.github.com/googleapis/release-please-action/issues/1151">#1151</a>) (<a href="https://github.com/googleapis/release-please-action/commit/535c4130c1030110bdacd1b3076f98c046c3a227">535c413</a>)</li> <li>bump mocha from 11.7.1 to 11.7.2 in the npm_and_yarn group across 1 directory (<a href="https://redirect.github.com/googleapis/release-please-action/issues/1149">#1149</a>) (<a href="https://github.com/googleapis/release-please-action/commit/3612a99d75bd7a010bb03d6e2ee3e2392b7392fb">3612a99</a>)</li> <li>bump release-please from 17.1.2 to 17.1.3 (<a href="https://redirect.github.com/googleapis/release-please-action/issues/1158">#1158</a>) (<a href="https://github.com/googleapis/release-please-action/commit/66fbfe9439cb7a3660ecdc00d42573ef0bd00764">66fbfe9</a>)</li> </ul> <h2>v4.3.0</h2> <h2><a href="https://github.com/googleapis/release-please-action/compare/v4.2.0...v4.3.0">4.3.0</a> (2025-08-20)</h2> <h3>Features</h3> <ul> <li><strong>deps:</strong> update release-please to 17.1.2 (<a href="https://github.com/googleapis/release-please-action/commit/f07192c046b10acd083f4665a3d8b6350526f9df">f07192c</a>)</li> </ul> <h2>v4.2.0</h2> <h2><a href="https://github.com/googleapis/release-please-action/compare/v4.1.5...v4.2.0">4.2.0</a> (2025-03-07)</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/googleapis/release-please-action/blob/main/CHANGELOG.md">googleapis/release-please-action's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/googleapis/release-please-action/compare/v4.1.0...v4.1.1">4.1.1</a> (2024-05-14)</h2> <h3>Bug Fixes</h3> <ul> <li>bump release-please from 16.10.0 to 16.10.2 (<a href="https://redirect.github.com/googleapis/release-please-action/issues/969">#969</a>) (<a href="https://github.com/googleapis/release-please-action/commit/aa764e0b5db70af7b607fa690b4d1799ceb802d6">aa764e0</a>)</li> <li>bump the npm_and_yarn group with 1 update (<a href="https://redirect.github.com/googleapis/release-please-action/issues/967">#967</a>) (<a href="https://github.com/googleapis/release-please-action/commit/ce529d4a4014c4760ec75d3ba6482e3b80d58862">ce529d4</a>)</li> </ul> <h2><a href="https://github.com/googleapis/release-please-action/compare/v4.0.3...v4.1.0">4.1.0</a> (2024-03-11)</h2> <h3>Features</h3> <ul> <li>add <code>changelog-host</code> input to <code>action.yml</code> (<a href="https://redirect.github.com/googleapis/release-please-action/issues/948">#948</a>) (<a href="https://github.com/googleapis/release-please-action/commit/863b06fd1cd7f36c1d74d697ddebe3cf5be4c6b0">863b06f</a>)</li> </ul> <h2><a href="https://github.com/googleapis/release-please-action/compare/v4.0.2...v4.0.3">4.0.3</a> (2024-03-11)</h2> <h3>Bug Fixes</h3> <ul> <li>bump release-please from 16.5.0 to 16.10.0 (<a href="https://redirect.github.com/googleapis/release-please-action/issues/953">#953</a>) (<a href="https://github.com/googleapis/release-please-action/commit/d7e88e0fd9e1a56d1075f610183d571f8347ff9b">d7e88e0</a>)</li> </ul> <h2><a href="https://github.com/googleapis/release-please-action/compare/v4.0.1...v4.0.2">4.0.2</a> (2023-12-18)</h2> <h3>Bug Fixes</h3> <ul> <li>bump release-please from 16.4.0 to 16.5.0 (<a href="https://redirect.github.com/googleapis/release-please-action/issues/905">#905</a>) (<a href="https://github.com/googleapis/release-please-action/commit/df719633a752e335dfde3e62e037315a25ecf6fc">df71963</a>)</li> <li>log release-please version (<a href="https://redirect.github.com/googleapis/release-please-action/issues/910">#910</a>) (<a href="https://github.com/googleapis/release-please-action/commit/2a496d1db5f8860ae46f6066f5dcb73490a99d02">2a496d1</a>), closes <a href="https://redirect.github.com/googleapis/release-please-action/issues/325">#325</a></li> </ul> <h2><a href="https://github.com/googleapis/release-please-action/compare/v4.0.0...v4.0.1">4.0.1</a> (2023-12-07)</h2> <h3>Bug Fixes</h3> <ul> <li>bump release-please from 16.3.1 to 16.4.0 (<a href="https://redirect.github.com/googleapis/release-please-action/issues/897">#897</a>) (<a href="https://github.com/googleapis/release-please-action/commit/2463dad9b20163a40708db720b9fde34c2a2ab0e">2463dad</a>)</li> </ul> <h2><a href="https://github.com/googleapis/release-please-action/compare/v3.7.13...v4.0.0">4.0.0</a> (2023-12-01)</h2> <h3>⚠ BREAKING CHANGES</h3> <ul> <li>remove most configuration options in favor of manifest configuration to configure the release-please-action</li> <li>rewrite in typescript</li> <li>remove command option in favor of setting <code>release-type</code> and <code>skip-github-release</code>/<code>skip-github-pull-request</code></li> <li>run on node20</li> <li><strong>deps:</strong> upgrade release-please to v16</li> <li>v4 release</li> </ul> <h3>Features</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/googleapis/release-please-action/commit/45996ed1f6d02564a971a2fa1b5860e934307cf7"><code>45996ed</code></a> chore(main): release 5.0.0 (<a href="https://redirect.github.com/googleapis/release-please-action/issues/1200">#1200</a>)</li> <li><a href="https://github.com/googleapis/release-please-action/commit/a8121b99c9779b09ad890de46417b7cad74eb3a2"><code>a8121b9</code></a> chore: build dist (<a href="https://redirect.github.com/googleapis/release-please-action/issues/1201">#1201</a>)</li> <li><a href="https://github.com/googleapis/release-please-action/commit/f533c26b74c2778db7edc90c96b63a7d08035765"><code>f533c26</code></a> fix: bump release-please from 17.3.0 to 17.6.0 (<a href="https://redirect.github.com/googleapis/release-please-action/issues/1199">#1199</a>)</li> <li><a href="https://github.com/googleapis/release-please-action/commit/46dfc01594fc6ec99626bc73e479c52bdf554f88"><code>46dfc01</code></a> feat!: upgrade to node24 (<a href="https://redirect.github.com/googleapis/release-please-action/issues/1188">#1188</a>)</li> <li>See full diff in <a href="https://github.com/googleapis/release-please-action/compare/v4...v5">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> Co-authored-by: Wolfgang Beyer <wolfi@chromium.org> |
||
|
|
b328f6b997 |
chore(deps-dev): bump the dev-dependencies group across 1 directory with 3 updates (#1958)
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.58.2 to 8.59.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/typescript-eslint/typescript-eslint/releases"><code>@typescript-eslint/eslint-plugin</code>'s releases</a>.</em></p> <blockquote> <h2>v8.59.1</h2> <h2>8.59.1 (2026-04-27)</h2> <h3>🩹 Fixes</h3> <ul> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] fix crash "TypeError: checker.getTypeArguments is not a function" (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12246">#12246</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] preserve index signatures in undefined unions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12257">#12257</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] preserve phantom type arguments in generic inference (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12269">#12269</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] avoid false positive in logical assignment assertions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12278">#12278</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-arguments] handle instantiation expressions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12220">#12220</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-condition] treat void as nullish in no-unnecessary-condition (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12241">#12241</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>anasm266 <a href="https://github.com/anasm266"><code>@anasm266</code></a></li> <li>Anshika Jain <a href="https://github.com/Anshikakalpana"><code>@Anshikakalpana</code></a></li> <li>Ulrich Stark</li> <li>yugo innami <a href="https://github.com/nami8824"><code>@nami8824</code></a></li> </ul> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.1">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> <h2>v8.59.0</h2> <h2>8.59.0 (2026-04-20)</h2> <h3>🚀 Features</h3> <ul> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] report more cases based on assignability (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11789">#11789</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>Ulrich Stark</li> </ul> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.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"><code>@typescript-eslint/eslint-plugin</code>'s changelog</a>.</em></p> <blockquote> <h2>8.59.1 (2026-04-27)</h2> <h3>🩹 Fixes</h3> <ul> <li><strong>eslint-plugin:</strong> [no-unnecessary-condition] treat void as nullish in no-unnecessary-condition (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12241">#12241</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-arguments] handle instantiation expressions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12220">#12220</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] avoid false positive in logical assignment assertions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12278">#12278</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] preserve phantom type arguments in generic inference (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12269">#12269</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] preserve index signatures in undefined unions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12257">#12257</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] fix crash "TypeError: checker.getTypeArguments is not a function" (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12246">#12246</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>anasm266 <a href="https://github.com/anasm266"><code>@anasm266</code></a></li> <li>Anshika Jain <a href="https://github.com/Anshikakalpana"><code>@Anshikakalpana</code></a></li> <li>Ulrich Stark</li> <li>yugo innami <a href="https://github.com/nami8824"><code>@nami8824</code></a></li> </ul> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.1">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> <h2>8.59.0 (2026-04-20)</h2> <h3>🚀 Features</h3> <ul> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] report more cases based on assignability (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11789">#11789</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>Ulrich Stark</li> </ul> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.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/52457932e5507b5ca01e720a541f3f8d01e09b9d"><code>5245793</code></a> chore(release): publish 8.59.1</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/3cef12471659c42c9d4b179f4113a080b1fa2d66"><code>3cef124</code></a> chore(eslint-plugin): switch auto-generated test cases to hand-written in dot...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/27c507b6e532abcd1efa51055f045b00f22055c3"><code>27c507b</code></a> test: make sort-type-constituents tests fully static (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/12262">#12262</a>)</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/a03b31d422be35d8ddc979f48f9317e3f33dd1ce"><code>a03b31d</code></a> chore(eslint-plugin): switch auto-generated test cases to hand-written in no-...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/a7099a789535b5c4cae0d6435ae9441e40da12b6"><code>a7099a7</code></a> chore(eslint-plugin): switch auto-generated test cases to hand-written in no-...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/bfbd4a5433deaa82c2e2a8eb746ab5cd97eaecf8"><code>bfbd4a5</code></a> chore(eslint-plugin): switch auto-generated test cases to hand-written in no-...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/b49d4b15cdd2e6fefcdaf7a50641b46c651231f2"><code>b49d4b1</code></a> chore(eslint-plugin): switch auto-generated test cases to hand-written in no-...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/3097e727474ef15a776071c07fb0752ab0e9d56d"><code>3097e72</code></a> chore(eslint-plugin): switch auto-generated test cases to hand-written in nam...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/676191bbd7d0601492c536c88b24ca7cd3fe7d78"><code>676191b</code></a> chore(eslint-plugin): switch auto-generated test cases to hand-written in mem...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/e9dce8bdc6a7460d10654b3ec834982f96b5ea8a"><code>e9dce8b</code></a> fix(eslint-plugin): [no-unnecessary-condition] treat void as nullish in no-un...</li> <li>Additional commits viewable in <a href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.1/packages/eslint-plugin">compare view</a></li> </ul> </details> <br /> Updates `@typescript-eslint/parser` from 8.58.2 to 8.59.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/typescript-eslint/typescript-eslint/releases"><code>@typescript-eslint/parser</code>'s releases</a>.</em></p> <blockquote> <h2>v8.59.1</h2> <h2>8.59.1 (2026-04-27)</h2> <h3>🩹 Fixes</h3> <ul> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] fix crash "TypeError: checker.getTypeArguments is not a function" (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12246">#12246</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] preserve index signatures in undefined unions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12257">#12257</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] preserve phantom type arguments in generic inference (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12269">#12269</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] avoid false positive in logical assignment assertions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12278">#12278</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-arguments] handle instantiation expressions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12220">#12220</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-condition] treat void as nullish in no-unnecessary-condition (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12241">#12241</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>anasm266 <a href="https://github.com/anasm266"><code>@anasm266</code></a></li> <li>Anshika Jain <a href="https://github.com/Anshikakalpana"><code>@Anshikakalpana</code></a></li> <li>Ulrich Stark</li> <li>yugo innami <a href="https://github.com/nami8824"><code>@nami8824</code></a></li> </ul> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.1">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> <h2>v8.59.0</h2> <h2>8.59.0 (2026-04-20)</h2> <h3>🚀 Features</h3> <ul> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] report more cases based on assignability (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11789">#11789</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>Ulrich Stark</li> </ul> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.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"><code>@typescript-eslint/parser</code>'s changelog</a>.</em></p> <blockquote> <h2>8.59.1 (2026-04-27)</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.1">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> <h2>8.59.0 (2026-04-20)</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.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/52457932e5507b5ca01e720a541f3f8d01e09b9d"><code>5245793</code></a> chore(release): publish 8.59.1</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/ea9ae4f8817873480e3501145059f63e39e8d8a1"><code>ea9ae4f</code></a> chore(release): publish 8.59.0</li> <li>See full diff in <a href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.1/packages/parser">compare view</a></li> </ul> </details> <br /> Updates `typescript-eslint` from 8.58.2 to 8.59.1 <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.1</h2> <h2>8.59.1 (2026-04-27)</h2> <h3>🩹 Fixes</h3> <ul> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] fix crash "TypeError: checker.getTypeArguments is not a function" (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12246">#12246</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] preserve index signatures in undefined unions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12257">#12257</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] preserve phantom type arguments in generic inference (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12269">#12269</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] avoid false positive in logical assignment assertions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12278">#12278</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-arguments] handle instantiation expressions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12220">#12220</a>)</li> <li><strong>eslint-plugin:</strong> [no-unnecessary-condition] treat void as nullish in no-unnecessary-condition (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12241">#12241</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>anasm266 <a href="https://github.com/anasm266"><code>@anasm266</code></a></li> <li>Anshika Jain <a href="https://github.com/Anshikakalpana"><code>@Anshikakalpana</code></a></li> <li>Ulrich Stark</li> <li>yugo innami <a href="https://github.com/nami8824"><code>@nami8824</code></a></li> </ul> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.1">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> <h2>v8.59.0</h2> <h2>8.59.0 (2026-04-20)</h2> <h3>🚀 Features</h3> <ul> <li><strong>eslint-plugin:</strong> [no-unnecessary-type-assertion] report more cases based on assignability (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11789">#11789</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>Ulrich Stark</li> </ul> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.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.59.1 (2026-04-27)</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.59.1">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> <h2>8.59.0 (2026-04-20)</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.59.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/52457932e5507b5ca01e720a541f3f8d01e09b9d"><code>5245793</code></a> chore(release): publish 8.59.1</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/ea9ae4f8817873480e3501145059f63e39e8d8a1"><code>ea9ae4f</code></a> chore(release): publish 8.59.0</li> <li>See full diff in <a href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.1/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> |
||
|
|
6ce254e541 |
fix: add proactive tool rejection when dialog is open (#1978)
Adding proactive rejection of tool execution for tools which currently get blocked due to open dialogs (related to #1069 ) |
||
|
|
38d736a129 | build: fix npm start (#1980) | ||
|
|
f1afe842ae |
test: add tests for checking behavior when dialog is open (#1977)
This is the first part of adding tests for checking tool behavior when a dialog is already open (related to #1069) In future CL, I will be focusing on tools which currently get blocked due to open dialogs. As part of those CLs, proactive rejection of tool execution will be implemented. |
||
|
|
bf3cb58d27 |
fix(telemetry): bucketize string length (#1972)
Only the string length needs to be bucketized. We can log the array size as-is. |
||
|
|
06b331f403 |
fix: handle errors due to open dialogs during tool calls (#1953)
This change is part of the fix for #1069 - Errors during tool calls are now consumed and handled as part of McpResponse format |
||
|
|
66dacb83fd |
chore(memory): sort all by retainer size (#1963)
This is a better measurement as if object self size is X and the retainerSize Y. X will always be smaller then Y, there Y will be the actual size on the Heap. |
||
|
|
8cbdb8d494 |
fix(cli): re-generate cli correctly (#1969)
Regressed in https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/1120 |
||
|
|
21bc5b4476 |
test: add eval targeting fill_form use with select and checkbox elements (#1968)
This eval represents minimal reproduction scenario for #1942. Currently fill_form is used in around 25% of the attempts. It can also be used to reproduce #1941 with about 1:10 chance. --------- Co-authored-by: Piotr Paulski <piotrpaulski@chromium.org> |
||
|
|
6ac30dcb8b |
chore: re-arrange ordering in flag usage metrics. (#1965)
Just re-arranging the order to match what is already defined on the server side. The new ones that haven't been sync'ed yet are listed at the very end. |
||
|
|
cb6b724fdc |
chore: combine the update metrics scripts. (#1964)
This is a cleanup to merge the update metrics script together into one. There is behavior change. |
||
|
|
7b3b4d306e |
chore: make json file for flag usage metrics append only (#1882)
This makes the flag_usage_metrics.json file append only. Parent: #1881 |
||
|
|
def53ddf1d |
feat: support MCP client roots feature (#1945)
This PR implements https://modelcontextprotocol.io/specification/2025-11-25/client/roots If client specifies roots, all reads and writes to the file system originating in tool calls will denied (including tmp files). The client specified empty list of roots, all filesystem access will be restricted. Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/1860 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Piotr Paulski <piotrpaulski@chromium.org> |
||
|
|
c9c1683b67 |
chore(deps-dev): bump chrome-devtools-frontend from 1.0.1613625 to 1.0.1616061 (#1952)
Closes #1908 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Piotr Paulski <piotrpaulski@chromium.org> |
||
|
|
5aa6437e91 |
chore: Refactor adding extra nodes to snapshot (#1951)
Get all info about the TextSnapshot first, and only then modify it. Previously these steps were interleaved. |
||
|
|
80bee1e6cd |
fix: note about missing elements should not show in verbose mode (#1950)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/1947 |
||
|
|
136da6a350 |
build: add dev source maps (#1948)
This allows setting up a debugger script with either enabled debugging port or tools like VS Code or Antigravity. |
||
|
|
dbddb2e4ef |
feat: group identical consecutive console messages in list_console_messages (#1939)
## Summary Group consecutive identical console messages in `list_console_messages`, similar to Chrome DevTools' console grouping behavior. Fixes #904 ## Changes - Introduce `GroupedConsoleFormatter` subclass that extends `ConsoleFormatter` and overrides `toString()` / `toJSON()` for count-aware formatting - Add `ConsoleFormatter.groupConsecutive()` static method that groups consecutive messages with the same type, text, and argument count - Apply grouping **before pagination** so grouped counts are accurate and page sizes reflect the collapsed view - Add unit tests for grouping logic, string formatting, and JSON output ## Key design decisions - **`GroupedConsoleFormatter` subclass**: Keeps the existing formatter interface clean — no new methods added to `ConsoleFormatter`. `ConsoleFormatter` and `GroupedConsoleFormatter` are interchangeable via the same interface. - **Grouping before pagination** (not at format time): This was the feedback on #963 and #1025 — grouping at format time breaks pagination counts. This implementation groups in `McpResponse` before calling `paginate()`. - **No `lastId`**: Since grouped messages are truly identical, only the first message's ID is needed. - **`argCount` matching**: Prevents false grouping of messages with the same text but different argument counts. ## Output example ``` msgid=1 [log] hello world (1 args) [5 times] ``` ## Testing - Unit tests in `tests/formatters/ConsoleFormatterGrouping.test.ts` - Manual verification: identical messages (×5), mixed pattern (A,A,B,A,A → A×2, B×1, A×2) |
||
|
|
9f5dd6229c |
chore(memory): expose way to get the nodes (#1916)
The next step for the memory debugging is to provide the nodes that the aggregates have, from which you can get the retainers of the object. |
||
|
|
1277c19ed5 |
chore(main): release chrome-devtools-mcp 0.23.0 (#1928)
publish-on-tag / publish-to-npm (push) Has been cancelled
publish-on-tag / publish-to-mcp-registry (push) Has been cancelled
🤖 I have created a release *beep* *boop* --- ## [0.23.0](https://github.com/ChromeDevTools/chrome-devtools-mcp/compare/chrome-devtools-mcp-v0.22.0...chrome-devtools-mcp-v0.23.0) (2026-04-22) ### 🎉 Features * add an option to customize ffmpeg path ([#1937](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/1937)) ([chrome-devtools-mcp-v0.23.0 |
||
|
|
e046c23563 |
chore: in-page tool output: stash DOM elements and preprocess for serialization (#1877)
Improvements for handling in-page tool responses. In order to successfully pass an in-page tool response from the page context to the MCP server, the response needs to be serializable. The code walks the response object an performs the following changes: - DOM elements are stashed onto the window object and replaced with an ID. On the MCP server side this ID is used to map back to the corresponding UID in the page snapshot generated from the accessibility tree. - Circular references are replaced with a string. - Class instances (which can be complex or non-serializable) are replaced with a string. - Functions are replaced with a string. If the in-page tool response contains DOM elements which are not part of the page snapshot, a new snapshot is created add the missing elements are added explicitly. |
||
|
|
85b89931ed |
feat: support webm format in screencast (#1934)
Modifies the experimental screencast command to support `.webm` in addition to `.mp4`. Renamed `path` to `filePath` to align with other tools. |
||
|
|
b377454b1b |
feat: add an option to customize ffmpeg path (#1937)
This PR adds experimental flag to customize `experimentalScreencast` that allows specifying a different path to the ffmpeg binary. |
||
|
|
d50255778a |
feat: support experimental allowlist for navigate tool calls (#1935)
This PR adds an experimental allowlist for the page navigate tool call (requires `--experimentalNavigationAllowlist`, off by default). The feature uses a list of URLPatterns to decline navigations that land on disallowed URLs. If that happens, the client can update the allowlist and re-try. The purpose of the this feature is to offer additional guardrails on top of the MCP server. It does not restrict subresources or JS/iframe navigations in any way. The performance impact is minimized by turning off interception as soon as the navigation request is done. |
||
|
|
7bb1ca50ef | chore: move agent rules to AGENTS.md (#1936) | ||
|
|
82b67b07d3 |
refactor: add support for CLI sessionIds in tests (#1919)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/1119 |
||
|
|
a1612be8e0 | test: refactor tests to reduce duplication (#1926) | ||
|
|
42be7c3227 | docs: clarify resource limitations around the number of tabs (#1927) | ||
|
|
b53752d244 |
chore: move resolveCdpElementId (#1923)
This is a refactoring, a follow-up to the introduction of `McpPage.ts`. |
||
|
|
f0da776c63 |
chore(main): release chrome-devtools-mcp 0.22.0 (#1884)
publish-on-tag / publish-to-npm (push) Has been cancelled
publish-on-tag / publish-to-mcp-registry (push) Has been cancelled
🤖 I have created a release *beep* *boop* --- ## [0.22.0](https://github.com/ChromeDevTools/chrome-devtools-mcp/compare/chrome-devtools-mcp-v0.21.0...chrome-devtools-mcp-v0.22.0) (2026-04-21) ### 🎉 Features * add update notification to both binaries ([#1783](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/1783)) ([chrome-devtools-mcp-v0.22.0 |
||
|
|
76ab9fa564 | docs: clarify tools included into CLI (#1925) | ||
|
|
3ff21cf30d |
feat: support Chrome extensions debugging (#1922)
Adds ability to install, uninstall and reload extensions, trigger extension actions and inspect extension pages, service workers and content scripts. Specify `--categoryExtensions` to enable. Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/1173 Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/96 --------- Co-authored-by: Mathias Bynens <mathias@qiwi.be> Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com> Co-authored-by: Alex Rudenko <alexrudenko@chromium.org> |
||
|
|
86ffd58c2f |
test: add test for console log from content script (#1920)
This PR adds a test to prove extension content script can be captured in logs for pages |
||
|
|
57648b7ab0 |
chore(deps): update lh (#1913)
Updated to https://github.com/GoogleChrome/lighthouse/commit/b328482638078735ec3bd74cf31355f1a758eb27 |
||
|
|
9211c6b52d |
chore(memory): expose a tool for getting the inital data. (#1909)
This refactors the code to extract the Id logic from the PageCollector and provide it in the heapsnapshot. We need to use an UID as we need the internal ClassKey to query the heapsnapshot, but that is a strange string (usually looking like `,ClassName`) which may get the LLM confused as we use comma separated output. |
||
|
|
ec895f195a |
refactor: use puppeteer Extension API (#1911)
This PR refactor the extension usages using the new Puppeteer API. Requires puppeteer release before merging |
||
|
|
562c308550 |
chore(deps-dev): bump the dev-dependencies group with 2 updates (#1907)
Bumps the dev-dependencies group with 2 updates: [rollup](https://github.com/rollup/rollup) and [typescript](https://github.com/microsoft/TypeScript). Updates `rollup` from 4.60.1 to 4.60.2 <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.2</h2> <h2>4.60.2</h2> <p><em>2026-04-18</em></p> <h3>Bug Fixes</h3> <ul> <li>Resolve a variable rendering bug when generating different formats from the same build (<a href="https://redirect.github.com/rollup/rollup/issues/6350">#6350</a>)</li> </ul> <h3>Pull Requests</h3> <ul> <li><a href="https://redirect.github.com/rollup/rollup/pull/6327">#6327</a>: docs: fix various typos in source and documentation (<a href="https://github.com/Abhi3975"><code>@Abhi3975</code></a>, <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6331">#6331</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/6332">#6332</a>: chore(deps): update codecov/codecov-action action to v6 (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6333">#6333</a>: chore(deps): update dependency eslint-plugin-unicorn to v64 (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6334">#6334</a>: fix(deps): update rust crate swc_compiler_base to v51 (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6335">#6335</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/6346">#6346</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/6347">#6347</a>: chore(deps): update dependency lru-cache to v11 (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6348">#6348</a>: fix(deps): update swc monorepo (major) (<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/6349">#6349</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/6350">#6350</a>: fix: reset variable render names between outputs in the same generate (<a href="https://github.com/barry3406"><code>@barry3406</code></a>, <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6351">#6351</a>: chore(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/6352">#6352</a>: chore(deps): update cross-platform-actions/action action to v1 (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6353">#6353</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/6354">#6354</a>: chore(deps): lock file maintenance (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6355">#6355</a>: chore(deps): lock file maintenance (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6356">#6356</a>: chore(deps): lock file maintenance (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6358">#6358</a>: chore: remove cross-env from devDeps (<a href="https://github.com/K-tecchan"><code>@K-tecchan</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.2</h2> <p><em>2026-04-18</em></p> <h3>Bug Fixes</h3> <ul> <li>Resolve a variable rendering bug when generating different formats from the same build (<a href="https://redirect.github.com/rollup/rollup/issues/6350">#6350</a>)</li> </ul> <h3>Pull Requests</h3> <ul> <li><a href="https://redirect.github.com/rollup/rollup/pull/6327">#6327</a>: docs: fix various typos in source and documentation (<a href="https://github.com/Abhi3975"><code>@Abhi3975</code></a>, <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6331">#6331</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/6332">#6332</a>: chore(deps): update codecov/codecov-action action to v6 (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6333">#6333</a>: chore(deps): update dependency eslint-plugin-unicorn to v64 (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6334">#6334</a>: fix(deps): update rust crate swc_compiler_base to v51 (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6335">#6335</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/6346">#6346</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/6347">#6347</a>: chore(deps): update dependency lru-cache to v11 (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6348">#6348</a>: fix(deps): update swc monorepo (major) (<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/6349">#6349</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/6350">#6350</a>: fix: reset variable render names between outputs in the same generate (<a href="https://github.com/barry3406"><code>@barry3406</code></a>, <a href="https://github.com/lukastaegert"><code>@lukastaegert</code></a>)</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6351">#6351</a>: chore(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/6352">#6352</a>: chore(deps): update cross-platform-actions/action action to v1 (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6353">#6353</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/6354">#6354</a>: chore(deps): lock file maintenance (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6355">#6355</a>: chore(deps): lock file maintenance (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6356">#6356</a>: chore(deps): lock file maintenance (<a href="https://github.com/renovate"><code>@renovate</code></a>[bot])</li> <li><a href="https://redirect.github.com/rollup/rollup/pull/6358">#6358</a>: chore: remove cross-env from devDeps (<a href="https://github.com/K-tecchan"><code>@K-tecchan</code></a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/rollup/rollup/commit/a6be82b8abd747458afdc7484319f7b5deb92535"><code>a6be82b</code></a> 4.60.2</li> <li><a href="https://github.com/rollup/rollup/commit/5e6fb9f8e847c229dfcafa46d4b6b5c50db3d8a2"><code>5e6fb9f</code></a> fix: reset variable render names between outputs in the same generate (<a href="https://redirect.github.com/rollup/rollup/issues/6350">#6350</a>)</li> <li><a href="https://github.com/rollup/rollup/commit/7542834f78d538e70a50c584f7e674143c33fc71"><code>7542834</code></a> chore: remove cross-env from devDeps (<a href="https://redirect.github.com/rollup/rollup/issues/6358">#6358</a>)</li> <li><a href="https://github.com/rollup/rollup/commit/1fa79d0150e86c224c8c77ee37e97aab420689bd"><code>1fa79d0</code></a> chore(deps): update cross-platform-actions/action action to v1 (<a href="https://redirect.github.com/rollup/rollup/issues/6352">#6352</a>)</li> <li><a href="https://github.com/rollup/rollup/commit/819332e907f938a43dd9d34a9a8d060a17069efe"><code>819332e</code></a> chore(deps): update dependency lru-cache to v11 (<a href="https://redirect.github.com/rollup/rollup/issues/6353">#6353</a>)</li> <li><a href="https://github.com/rollup/rollup/commit/fd464a9348a9a99e5fcef53a778be0d54786f4a0"><code>fd464a9</code></a> chore(deps): lock file maintenance (<a href="https://redirect.github.com/rollup/rollup/issues/6356">#6356</a>)</li> <li><a href="https://github.com/rollup/rollup/commit/e6d2ff9e70ea83ed254fc9a78f896aa11235dc17"><code>e6d2ff9</code></a> chore(deps): lock file maintenance (<a href="https://redirect.github.com/rollup/rollup/issues/6355">#6355</a>)</li> <li><a href="https://github.com/rollup/rollup/commit/32e8517797061dedbf9529905814aa58f0ad578f"><code>32e8517</code></a> chore(deps): update minor/patch updates (<a href="https://redirect.github.com/rollup/rollup/issues/6351">#6351</a>)</li> <li><a href="https://github.com/rollup/rollup/commit/1d5bcb4996e6135130abbfc0c068fc55e9f6782e"><code>1d5bcb4</code></a> chore(deps): lock file maintenance (<a href="https://redirect.github.com/rollup/rollup/issues/6354">#6354</a>)</li> <li><a href="https://github.com/rollup/rollup/commit/f58d278859d247c9a9ee10cb12871ee181f2e839"><code>f58d278</code></a> fix(deps): update swc monorepo (major) (<a href="https://redirect.github.com/rollup/rollup/issues/6348">#6348</a>)</li> <li>Additional commits viewable in <a href="https://github.com/rollup/rollup/compare/v4.60.1...v4.60.2">compare view</a></li> </ul> </details> <br /> Updates `typescript` from 6.0.2 to 6.0.3 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/microsoft/TypeScript/releases">typescript's releases</a>.</em></p> <blockquote> <h2>TypeScript 6.0.3</h2> <p>For release notes, check out the <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/">release announcement blog post</a>.</p> <ul> <li><a href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&q=milestone%3A%22TypeScript+6.0.0%22">fixed issues query for TypeScript 6.0.0 (Beta)</a>.</li> <li><a href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&q=milestone%3A%22TypeScript+6.0.1%22">fixed issues query for TypeScript 6.0.1 (RC)</a>.</li> <li><a href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&q=milestone%3A%22TypeScript+6.0.2%22">fixed issues query for TypeScript 6.0.2 (Stable)</a>.</li> <li><a href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&q=milestone%3A%22TypeScript+6.0.3%22">fixed issues query for TypeScript 6.0.3 (Stable)</a>.</li> </ul> <p>Downloads are available on:</p> <ul> <li><a href="https://www.npmjs.com/package/typescript">npm</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/microsoft/TypeScript/commit/050880ce59e30b356b686bd3144efe24f875ebc8"><code>050880c</code></a> Bump version to 6.0.3 and LKG</li> <li><a href="https://github.com/microsoft/TypeScript/commit/eeae9dd0f17aa494658e4ec079dc002e02dd625e"><code>eeae9dd</code></a> 🤖 Pick PR <a href="https://redirect.github.com/microsoft/TypeScript/issues/63401">#63401</a> (Also check package name validity in...) into release-6.0 (#...</li> <li><a href="https://github.com/microsoft/TypeScript/commit/ad1c695fada682764bb510dd680e8f175ae54094"><code>ad1c695</code></a> 🤖 Pick PR <a href="https://redirect.github.com/microsoft/TypeScript/issues/63368">#63368</a> (Harden ATA package name filtering) into release-6.0 (<a href="https://redirect.github.com/microsoft/TypeScript/issues/63372">#63372</a>)</li> <li><a href="https://github.com/microsoft/TypeScript/commit/0725fb4664a1d5ec94040b6d94db77dc1cc354e4"><code>0725fb4</code></a> 🤖 Pick PR <a href="https://redirect.github.com/microsoft/TypeScript/issues/63310">#63310</a> (Mark class property initializers as...) into release-6.0 (#...</li> <li>See full diff in <a href="https://github.com/microsoft/TypeScript/compare/v6.0.2...v6.0.3">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> |
||
|
|
3a24d71f2c |
test: save WebP responses with the right extension (#1901)
## Summary - fix the WebP MIME type match in daemon response handling - save responses with a suffix instead of falling back to - add a regression test for WebP image handling ## Testing - npm run build - node --test --test-name-pattern="parsing" build/tests/daemon/client.test.js Fixes #1898 |
||
|
|
e3a5f6bb69 |
fix(cli): correct WebP MIME type check in handleResponse ('webp' → 'image/webp') (#1899)
## Summary Fixes a bug in `src/daemon/client.ts` where the MIME type case for WebP images was `'webp'` instead of the correct `'image/webp'`. ## Problem In `handleResponse`, the switch statement for determining file extension used the incorrect string `'webp'` as the MIME type. Since browsers and servers send `image/webp` as the MIME type, the case never matched, and all WebP images were saved with a `.png` extension instead of `.webp`. ```ts // Before (buggy) case 'webp': extension = '.webp'; break; // After (fixed) case 'image/webp': extension = '.webp'; break; ``` ## Testing WebP screenshots/images returned by the tool will now correctly receive the `.webp` extension. Closes #1898 Signed-off-by: cocoon <54054995+kuishou68@users.noreply.github.com> Signed-off-by: cocoon <54054995+kuishou68@users.noreply.github.com> |
||
|
|
0f29acf7cc | chore: fix viewport eval (#1888) | ||
|
|
da33cb5b95 |
feat: auto handle dialogs during script evaluation (#1839)
Provide a argument to LLM to handle dialogs that come up during code execution. --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> |
||
|
|
0ed086ec19 |
chore: remove code around Audits setup (#1893)
This was left out, but is handled by Puppeteer. |
||
|
|
0a6aaa52eb |
chore: generate a json file for flag usage metrics (#1881)
This is the second most highly touched metric areas - so let's automate this portion first. The approach is similar to what we have for tool call args. The append-only logic will be added in the follow-up PR: #1882 |