提交

提交图

441 次代码提交

作者 SHA1 备注 提交日期
Alex Rudenko 5c7a3184e2 chore: refactor names for console formatters 2026-01-21 11:55:10 +01:00
Alex Rudenko feee900a4c chore: create a console formatter class (#802)
This cleans up the McpResponse and helps with returning the structured
content.
2026-01-21 10:04:20 +00:00
zyzyzyryxy 6854d474c0 chore: fix bad html closing tag in README.md (#801)
Update ending tag of <a> to match.

Co-authored-by: Piotr Paulski <piotrpaulski@chromium.org>
2026-01-20 18:14:03 +00:00
Alex Rudenko a8169676f9 feat: support device viewport and user agent emulation (#798)
This PR adds two emulation attributes `viewport` and `userAgent` that
allow emulating a mobile or a different desktop device.

Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/272
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/619
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/410
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/280
(the recommended way is to emulate via the MCP server instead of a
parallel DevTools session)
2026-01-20 14:07:57 +00:00
Alex Rudenko aa9a176956 fix: improve performance tool description (#800)
Drive-by: refactor and improve eval scripts.
2026-01-20 11:38:51 +00:00
Simon Zünd a3a00210a3 feat: include stack trace in 'get_console_message' tool (#740)
This is the stack trace of the console message itself. If the argument
is an Error object or an "Error.stack" like string we don't do anything
special (yet).

The stack trace is source mapped if source maps are available.

The function matches the target ID of the console message to the
`SDK.Target` of DevTools. The only oddity is that DevTools works in a
lazy manor: It creates stack traces upfront and as source maps come in,
stack traces get updated. This does not work for the MCP server.
Instead, we wait for script parsed events and source maps to attach
before creating the stack trace. Since this could take potentially a
while, we guard it with a time out.
2026-01-20 09:58:29 +00:00
Alex Rudenko c29d097b92 chore: extract issue formatter in preparation to structured content (#794)
This makes it easier to add JSON-format as the output for issues.
Console formatter will be changed next.
2026-01-20 07:03:30 +00:00
Natasha Gorshunova 24d15a9375 chore: Implement uninstall_extension tool (#796)
Co-authored-by: Natallia Harshunova <nharshunova@chromium.org>
2026-01-20 07:01:10 +00:00
Ergün Erdoğmuş fb920c0677 chore: Prefix logged enum flag values with their snake_case name (#799) 2026-01-20 07:00:59 +00:00
Ergün Erdoğmuş ee35f207eb chore: Implement Watchdog process for reliable telemetry (#777)
This PR implements the watchdog process architecture for the telemetry
system. It moves the `ClearcutSender` execution to a dedicated child
process, ensuring that events—especially shutdown events—are reliably
transmitted even if the main server process terminates abruptly.

Added an e2e test that runs the server, checks the log file and confirms
the telemetry logs exist and that the watchdog process is correctly
killed after sending the shutdown event once the main process is killed.

**Implementation Roadmap:**
This is the fourth in a series of PRs designed to implement the
telemetry system:
1. **CLI & Opt-out Mechanism
([Merged](https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/757)):**
    *   Added `--usage-statistics` flag and transparency logging.
2. **Logger Scaffolding & Integration
([Merged](https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/758)):**
    *   **`ClearcutLogger`**: Implemented the main logging entry point.
* **One-way Data Flow**: Integrated `logToolInvocation` and
`logServerStart` hooks into `main.ts` to capture events.
    *   **`ClearcutSender`**: Introduced a transport abstraction.
* **Type Definitions**: Added TypeScript definitions for the telemetry
Protocol Buffer messages.
3. **Persistence Layer
([Merged](https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/766)):**
* **`FilePersistence`**: Implemented a local file-based state manager to
persist the `lastActive` timestamp.
* **Daily Active Logic**: Integrated persistence into `ClearcutLogger`
to automatically detect and log `daily_active` events (with
`days_since_last_active` calculation) via `logDailyActiveIfNeeded`.
4.  **Watchdog Process Architecture (This PR):**
* **`WatchdogClient`**: Added a client-side wrapper to spawn and
communicate with the watchdog process via `stdin`.
* **`watchdog/main.ts`**: Created the entry point for the watchdog
process. It listens for IPC messages and uses `ClearcutSender` to
transmit events.
* **Reliable Shutdown**: The watchdog monitors the parent process and
guarantees a `shutdown` event is sent when the parent exits or crashes
(detecting `stdin` closure).
* **Refactoring**: Moved `ClearcutSender` to the `watchdog` directory
and updated `ClearcutLogger` to delegate event sending to the
`WatchdogClient`.
5.  **Transport, Batching & Retries (Next):**
* Finalize `ClearcutSender` with actual HTTP transport logic, including
event batching and exponential backoff retries.
2026-01-19 13:38:58 +00:00
Alex Rudenko a83a338351 fix: increase timeouts for long text input (#787)
Fixes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/786
2026-01-19 13:01:41 +00:00
Alex Rudenko 6d0e4cab28 feat: support filePath for network request and response bodies (#795)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/377
2026-01-19 12:44:59 +00:00
zyzyzyryxy 3c8ce2d281 chore: Remove file unused after bundling from published package (#785)
build/src/third_party/devtools.js is only used during bundling, but we
publish it unnecessarily. We should remove it to not cause confusion and
slightly decrease package size.

Co-authored-by: Piotr Paulski <piotrpaulski@chromium.org>
2026-01-19 11:42:58 +00:00
Alex Rudenko 9b21f8b2e9 fix: handle beforeunload dialogs in navigations (#788)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/713
2026-01-19 10:04:45 +00:00
Simon Zünd 7ba63a8777 chore(build): add devtools-formatter-worker.ts bundle (#792)
The `devtools-formatter-worker` is a separate entrypoint from the MCP
entrypoint. It is identical to the upstream
`front_end/entrypoints/formatter_worker/formatter_worker-entrypoint.js`
and a required part to make source mapping, formatting and other
AST-based DevTools features work.

The implementation consists of 3 parts:
1) A trivial `devtools-formatter-worker.ts` file that imports the
DevTools entrypoint.
2) A new bundle output, bundling everything that needs to run in the
worker.
3) A call that initializes the `FormatterWorkerPool` with the custom
entrypoint. Otherwise we'd use the unbundled entrypoint from
`chrome-devtools-frontend` not available to us at runtime.

Note that we could improve code splitting in the future as some things
like `core/common` are now bundled twice.

---------

Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com>
2026-01-19 09:18:08 +00:00
Natasha Gorshunova 1e0ee69d3a chore: Implement install_extension command (#764)
Co-authored-by: Natallia Harshunova <nharshunova@chromium.org>
2026-01-19 07:57:25 +00:00
dependabot[bot] 59bdee0b92 chore(deps-dev): bump the dev-dependencies group with 2 updates (#789)
Bumps the dev-dependencies group with 2 updates:
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
and [prettier](https://github.com/prettier/prettier).

Updates `@types/node` from 25.0.8 to 25.0.9
<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 `prettier` from 3.7.4 to 3.8.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/releases">prettier's
releases</a>.</em></p>
<blockquote>
<h2>3.8.0</h2>
<ul>
<li>Support Angular v21.1</li>
</ul>
<p><a
href="https://github.com/prettier/prettier/compare/3.7.4...3.8.0">diff</a></p>
<p>🔗 <a href="https://prettier.io/blog/2026/01/14/3.8.0">Release note
&quot;Prettier 3.8: Support for Angular v21.1&quot;</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's
changelog</a>.</em></p>
<blockquote>
<h1>3.8.0</h1>
<p><a
href="https://github.com/prettier/prettier/compare/3.7.4...3.8.0">diff</a></p>
<p>🔗 <a href="https://prettier.io/blog/2026/01/14/3.8.0">Release
Notes</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/prettier/prettier/commit/812a4d0071270f61a7aa549d625b618be7e09d71"><code>812a4d0</code></a>
Release 3.8.0</li>
<li><a
href="https://github.com/prettier/prettier/commit/6cc1be31e25d001ebe8f000bb5e7bded57ba66ad"><code>6cc1be3</code></a>
Consistent title</li>
<li><a
href="https://github.com/prettier/prettier/commit/6d9bef05148a952b932d12b02596479c4af702a8"><code>6d9bef0</code></a>
Apply automated changes</li>
<li><a
href="https://github.com/prettier/prettier/commit/3744a1840eec3fdef6962c9f704684b6c55df64f"><code>3744a18</code></a>
Update code example</li>
<li><a
href="https://github.com/prettier/prettier/commit/9a3edde02229795adb43613a6d3e7fa00a0113fe"><code>9a3edde</code></a>
Update</li>
<li><a
href="https://github.com/prettier/prettier/commit/82dc52cdeeace56a3628843d79d2ec2c6fc8bc57"><code>82dc52c</code></a>
Regenerate</li>
<li><a
href="https://github.com/prettier/prettier/commit/dc2de1a6e7b2993ff52214fa294d51bf6aa034ae"><code>dc2de1a</code></a>
Regenerate</li>
<li><a
href="https://github.com/prettier/prettier/commit/5aa69662b461e4237d9028cc22900bc09e5e04a9"><code>5aa6966</code></a>
Regenerate</li>
<li><a
href="https://github.com/prettier/prettier/commit/daeeb51af98e9532080bbcee7a432b0c6ba9b186"><code>daeeb51</code></a>
Another version</li>
<li><a
href="https://github.com/prettier/prettier/commit/a2829858609b4ac93b28ceedd16294417b9236fc"><code>a282985</code></a>
Add blog post</li>
<li>Additional commits viewable in <a
href="https://github.com/prettier/prettier/compare/3.7.4...3.8.0">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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
2026-01-18 09:02:45 +00:00
dependabot[bot] c899417f28 chore(deps-dev): bump chrome-devtools-frontend from 1.0.1568190 to 1.0.1570343 in the bundled-devtools group (#790)
Bumps the bundled-devtools group with 1 update:
[chrome-devtools-frontend](https://github.com/ChromeDevTools/devtools-frontend).

Updates `chrome-devtools-frontend` from 1.0.1568190 to 1.0.1570343
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/be2820f4670bd893c32defdbd9a79ef09595e3fe"><code>be2820f</code></a>
Update Chrome (for Testing) PIN</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/de3b1597ce573a0bb96436044b89e8071f4dd18d"><code>de3b159</code></a>
Link to adopted stylesheets</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/0ea2a88277bc2461b828eac1299b95780871827c"><code>0ea2a88</code></a>
Remove <a href="mailto:johnchen@chromium.org">johnchen@chromium.org</a>
from WATCHLISTS</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/c47caefdfe58c544db4c5a593bb67ecce0637c8f"><code>c47caef</code></a>
RPP: ensure we show async stack traces when sync parts are empty</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/bcaa5a1aacae444cbdfe8d6df02a9f928d719725"><code>bcaa5a1</code></a>
Vertically center tree outline arrows</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/fa44b5cb4c8d96ffd3da9cdc8b8160581590817a"><code>fa44b5c</code></a>
Update DevTools DEPS (trusted)</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/594769f48f88cb62092952f35b594a606b061931"><code>594769f</code></a>
Restructure the DeviceModeToolbar to facilitate UI eng migration</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/73adf2fe23457bd3317bfadb72f21d582824a5b0"><code>73adf2f</code></a>
Explicitly set required to parameters</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/c57cb253f522f5266dd80d147b48ee8d977e4523"><code>c57cb25</code></a>
Roll browser-protocol</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/fa0fe837e593e123eb211669a7672000495570cc"><code>fa0fe83</code></a>
Update DevTools DEPS (trusted)</li>
<li>Additional commits viewable in <a
href="https://github.com/ChromeDevTools/devtools-frontend/compare/v1.0.1568190...v1.0.1570343">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=chrome-devtools-frontend&package-manager=npm_and_yarn&previous-version=1.0.1568190&new-version=1.0.1570343)](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
2026-01-18 09:02:29 +00:00
dependabot[bot] 87feea3372 chore(deps): bump actions/setup-node from 6.1.0 to 6.2.0 in the all group (#791)
Bumps the all group with 1 update:
[actions/setup-node](https://github.com/actions/setup-node).

Updates `actions/setup-node` from 6.1.0 to 6.2.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.2.0</h2>
<h2>What's Changed</h2>
<h3>Documentation</h3>
<ul>
<li>Documentation update related to absence of Lockfile by <a
href="https://github.com/mahabaleshwars"><code>@​mahabaleshwars</code></a>
in <a
href="https://redirect.github.com/actions/setup-node/pull/1454">actions/setup-node#1454</a></li>
<li>Correct mirror option typos by <a
href="https://github.com/MikeMcC399"><code>@​MikeMcC399</code></a> in <a
href="https://redirect.github.com/actions/setup-node/pull/1442">actions/setup-node#1442</a></li>
<li>Readme update on checkout version v6 by <a
href="https://github.com/deining"><code>@​deining</code></a> in <a
href="https://redirect.github.com/actions/setup-node/pull/1446">actions/setup-node#1446</a></li>
<li>Readme typo fixes <a
href="https://github.com/munyari"><code>@​munyari</code></a> in <a
href="https://redirect.github.com/actions/setup-node/pull/1226">actions/setup-node#1226</a></li>
<li>Advanced document update on checkout version v6 by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-node/pull/1468">actions/setup-node#1468</a></li>
</ul>
<h3>Dependency updates:</h3>
<ul>
<li>Upgrade <code>@​actions/cache</code> to v5.0.1 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/setup-node/pull/1449">actions/setup-node#1449</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/mahabaleshwars"><code>@​mahabaleshwars</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-node/pull/1454">actions/setup-node#1454</a></li>
<li><a
href="https://github.com/MikeMcC399"><code>@​MikeMcC399</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-node/pull/1442">actions/setup-node#1442</a></li>
<li><a href="https://github.com/deining"><code>@​deining</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-node/pull/1446">actions/setup-node#1446</a></li>
<li><a href="https://github.com/munyari"><code>@​munyari</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-node/pull/1226">actions/setup-node#1226</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-node/compare/v6...v6.2.0">https://github.com/actions/setup-node/compare/v6...v6.2.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/setup-node/commit/6044e13b5dc448c55e2357c09f80417699197238"><code>6044e13</code></a>
Docs: bump actions/checkout from v5 to v6 (<a
href="https://redirect.github.com/actions/setup-node/issues/1468">#1468</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/8e494633d082d609d1e9ff931be32f8a44f1f657"><code>8e49463</code></a>
Fix README typo (<a
href="https://redirect.github.com/actions/setup-node/issues/1226">#1226</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/621ac41091d4227ef8fda5009c1ced96d8d36f7e"><code>621ac41</code></a>
README.md: bump to latest released checkout version v6 (<a
href="https://redirect.github.com/actions/setup-node/issues/1446">#1446</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/2951748f4c016b747952f8ca7e75fc64f2f62b53"><code>2951748</code></a>
Bump <code>@​actions/cache</code> to v5.0.1 (<a
href="https://redirect.github.com/actions/setup-node/issues/1449">#1449</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/21ddc7bc1fef4bd313efce0335fdcbf81827182c"><code>21ddc7b</code></a>
Correct mirror option typos (<a
href="https://redirect.github.com/actions/setup-node/issues/1442">#1442</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/65d868f8d4d85d7d4abb7de0875cde3fcc8798f5"><code>65d868f</code></a>
Update Documentation for Lockfile (<a
href="https://redirect.github.com/actions/setup-node/issues/1454">#1454</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/setup-node/compare/395ad3262231945c25e8478fd5baf05154b1d79f...6044e13b5dc448c55e2357c09f80417699197238">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/setup-node&package-manager=github_actions&previous-version=6.1.0&new-version=6.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
2026-01-18 09:02:14 +00:00
zyzyzyryxy f028f8c075 chore: Update eslint rule to require empty line after license notice. (#784)
We should make sure there is always an empty line after license notice,
otherwise it gets dropped during build if it happens to be before import
statement.

---------

Co-authored-by: Piotr Paulski <piotrpaulski@chromium.org>
2026-01-16 16:35:45 +00:00
Michael Hablich 6e52e66a7a docs: Update README.md to include a link to Android debugging (#783) 2026-01-16 09:34:24 +00:00
Alex Rudenko 9a31ac7aba docs: add a mention of evals into contributing.md (#773) 2026-01-16 09:22:42 +00:00
Alex Rudenko 67c1f80b28 chore: refactor eval script more (#781)
add args parsing and simplify output (support debug logging + headless).
2026-01-16 08:49:06 +00:00
Alex Rudenko 303a1383e1 chore: add more eval scenarios (#780) 2026-01-16 08:38:45 +00:00
Alex Rudenko a106fbadbc docs: update auto-connect docs (#779)
Refs https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/775
2026-01-15 18:31:21 +00:00
Alex Rudenko 49c7ac41d5 chore: move gemini to agents (#776) 2026-01-15 13:59:32 +00:00
Alex Rudenko 755eeef3af chore: support structured network (#774)
This PR adds a structured variant of the network responses and refactors
the code accordingly.
2026-01-15 11:59:00 +00:00
Ergün Erdoğmuş a3de5e4227 chore: implement telemetry persistence and daily active logging (#769)
This PR implements the persistence layer for the telemetry system. It
introduces `FilePersistence` for local state management and integrates
it with `ClearcutLogger` to support "Daily Active" metric. I have
decided not to send `first_time_installation` events since we can deduce
them from `daily active` events where the `days_since_last_active` will
be `-1` for that case.

**Implementation Roadmap:**
This is the third in a series of PRs designed to implement the telemetry
system:
1. **CLI & Opt-out Mechanism
([Merged](https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/757)):**
    *   Added `--usage-statistics` flag and transparency logging.
2. **Logger Scaffolding & Integration
([Merged](https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/758)):**
    *   **`ClearcutLogger`**: Implemented the main logging entry point.
* **One-way Data Flow**: Integrated `logToolInvocation` and
`logServerStart` hooks into `main.ts` to capture events.
    *   **`ClearcutSender`**: Introduced a transport abstraction.
* **Type Definitions**: Added TypeScript definitions for the telemetry
Protocol Buffer messages.
3.  **Persistence Layer (This PR):**
* **`FilePersistence`**: Implemented a local file-based state manager to
persist the `lastActive` timestamp.
* **Daily Active Logic**: Integrated persistence into `ClearcutLogger`
to automatically detect and log `daily_active` events (with
`days_since_last_active` calculation) via `logDailyActiveIfNeeded`.
4.  **Watchdog Process Architecture (Next):**
* Move `ClearcutSender` execution to a dedicated watchdog process to
ensure reliable event transmission even during abrupt server shutdowns.
5.  **Transport, Batching & Retries (Next):**
* Finalize `ClearcutSender` with actual HTTP transport logic, including
event batching and exponential backoff retries.
2026-01-15 10:57:40 +00:00
browser-automation-bot 4090da2bcd chore(main): release chrome-devtools-mcp 0.13.0 (#678)
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.13.0](https://github.com/ChromeDevTools/chrome-devtools-mcp/compare/chrome-devtools-mcp-v0.12.1...chrome-devtools-mcp-v0.13.0)
(2026-01-14)


### 🎉 Features

* Allow opting out of default Chrome launch arguments
([#729](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/729))
([9a51af2](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/9a51af219fc9216cd463bef9363716283f41f36a))
* support filePath in performance tools
([#686](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/686))
([68ae2f8](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/68ae2f8253e2ba5c34436e25df114874c537f6df))


### 🛠️ Fixes

* support resize_page when browser window is maximized/fullscreenwindow
state
([#748](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/748))
([4d9ac22](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/4d9ac227ddff6fc4aec44e46673f6e44a8168db9))
* use relative path for plugin source in marketplace
([#724](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/724))
([5c1ecf8](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/5c1ecf835ac8aad4947d0a8f82c899acd4115b64))


### 📄 Documentation

* add experimental chrome on android guide
([#691](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/691))
([4a87702](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/4a87702ca6913ed62987f71e080f3d481d13b8d8))
* autoConnect - clarify how the mcp server selects a profile
([#693](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/693))
([28b8ff8](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/28b8ff816461760c82e9b19b70f288bc7fa2fa38))
* claude code broken link
([#707](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/707))
([1f532b8](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/1f532b8fafa0fa60aaf94c302bad663fab1c12ea))
* enhance cli docs + sort required vs opt params
([#674](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/674))
([81cbd99](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/81cbd99f52d013d07bdcf21a0840f61a16bacd33))
* update auto connect docs to mention min Chrome version
([#681](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/681))
([ab2340f](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/ab2340f40127dcdabde6887a411163ce9d130394))
* Update Claude Code instructions in README.md
([#711](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/711))
([f81cd2d](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/f81cd2d8dfc35da8c718b227e0ee4c4d7c5daca8))
* update readme to include OpenCode example
([#560](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/560))
([fbba3c9](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/fbba3c9461cec8113216fa4569e879c85312ea29))


### ♻️ Chores

* change pageIdx to page ids
([#741](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/741))
([a23c6ba](https://github.com/ChromeDevTools/chrome-devtools-mcp/commit/a23c6ba8c9e1da90c885e68946635a8cc536a11e))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
chrome-devtools-mcp-v0.13.0
2026-01-15 07:21:55 +00:00
Alex Rudenko 0284d18b7b chore: support an html route in evals (#770)
Allows using the server URL in the prompt.
2026-01-14 17:11:53 +00:00
Alex Rudenko 257b9943e9 chore: add basic eval (#766)
This PR adds a tool based on the node test runner that runs a loop to
see what tools a model chooses given a prompt. The expectations are
encoding for each prompt. Run `npm run eval` to get results. Currently,
only Gemini and needs and API key.
2026-01-14 14:15:21 +00:00
dependabot[bot] e8e2910e9d chore(deps-dev): bump @types/node from 25.0.7 to 25.0.8 in the dev-dependencies group (#767)
Bumps the dev-dependencies group with 1 update:
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node).

Updates `@types/node` from 25.0.7 to 25.0.8
<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 />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=25.0.7&new-version=25.0.8)](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
2026-01-14 10:46:52 +00:00
dependabot[bot] 6c63bc99e1 chore(deps-dev): bump chrome-devtools-frontend from 1.0.1567721 to 1.0.1568190 in the bundled-devtools group (#768)
Bumps the bundled-devtools group with 1 update:
[chrome-devtools-frontend](https://github.com/ChromeDevTools/devtools-frontend).

Updates `chrome-devtools-frontend` from 1.0.1567721 to 1.0.1568190
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/1e68957df7bb66440c0d73ef3f7e52810eedc9a7"><code>1e68957</code></a>
Update Chrome (for Testing) PIN</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/7779e480dacc721ab57e190fcbcfb1a42b097ceb"><code>7779e48</code></a>
AutoRun: store autorun example ID in eval output</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/7be0f8a978a762b8c4c4b3030cbf5bb849adac75"><code>7be0f8a</code></a>
Ensure selected information of selected menu item is announced via
screen reader</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/7cedd95a62eaf2ebc775d2de2e5dbc84aff57835"><code>7cedd95</code></a>
Extract a view function for the UsedPreloadingView</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/79cc66a9853b672dee641bbe2c256f5fac6c0a3a"><code>79cc66a</code></a>
Extract most lit templates out of the UsedPreloadingView</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/d0fcd07f0ee926a93fbafe5e64bad5890bf1af82"><code>d0fcd07</code></a>
Rewrite ConsoleInsight presenter tests related to citations</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/5823edd2e8a40d6d6b4a6ab8ea123121c90bd8f5"><code>5823edd</code></a>
RPP: use new network initiator lookup in NetworkDependencyTree</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/cb5961a7bb92c8cedd327f96a2e9be4e23c8b76b"><code>cb5961a</code></a>
Extract badge rendering out of UsedPreloadingView and use unqualified
Lit ide...</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/a9773002243e6a94b2caaa30f4dc5fb010d6e018"><code>a977300</code></a>
Remove redudant check, follow up for cl 7452247</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/d50377f46727b201cfb02d60aff47c6a2997647e"><code>d50377f</code></a>
Update Chrome (for Testing) PIN</li>
<li>Additional commits viewable in <a
href="https://github.com/ChromeDevTools/devtools-frontend/compare/v1.0.1567721...v1.0.1568190">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=chrome-devtools-frontend&package-manager=npm_and_yarn&previous-version=1.0.1567721&new-version=1.0.1568190)](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
2026-01-14 10:36:21 +00:00
dependabot[bot] 002a2bab45 chore(deps-dev): bump hono from 4.11.3 to 4.11.4 (#765)
Bumps [hono](https://github.com/honojs/hono) from 4.11.3 to 4.11.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/honojs/hono/releases">hono's
releases</a>.</em></p>
<blockquote>
<h2>v4.11.4</h2>
<h2>Security</h2>
<p>Fixed a JWT algorithm confusion issue in the JWT and JWK/JWKS
middleware.</p>
<p>Both middlewares now require an explicit algorithm configuration to
prevent the verification algorithm from being influenced by untrusted
JWT header values.</p>
<p>If you are using the JWT or JWK/JWKS middleware, please update to the
latest version as soon as possible.</p>
<h3>JWT middleware</h3>
<pre lang="ts"><code>import { jwt } from 'hono/jwt'
<p>app.use(
'/auth/*',
jwt({
secret: 'it-is-very-secret',
alg: 'HS256', // required
})
)
</code></pre></p>
<h3>JWK/JWKS middleware</h3>
<pre lang="ts"><code>import { jwk } from 'hono/jwk'
<p>app.use(
'/auth/*',
jwk({
jwks_uri: '<a
href="https://example.com/.well-known/jwks.json">https://example.com/.well-known/jwks.json</a>',
alg: ['RS256'], // required (asymmetric algorithms only)
})
)
</code></pre></p>
<p>For more details, see the Security Advisory.</p>
<ul>
<li><a
href="https://github.com/honojs/hono/security/advisories/GHSA-f67f-6cw9-8mq4">https://github.com/honojs/hono/security/advisories/GHSA-f67f-6cw9-8mq4</a></li>
<li><a
href="https://github.com/honojs/hono/security/advisories/GHSA-3vhc-576x-3qv4">https://github.com/honojs/hono/security/advisories/GHSA-3vhc-576x-3qv4</a></li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>test(utils/jwt): add missing algorithm types in jwa.test.ts by <a
href="https://github.com/flathill404"><code>@​flathill404</code></a> in
<a
href="https://redirect.github.com/honojs/hono/pull/4607">honojs/hono#4607</a></li>
<li>chore: bump <code>@hono/eslint-config</code> and enable curly rule
by <a href="https://github.com/yusukebe"><code>@​yusukebe</code></a> in
<a
href="https://redirect.github.com/honojs/hono/pull/4620">honojs/hono#4620</a></li>
<li>docs(bun/websocket): Fixed a typo in hono/bun deprecation message
and updated test. by <a
href="https://github.com/Itsnotaka"><code>@​Itsnotaka</code></a> in <a
href="https://redirect.github.com/honojs/hono/pull/4618">honojs/hono#4618</a></li>
<li>test: support <code>alg</code> option for JWT middleware by <a
href="https://github.com/yusukebe"><code>@​yusukebe</code></a> in <a
href="https://redirect.github.com/honojs/hono/pull/4624">honojs/hono#4624</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/flathill404"><code>@​flathill404</code></a>
made their first contribution in <a
href="https://redirect.github.com/honojs/hono/pull/4607">honojs/hono#4607</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/honojs/hono/commit/28452f06319ef12df94b826450f36486e286565d"><code>28452f0</code></a>
4.11.4</li>
<li><a
href="https://github.com/honojs/hono/commit/190f6e28e2ca85ce3d1f2f54db1310f5f3eab134"><code>190f6e2</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/honojs/hono/commit/a48ef183d46c95053003dba4f107f95b5c637ffd"><code>a48ef18</code></a>
test: support <code>alg</code> option for JWT middleware (<a
href="https://redirect.github.com/honojs/hono/issues/4624">#4624</a>)</li>
<li><a
href="https://github.com/honojs/hono/commit/cc0aa7ae327ed84cc391d29086dec2a3e44e7a1f"><code>cc0aa7a</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/honojs/hono/commit/ef2a4b8d77711c9308a6ddca9e35d4ff321f97fe"><code>ef2a4b8</code></a>
docs(bun/websocket): Fixed a typo in hono/bun deprecation message and
updated...</li>
<li><a
href="https://github.com/honojs/hono/commit/8139399f68e3f3f60adffee0c49630d34310a361"><code>8139399</code></a>
chore: bump <code>@hono/eslint-config</code> and enable curly rule (<a
href="https://redirect.github.com/honojs/hono/issues/4620">#4620</a>)</li>
<li><a
href="https://github.com/honojs/hono/commit/4e872759b092e34458aeecb8b72e3e0c4d4f1784"><code>4e87275</code></a>
test(utils/jwt): add missing algorithm types in jwa.test.ts (<a
href="https://redirect.github.com/honojs/hono/issues/4606">#4606</a>)
(<a
href="https://redirect.github.com/honojs/hono/issues/4607">#4607</a>)</li>
<li>See full diff in <a
href="https://github.com/honojs/hono/compare/v4.11.3...v4.11.4">compare
view</a></li>
</ul>
</details>
<br />


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

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
2026-01-14 06:57:40 +00:00
Lakshan Perera 4d9ac227dd fix: support resize_page when browser window is maximized/fullscreenwindow state (#748)
Related Issue -
[465](https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/465)

### Description

This change make sure that the browser window is restored to a `normal`
state before resizing the page. When the window is in `fullscreen` mode
we have to set the state twice to match how Chrome CDP behaves.

Tests cover window resizing for every available window states `type
WindowState = 'normal' | 'minimized' | 'maximized' | 'fullscreen';`

---------

Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com>
2026-01-13 16:25:22 +00:00
Ergün Erdoğmuş 61f37d6615 chore: implement ClearcutLogger and ClearcutSender dummy (#758)
This PR implements the core logging infrastructure for the telemetry
system. It introduces the `ClearcutLogger` class, integrates it into the
server lifecycle events, and establishes the `ClearcutSender`
abstraction.

**Implementation Roadmap:**
This is the second in a series of PRs designed to implement a robust,
privacy-conscious telemetry system:

1. **CLI & Opt-out Mechanism
([Merged](https://github.com/ChromeDevTools/chrome-devtools-mcp/pull/757)):**
    *   Added `--usage-statistics` flag and transparency logging.
2.  **Logger Scaffolding & Integration (This PR):**
    *   **`ClearcutLogger`**: Implemented the main logging entry point.
* **One-way Data Flow**: Integrated `logToolInvocation` and
`logServerStart` hooks into `main.ts` to capture events.
* **`ClearcutSender`**: Introduced a transport abstraction (currently a
dummy implementation) that will later handle HTTP requests, batching,
and retries.
* **Type Definitions**: Added TypeScript definitions for the telemetry
Protocol Buffer messages.
3.  **Persistence Layer (Next):**
* Implement local state management to reliably track "First Time
Installation" and "Daily Active" metrics.
4.  **Watchdog Process Architecture (Next):**
* Move `ClearcutSender` execution to a dedicated watchdog process to
ensure reliable event transmission even during abrupt server shutdowns.
5.  **Transport, Batching & Retries (Next):**
* Finalize `ClearcutSender` with actual HTTP transport logic, including
event batching and exponential backoff retries.
2026-01-13 14:35:51 +00:00
adam jones f81cd2d8df docs: Update Claude Code instructions in README.md (#711)
Heya, Adam from @anthropics here 👋

We moved our Claude Code MCP docs, this PR updates the link. I've also
added the scope parameter given I think most users will prefer this to
be installed globally (and this matches the installation scope for other
coding assistants).
2026-01-13 12:34:52 +00:00
dependabot[bot] f906febdf8 chore(deps-dev): bump chrome-devtools-frontend from 1.0.1566234 to 1.0.1567721 in the bundled-devtools group (#763)
Bumps the bundled-devtools group with 1 update:
[chrome-devtools-frontend](https://github.com/ChromeDevTools/devtools-frontend).

Updates `chrome-devtools-frontend` from 1.0.1566234 to 1.0.1567721
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/309588302c64196d4731060ced57d4d5e616c261"><code>3095883</code></a>
Update Chrome (for Testing) PIN</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/8963a8ca64c0921a784839c6c4b9f5001c9ffebe"><code>8963a8c</code></a>
Migrate chromium unittest</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/883e1a279d8b62e1c57a8306ce86b72104709f1c"><code>883e1a2</code></a>
[e2e] Disable live edit test</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/b1386393e2cc3f143118a89fe2abe29bbb9b47fe"><code>b138639</code></a>
Roll browser-protocol</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/45975b80565357acf435ecdab97d8870f424f894"><code>45975b8</code></a>
Add performance tests documentation</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/444ff17844209a5aa8f4e952ce05d49e76ee64c7"><code>444ff17</code></a>
Update DevTools DEPS (trusted)</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/0d943e301f419ba46b959abd4ad8ee25a9a0cb9b"><code>0d943e3</code></a>
[RPP] Fix 'View Treemap' button</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/1f3e61e87afb28fd1af1bb4bc692fc7f7120d461"><code>1f3e61e</code></a>
Improve error case in Base64 encode w/ large input</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/d1b4db0c02fcbf0567f96e2afeca1b218ea0cdd3"><code>d1b4db0</code></a>
[RPP] Don't make excessive copies of trace during export</li>
<li><a
href="https://github.com/ChromeDevTools/devtools-frontend/commit/90661618ead060f1dcc167ac14d898a8f430ebaf"><code>9066161</code></a>
[GreenDev] Add reveal button and reveal insight and network request</li>
<li>Additional commits viewable in <a
href="https://github.com/ChromeDevTools/devtools-frontend/compare/v1.0.1566234...v1.0.1567721">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=chrome-devtools-frontend&package-manager=npm_and_yarn&previous-version=1.0.1566234&new-version=1.0.1567721)](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
2026-01-13 12:26:51 +00:00
Alex Rudenko 10baac9c48 test: add a retry for the merge queue (#762)
The tests need to pass checks before being added to the merge queue so
we can avoid merge queue failures in case there are flaky tests.
2026-01-13 12:03:17 +00:00
Alex Rudenko c4e493b411 test: support testing a single test file without only (#761)
This PR adds a test.ts wrapper over the test runner to simplify scripts
in package.json and allow running a single test file.
2026-01-13 11:53:54 +00:00
Alex Rudenko 68ae2f8253 feat: support filePath in performance tools (#686)
Closes https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/680
2026-01-13 11:22:14 +00:00
dependabot[bot] 0abd95c69c chore(deps-dev): bump the dev-dependencies group with 4 updates (#760)
Bumps the dev-dependencies group with 4 updates:
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node),
[@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 `@types/node` from 25.0.6 to 25.0.7
<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.52.0 to 8.53.0
<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.53.0</h2>
<h2>8.53.0 (2026-01-12)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>eslint-plugin:</strong> [no-unused-vars] add a fixer to
remove unused imports (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11922">#11922</a>)</li>
<li><strong>eslint-plugin:</strong> add rule [strict-void-return] (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/9707">#9707</a>)</li>
<li><strong>project-service:</strong> allow passing
<code>Partial&lt;ts.server.ServerHost&gt;</code> to project service (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11932">#11932</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> replace unclear
&quot;<code>error</code> typed&quot; with more helpful description (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11704">#11704</a>)</li>
<li><strong>eslint-plugin:</strong> [no-useless-default-assignment] fix
false positive for parameters corresponding to a rest parameter (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11916">#11916</a>)</li>
<li><strong>typescript-estree:</strong> forbid type-only import with
both default and named specifiers (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11930">#11930</a>)</li>
<li><strong>typescript-estree:</strong> fix syntax check for
<code>using</code> declaration (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11910">#11910</a>)</li>
<li><strong>typescript-estree:</strong> forbid invalid class implements
(<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11934">#11934</a>)</li>
<li><strong>typescript-estree:</strong> forbid invalid &quot;import
equals&quot; declaration (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11936">#11936</a>)</li>
<li><strong>typescript-estree:</strong> forbid invalid
<code>extends</code> and <code>implements</code> in interface
declaration (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11935">#11935</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>auvred <a
href="https://github.com/auvred"><code>@​auvred</code></a></li>
<li>Brad Zacher <a
href="https://github.com/bradzacher"><code>@​bradzacher</code></a></li>
<li>fisker Cheung <a
href="https://github.com/fisker"><code>@​fisker</code></a></li>
<li>Josh Goldberg</li>
<li>Josh Goldberg </li>
<li>Kirk Waiblinger</li>
<li>Niki <a
href="https://github.com/phaux"><code>@​phaux</code></a></li>
<li>Nikita</li>
<li>SungHyun627 <a
href="https://github.com/SungHyun627"><code>@​SungHyun627</code></a></li>
<li>Will Harney <a
href="https://github.com/wjhsf"><code>@​wjhsf</code></a></li>
</ul>
<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.53.0 (2026-01-12)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>eslint-plugin:</strong> add rule [strict-void-return] (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/9707">#9707</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unused-vars] add a fixer to
remove unused imports (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11922">#11922</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [no-useless-default-assignment] fix
false positive for parameters corresponding to a rest parameter (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11916">#11916</a>)</li>
<li><strong>eslint-plugin:</strong> replace unclear
&quot;<code>error</code> typed&quot; with more helpful description (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11704">#11704</a>)</li>
<li><strong>typescript-estree:</strong> forbid invalid
<code>extends</code> and <code>implements</code> in interface
declaration (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11935">#11935</a>)</li>
<li><strong>typescript-estree:</strong> forbid invalid class implements
(<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11934">#11934</a>)</li>
<li><strong>typescript-estree:</strong> forbid type-only import with
both default and named specifiers (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11930">#11930</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Brad Zacher <a
href="https://github.com/bradzacher"><code>@​bradzacher</code></a></li>
<li>fisker Cheung <a
href="https://github.com/fisker"><code>@​fisker</code></a></li>
<li>Josh Goldberg</li>
<li>Josh Goldberg </li>
<li>Kirk Waiblinger</li>
<li>Niki <a
href="https://github.com/phaux"><code>@​phaux</code></a></li>
<li>Nikita</li>
<li>SungHyun627 <a
href="https://github.com/SungHyun627"><code>@​SungHyun627</code></a></li>
<li>Will Harney <a
href="https://github.com/wjhsf"><code>@​wjhsf</code></a></li>
</ul>
<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/3021ede961732e66b1daca804759aa0cf4143b97"><code>3021ede</code></a>
chore(release): publish 8.53.0</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/722ab62547213f9521377c3003629317403075b1"><code>722ab62</code></a>
fix(eslint-plugin): [no-useless-default-assignment] fix false positive
for pa...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/92fcf3ee719f4ec0903c4fe1bc86ed7a837b98b3"><code>92fcf3e</code></a>
feat(eslint-plugin): add rule [strict-void-return] (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/9707">#9707</a>)</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/3fb03817d66e274560a4ed115e53fb2d770bf6a1"><code>3fb0381</code></a>
docs(eslint-plugin): [no-useless-default-assignment] fix misformatted
link (#...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/62ee26ead99bf23c16e819dbcae6eb4c24c67175"><code>62ee26e</code></a>
feat(eslint-plugin): [no-unused-vars] add a fixer to remove unused
imports (#...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/c4d5a56925e588d0e84e18f6f2d7756d0248d3be"><code>c4d5a56</code></a>
fix(eslint-plugin): replace unclear &quot;<code>error</code> typed&quot;
with more helpful descrip...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/3ac77355112f5c4150f5a9e2f97fd6aa9812ab4e"><code>3ac7735</code></a>
fix(typescript-estree): forbid invalid <code>extends</code> and
<code>implements</code> in interfac...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/a8b924b3cd736068216c2036832ee4f0338c670a"><code>a8b924b</code></a>
fix(typescript-estree): forbid invalid class implements (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/11934">#11934</a>)</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/a98ec1f3931cd38226ce358d644154a696a280a2"><code>a98ec1f</code></a>
fix(typescript-estree): forbid type-only import with both default and
named s...</li>
<li>See full diff in <a
href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.53.0/packages/eslint-plugin">compare
view</a></li>
</ul>
</details>
<br />

Updates `@typescript-eslint/parser` from 8.52.0 to 8.53.0
<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.53.0</h2>
<h2>8.53.0 (2026-01-12)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>eslint-plugin:</strong> [no-unused-vars] add a fixer to
remove unused imports (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11922">#11922</a>)</li>
<li><strong>eslint-plugin:</strong> add rule [strict-void-return] (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/9707">#9707</a>)</li>
<li><strong>project-service:</strong> allow passing
<code>Partial&lt;ts.server.ServerHost&gt;</code> to project service (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11932">#11932</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> replace unclear
&quot;<code>error</code> typed&quot; with more helpful description (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11704">#11704</a>)</li>
<li><strong>eslint-plugin:</strong> [no-useless-default-assignment] fix
false positive for parameters corresponding to a rest parameter (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11916">#11916</a>)</li>
<li><strong>typescript-estree:</strong> forbid type-only import with
both default and named specifiers (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11930">#11930</a>)</li>
<li><strong>typescript-estree:</strong> fix syntax check for
<code>using</code> declaration (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11910">#11910</a>)</li>
<li><strong>typescript-estree:</strong> forbid invalid class implements
(<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11934">#11934</a>)</li>
<li><strong>typescript-estree:</strong> forbid invalid &quot;import
equals&quot; declaration (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11936">#11936</a>)</li>
<li><strong>typescript-estree:</strong> forbid invalid
<code>extends</code> and <code>implements</code> in interface
declaration (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11935">#11935</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>auvred <a
href="https://github.com/auvred"><code>@​auvred</code></a></li>
<li>Brad Zacher <a
href="https://github.com/bradzacher"><code>@​bradzacher</code></a></li>
<li>fisker Cheung <a
href="https://github.com/fisker"><code>@​fisker</code></a></li>
<li>Josh Goldberg</li>
<li>Josh Goldberg </li>
<li>Kirk Waiblinger</li>
<li>Niki <a
href="https://github.com/phaux"><code>@​phaux</code></a></li>
<li>Nikita</li>
<li>SungHyun627 <a
href="https://github.com/SungHyun627"><code>@​SungHyun627</code></a></li>
<li>Will Harney <a
href="https://github.com/wjhsf"><code>@​wjhsf</code></a></li>
</ul>
<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.53.0 (2026-01-12)</h2>
<p>This was a version bump only for parser to align it with other
projects, there were no code changes.</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/3021ede961732e66b1daca804759aa0cf4143b97"><code>3021ede</code></a>
chore(release): publish 8.53.0</li>
<li>See full diff in <a
href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.53.0/packages/parser">compare
view</a></li>
</ul>
</details>
<br />

Updates `typescript-eslint` from 8.52.0 to 8.53.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.53.0</h2>
<h2>8.53.0 (2026-01-12)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>eslint-plugin:</strong> [no-unused-vars] add a fixer to
remove unused imports (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11922">#11922</a>)</li>
<li><strong>eslint-plugin:</strong> add rule [strict-void-return] (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/9707">#9707</a>)</li>
<li><strong>project-service:</strong> allow passing
<code>Partial&lt;ts.server.ServerHost&gt;</code> to project service (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11932">#11932</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> replace unclear
&quot;<code>error</code> typed&quot; with more helpful description (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11704">#11704</a>)</li>
<li><strong>eslint-plugin:</strong> [no-useless-default-assignment] fix
false positive for parameters corresponding to a rest parameter (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11916">#11916</a>)</li>
<li><strong>typescript-estree:</strong> forbid type-only import with
both default and named specifiers (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11930">#11930</a>)</li>
<li><strong>typescript-estree:</strong> fix syntax check for
<code>using</code> declaration (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11910">#11910</a>)</li>
<li><strong>typescript-estree:</strong> forbid invalid class implements
(<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11934">#11934</a>)</li>
<li><strong>typescript-estree:</strong> forbid invalid &quot;import
equals&quot; declaration (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11936">#11936</a>)</li>
<li><strong>typescript-estree:</strong> forbid invalid
<code>extends</code> and <code>implements</code> in interface
declaration (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11935">#11935</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>auvred <a
href="https://github.com/auvred"><code>@​auvred</code></a></li>
<li>Brad Zacher <a
href="https://github.com/bradzacher"><code>@​bradzacher</code></a></li>
<li>fisker Cheung <a
href="https://github.com/fisker"><code>@​fisker</code></a></li>
<li>Josh Goldberg</li>
<li>Josh Goldberg </li>
<li>Kirk Waiblinger</li>
<li>Niki <a
href="https://github.com/phaux"><code>@​phaux</code></a></li>
<li>Nikita</li>
<li>SungHyun627 <a
href="https://github.com/SungHyun627"><code>@​SungHyun627</code></a></li>
<li>Will Harney <a
href="https://github.com/wjhsf"><code>@​wjhsf</code></a></li>
</ul>
<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.53.0 (2026-01-12)</h2>
<p>This was a version bump only for typescript-eslint to align it with
other projects, there were no code changes.</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/3021ede961732e66b1daca804759aa0cf4143b97"><code>3021ede</code></a>
chore(release): publish 8.53.0</li>
<li>See full diff in <a
href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.53.0/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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
2026-01-13 10:15:38 +00:00
Alex Rudenko b204ad7009 build: update verify server.json (#759)
move download to the script, run script without deleting server.json
2026-01-13 10:10:19 +00:00
Alex Rudenko 8f3fcf6582 chore: get tab ID tool (#756)
An experimental tools to allow interop with other CDP tooling.
2026-01-12 16:26:03 +00:00
Ergün Erdoğmuş e8c9192dbd chore: add usage statistics CLI flag (#757)
This PR initiates the implementation of clearcut telemetry. It
introduces the CLI configuration required to opt-out of usage
statistics, along with the necessary transparency disclaimers for the
user. It's hidden by default during development & while we get the
launch approvals.

**Implementation Roadmap:**
This is the first in a series of PRs designed to implement the telemetry
system:
1.  **CLI & Opt-out Mechanism (This PR):**
* Adds the `--usage-statistics` flag (hidden, default `false` for now).
* Adds transparency logging to specify data collection when enabled.
2.  **Logger Scaffolding & Integration:**
    *   Implement `ClearcutLogger` and integrate it into `main.ts`.
    *   Add hooks for `logServerStart` and `logToolInvocation`.
* Introduce `ClearcutSender` as an abstraction layer for transport
logic.
3.  **Persistence Layer:**
* Implement local state management to reliably track "First Time
Installation" and "Daily Active" metrics.
* Implement sending the daily active and first time installation event
based on this local state.
4.  **Watchdog Process Architecture:**
* Move `ClearcutSender` execution to a dedicated watchdog process to
ensure reliable event transmission even during abrupt server shutdowns.
5.  **Transport, Batching & Retries:**
* Finalize `ClearcutSender` with actual HTTP transport logic, including
event batching, respecting `next_request_wait_millis` and retries.
2026-01-12 13:58:58 +00:00
Alex Rudenko 3fcca026cb chore: support structured content (#744)
The idea is to turn formatters into instances and support both text and
JSON formatting. The structured content is output if the experimental
structured content flag is passed. For now, only the snapshots are
returned in a structured way.

Refs https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/689
2026-01-12 13:53:12 +00:00
dependabot[bot] 14ff4009d3 chore(deps-dev): bump puppeteer from 24.34.0 to 24.35.0 in the bundled group (#755)
Bumps the bundled group with 1 update:
[puppeteer](https://github.com/puppeteer/puppeteer).

Updates `puppeteer` from 24.34.0 to 24.35.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: v24.35.0</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v24.34.0...puppeteer-core-v24.35.0">24.35.0</a>
(2026-01-12)</h2>
<h3>🎉 Features</h3>
<ul>
<li>support background flag when creating pages (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14547">#14547</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/77245fd344c0d0ec3ce2b8307cbc528e4c1e572a">77245fd</a>)</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li><strong>puppeteer-core:</strong> Deprecate Cookie attribute
sameParty (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14550">#14550</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/d128a845a176100957eaee32aa391c22d6c9374b">d128a84</a>)</li>
<li>roll to Chrome 143.0.7499.192 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14541">#14541</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/d3127b7a9a9810e84cf35d75efd66debaffab088">d3127b7</a>)</li>
<li><strong>webdriver:</strong> closing page with iframes via webdriver
(<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14549">#14549</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/b89ce8772803fc207bdd67000d3ea908a3a6f96b">b89ce87</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 2.11.0 to 2.11.1</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>puppeteer: v24.35.0</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.34.0...puppeteer-v24.35.0">24.35.0</a>
(2026-01-12)</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 2.11.0 to 2.11.1</li>
<li>puppeteer-core bumped from 24.34.0 to 24.35.0</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-v24.34.0...puppeteer-v24.35.0">24.35.0</a>
(2026-01-12)</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 2.11.0 to 2.11.1</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>🎉 Features</h3>
<ul>
<li>support background flag when creating pages (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14547">#14547</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/77245fd344c0d0ec3ce2b8307cbc528e4c1e572a">77245fd</a>)</li>
</ul>
<h3>🛠️ Fixes</h3>
<ul>
<li><strong>puppeteer-core:</strong> Deprecate Cookie attribute
sameParty (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14550">#14550</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/d128a845a176100957eaee32aa391c22d6c9374b">d128a84</a>)</li>
<li>roll to Chrome 143.0.7499.192 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14541">#14541</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/d3127b7a9a9810e84cf35d75efd66debaffab088">d3127b7</a>)</li>
<li><strong>webdriver:</strong> closing page with iframes via webdriver
(<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14549">#14549</a>)
(<a
href="https://github.com/puppeteer/puppeteer/commit/b89ce8772803fc207bdd67000d3ea908a3a6f96b">b89ce87</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/853796e7f342b33ce6a27b8cede0b686f645c1bc"><code>853796e</code></a>
chore: release main (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14542">#14542</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/7deeb78b8e887dd1363c7b6129901bb758894193"><code>7deeb78</code></a>
chore: expose originating targetId on ConsoleMessage (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14556">#14556</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/2f56831d1212e37d5bc982db63d8123a71876b8b"><code>2f56831</code></a>
chore(deps): bump ws from 8.18.3 to 8.19.0 in the dependencies group (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14553">#14553</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/b89ce8772803fc207bdd67000d3ea908a3a6f96b"><code>b89ce87</code></a>
fix(webdriver): closing page with iframes via webdriver (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14549">#14549</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/695624e35ee4d490ade1fc6a857e769c373b82e2"><code>695624e</code></a>
chore: add internal _tabId to page (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14548">#14548</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/77245fd344c0d0ec3ce2b8307cbc528e4c1e572a"><code>77245fd</code></a>
feat: support background flag when creating pages (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14547">#14547</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/2ab534b4533d6a658f32c8b2b18d2be64a2d083f"><code>2ab534b</code></a>
chore: npm audit fix --force (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14546">#14546</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/d128a845a176100957eaee32aa391c22d6c9374b"><code>d128a84</code></a>
fix(puppeteer-core): Deprecate Cookie attribute sameParty (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14550">#14550</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/84d8de3c1102819fa93ab33215ee3e8332afa8f8"><code>84d8de3</code></a>
chore(deps-dev): bump the dev-dependencies group with 3 updates (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14537">#14537</a>)</li>
<li><a
href="https://github.com/puppeteer/puppeteer/commit/d3127b7a9a9810e84cf35d75efd66debaffab088"><code>d3127b7</code></a>
fix: roll to Chrome 143.0.7499.192 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/14541">#14541</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.34.0...puppeteer-v24.35.0">compare
view</a></li>
</ul>
</details>
<br />


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

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
2026-01-12 10:17:34 +00:00
Lakshan Perera 9a51af219f feat: Allow opting out of default Chrome launch arguments (#729)
Related Issue -
https://github.com/ChromeDevTools/chrome-devtools-mcp/issues/430

### Description

When Chrome is launched via Puppeteer, it automatically adds a set of
default flags like `--enable-automation --disable-extensions
--disable-component-extensions-with-background-pages.`

Currently, there is no way to opt out of these defaults, which makes
certain use cases difficult or impossible to support. this PR adds a way
to selectively ignore specific default Chrome launch flags applied by
Puppeteer using its
[ignoreDefaultArgs](https://pptr.dev/api/puppeteer.launchoptions#ignoredefaultargs)
property.

```json
{
  "name": "chrome-devtools-mcp",
  "version": "latest",
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": [
        "chrome-devtools-mcp@latest",
        "--ignore-default-chrome-arg='--enable-automation'",
        "--ignore-default-chrome-arg='--disable-extensions'"
      ]
    }
  }
}
```

**Feedback appreciated** @OrKoN
2026-01-12 10:08:18 +00:00
maroKanatani 1f532b8faf docs: claude code broken link (#707)
I fixed the broken link to Claude Code in the README.
2026-01-12 10:03:10 +00:00
dependabot[bot] 0e1b8fe03c chore(deps-dev): bump the dev-dependencies group with 2 updates (#750)
Bumps the dev-dependencies group with 2 updates:
[@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin)
and
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node).

Updates `@stylistic/eslint-plugin` from 5.6.1 to 5.7.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/eslint-stylistic/eslint-stylistic/releases"><code>@​stylistic/eslint-plugin</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v5.7.0</h2>
<h2><a
href="https://github.com/eslint-stylistic/eslint-stylistic/compare/v5.6.1...v5.7.0">5.7.0</a>
(2026-01-09)</h2>
<h3>Features</h3>
<ul>
<li><strong>customize:</strong> allow indent option as full rule options
(<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1091">#1091</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/ab50c7170d855d2833c7381a0401ce4f1a7e4259">ab50c71</a>)</li>
<li>deprecate <code>jsx-sort-props</code> in favor of
<code>eslint-plugin-perfectionist</code> (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1071">#1071</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/622b88885006cd1cd1e5ebfb1d665176505ada61">622b888</a>)</li>
<li><strong>dot-location:</strong> support <code>MetaProperty</code>,
<code>TSQualifiedName</code>, <code>TSImportType</code>,
<code>JSXMemberExpression</code> (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1063">#1063</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/c296e42fc8ae8c2b48379aa7f06ee092aa7bc7f3">c296e42</a>)</li>
<li><strong>eol-last:</strong> improve to make language-agnostic (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1051">#1051</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/9152494b67f71e0278231fdf1eeb08445b0d64d2">9152494</a>)</li>
<li><strong>linebreak-style:</strong> improve to make language-agnostic
(<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1050">#1050</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/132926d6bb7e5e195d7ae9f7e9d8c2c3a3a543a1">132926d</a>)</li>
<li><strong>type-annotation-spacing:</strong> allow ignore check
<code>arrow</code> (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1080">#1080</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/1aaf61f39fc2bb036c75ee3460e73a870f738633">1aaf61f</a>)</li>
<li>update deps, support <code>@​typescript-eslint/parser</code>
&gt;=8.48.0 (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1095">#1095</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/172ef89d6b19c0fdf974a041a67d5b9f24f7c827">172ef89</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>list-style:</strong> replace text range with delimiter
directly (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1062">#1062</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/c2ac3483e9baf10187e71756931f19b2f2b50a51">c2ac348</a>)</li>
<li><strong>object-curly-spacing:</strong> allow space before comment in
multi-line objects (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1076">#1076</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/d73c03e970b50980b02a754596e352fd86cedaaf">d73c03e</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>fix command to run docs (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1058">#1058</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/f5974417fa5e2f00c661e443f510dbe72cdd4777">f597441</a>)</li>
</ul>
<h3>Build Related</h3>
<ul>
<li><strong>deps:</strong> bump actions/checkout from 5 to 6 (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1061">#1061</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/767efe49154ac91bce0c8556d735eed266988d57">767efe4</a>)</li>
<li><strong>deps:</strong> bump actions/download-artifact from 6 to 7
(<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1067">#1067</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/272e75d7caf535504cd9e8a0e2c16bb9d17117dc">272e75d</a>)</li>
<li><strong>deps:</strong> bump actions/upload-artifact from 5 to 6 (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1068">#1068</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/50239e30603d030b6ef4bec3acdd66f2b73bee8d">50239e3</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>docs:</strong> extract local vite plugins from
<code>vite.config.ts</code> (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1081">#1081</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/79e6c6b8289869ecaf4bfa189eefa6879620fa5a">79e6c6b</a>)</li>
<li><strong>indent:</strong> simplify handling of
<code>TSConditionalType</code> (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1075">#1075</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/233c9678b312f3e816984a2ddfe34c7e376ec553">233c967</a>)</li>
<li><strong>indent:</strong> simplify handling of
<code>TSMappedType</code> (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1073">#1073</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/30b6bb35e54c7db315305a9cc4c30a4722d03ad5">30b6bb3</a>)</li>
<li><strong>member-delimiter-style:</strong> use auto-generated types
(<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1089">#1089</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/580164b91190b19ecbe643ffdaca5431e37bec9d">580164b</a>)</li>
<li><strong>padding-line-between-statements:</strong> use auto-generated
types (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1090">#1090</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/a80aefb09ff022f8ff2134720c82a3d0d1ff236e">a80aefb</a>)</li>
<li>replace <code>hasCommentsBetween</code> with
<code>sourceCode.commentsExistBetween</code> (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1094">#1094</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/77e1370147573afcd5958c5fe921ce2b0ffc21bf">77e1370</a>)</li>
<li><strong>test-utils:</strong> replace language conditionals with a
config object (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1064">#1064</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/e78a122232e6b1a52d8fff550dfbe8793dd8c6c8">e78a122</a>)</li>
<li><strong>utils:</strong> simplify type guards, cleanup typings &amp;
docs (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1086">#1086</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/843428ebf94dbe2013d93032271064fb8a5660de">843428e</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/eslint-stylistic/eslint-stylistic/blob/main/CHANGELOG.md"><code>@​stylistic/eslint-plugin</code>'s
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/eslint-stylistic/eslint-stylistic/compare/v5.6.1...v5.7.0">5.7.0</a>
(2026-01-09)</h2>
<h3>Features</h3>
<ul>
<li><strong>customize:</strong> allow indent option as full rule options
(<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1091">#1091</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/ab50c7170d855d2833c7381a0401ce4f1a7e4259">ab50c71</a>)</li>
<li>deprecate <code>jsx-sort-props</code> in favor of
<code>eslint-plugin-perfectionist</code> (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1071">#1071</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/622b88885006cd1cd1e5ebfb1d665176505ada61">622b888</a>)</li>
<li><strong>dot-location:</strong> support <code>MetaProperty</code>,
<code>TSQualifiedName</code>, <code>TSImportType</code>,
<code>JSXMemberExpression</code> (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1063">#1063</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/c296e42fc8ae8c2b48379aa7f06ee092aa7bc7f3">c296e42</a>)</li>
<li><strong>eol-last:</strong> improve to make language-agnostic (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1051">#1051</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/9152494b67f71e0278231fdf1eeb08445b0d64d2">9152494</a>)</li>
<li><strong>linebreak-style:</strong> improve to make language-agnostic
(<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1050">#1050</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/132926d6bb7e5e195d7ae9f7e9d8c2c3a3a543a1">132926d</a>)</li>
<li><strong>type-annotation-spacing:</strong> allow ignore check
<code>arrow</code> (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1080">#1080</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/1aaf61f39fc2bb036c75ee3460e73a870f738633">1aaf61f</a>)</li>
<li>update deps, support <code>@​typescript-eslint/parser</code>
&gt;=8.48.0 (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1095">#1095</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/172ef89d6b19c0fdf974a041a67d5b9f24f7c827">172ef89</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>list-style:</strong> replace text range with delimiter
directly (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1062">#1062</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/c2ac3483e9baf10187e71756931f19b2f2b50a51">c2ac348</a>)</li>
<li><strong>object-curly-spacing:</strong> allow space before comment in
multi-line objects (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1076">#1076</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/d73c03e970b50980b02a754596e352fd86cedaaf">d73c03e</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>fix command to run docs (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1058">#1058</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/f5974417fa5e2f00c661e443f510dbe72cdd4777">f597441</a>)</li>
</ul>
<h3>Build Related</h3>
<ul>
<li><strong>deps:</strong> bump actions/checkout from 5 to 6 (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1061">#1061</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/767efe49154ac91bce0c8556d735eed266988d57">767efe4</a>)</li>
<li><strong>deps:</strong> bump actions/download-artifact from 6 to 7
(<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1067">#1067</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/272e75d7caf535504cd9e8a0e2c16bb9d17117dc">272e75d</a>)</li>
<li><strong>deps:</strong> bump actions/upload-artifact from 5 to 6 (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1068">#1068</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/50239e30603d030b6ef4bec3acdd66f2b73bee8d">50239e3</a>)</li>
</ul>
<h3>Chores</h3>
<ul>
<li><strong>docs:</strong> extract local vite plugins from
<code>vite.config.ts</code> (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1081">#1081</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/79e6c6b8289869ecaf4bfa189eefa6879620fa5a">79e6c6b</a>)</li>
<li><strong>indent:</strong> simplify handling of
<code>TSConditionalType</code> (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1075">#1075</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/233c9678b312f3e816984a2ddfe34c7e376ec553">233c967</a>)</li>
<li><strong>indent:</strong> simplify handling of
<code>TSMappedType</code> (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1073">#1073</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/30b6bb35e54c7db315305a9cc4c30a4722d03ad5">30b6bb3</a>)</li>
<li><strong>member-delimiter-style:</strong> use auto-generated types
(<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1089">#1089</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/580164b91190b19ecbe643ffdaca5431e37bec9d">580164b</a>)</li>
<li><strong>padding-line-between-statements:</strong> use auto-generated
types (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1090">#1090</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/a80aefb09ff022f8ff2134720c82a3d0d1ff236e">a80aefb</a>)</li>
<li>replace <code>hasCommentsBetween</code> with
<code>sourceCode.commentsExistBetween</code> (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1094">#1094</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/77e1370147573afcd5958c5fe921ce2b0ffc21bf">77e1370</a>)</li>
<li><strong>test-utils:</strong> replace language conditionals with a
config object (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1064">#1064</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/e78a122232e6b1a52d8fff550dfbe8793dd8c6c8">e78a122</a>)</li>
<li><strong>utils:</strong> simplify type guards, cleanup typings &amp;
docs (<a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/1086">#1086</a>)
(<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/843428ebf94dbe2013d93032271064fb8a5660de">843428e</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/94ba6b3f25d8f92d300fe0eda87181d7115bb708"><code>94ba6b3</code></a>
chore: release v5.7.0 (main) (<a
href="https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin/issues/1060">#1060</a>)</li>
<li><a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/172ef89d6b19c0fdf974a041a67d5b9f24f7c827"><code>172ef89</code></a>
feat: update deps, support <code>@​typescript-eslint/parser</code>
&gt;=8.48.0 (<a
href="https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin/issues/1095">#1095</a>)</li>
<li><a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/ab50c7170d855d2833c7381a0401ce4f1a7e4259"><code>ab50c71</code></a>
feat(customize): allow indent option as full rule options (<a
href="https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin/issues/1091">#1091</a>)</li>
<li><a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/77e1370147573afcd5958c5fe921ce2b0ffc21bf"><code>77e1370</code></a>
refactor: replace <code>hasCommentsBetween</code> with
<code>sourceCode.commentsExistBetween</code>...</li>
<li><a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/6494fdc6d379feb403b7c79e99d7f5554e47034d"><code>6494fdc</code></a>
chore: cleanup unused constants (<a
href="https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin/issues/1093">#1093</a>)</li>
<li><a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/a80aefb09ff022f8ff2134720c82a3d0d1ff236e"><code>a80aefb</code></a>
refactor(padding-line-between-statements): use auto-generated types (<a
href="https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin/issues/1090">#1090</a>)</li>
<li><a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/580164b91190b19ecbe643ffdaca5431e37bec9d"><code>580164b</code></a>
refactor(member-delimiter-style): use auto-generated types (<a
href="https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin/issues/1089">#1089</a>)</li>
<li><a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/622b88885006cd1cd1e5ebfb1d665176505ada61"><code>622b888</code></a>
feat: deprecate <code>jsx-sort-props</code> in favor of
<code>eslint-plugin-perfectionist</code> (#...</li>
<li><a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/1aaf61f39fc2bb036c75ee3460e73a870f738633"><code>1aaf61f</code></a>
feat(type-annotation-spacing): allow ignore check <code>arrow</code> (<a
href="https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin/issues/1080">#1080</a>)</li>
<li><a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/d73c03e970b50980b02a754596e352fd86cedaaf"><code>d73c03e</code></a>
fix(object-curly-spacing): allow space before comment in multi-line
objects (...</li>
<li>Additional commits viewable in <a
href="https://github.com/eslint-stylistic/eslint-stylistic/commits/v5.7.0/packages/eslint-plugin">compare
view</a></li>
</ul>
</details>
<br />

Updates `@types/node` from 25.0.3 to 25.0.6
<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 />


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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
2026-01-12 10:02:55 +00:00