feat: add a skill for detecting memory leaks using take_memory_snapshot tool#1162
feat: add a skill for detecting memory leaks using take_memory_snapshot tool#1162
Conversation
natorion
left a comment
There was a problem hiding this comment.
Should mlippautz@ also take a look?
|
This generally looks good and I am curious to actually try it out :) |
|
Note: some tooling like Bun provide a way to export this information as Markdown - https://bun.com/docs/project/benchmarking#markdown-output-2 |
Seems like the source for this is at https://github.com/oven-sh/bun/blob/a305e99af5d9dbe74ffabfa5a3c0cfdf815ac71a/src/bun.js/bindings/BunHeapProfiler.cpp#L568. Can we embed that as a pythons script or TS script somehow? |
…d group (#1159) Bumps the bundled group with 1 update: [puppeteer](https://github.com/puppeteer/puppeteer). Updates `puppeteer` from 24.38.0 to 24.39.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.39.0</h2> <h2><a href="https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v24.38.0...puppeteer-core-v24.39.0">24.39.0</a> (2026-03-10)</h2> <h3>🎉 Features</h3> <ul> <li>expose Page.hasDevTools (<a href="https://redirect.github.com/puppeteer/puppeteer/issues/14758">#14758</a>) (<a href="https://github.com/puppeteer/puppeteer/commit/5ed7e7784a3e23bd1b42b8f0d041a74709a1bf4e">5ed7e77</a>)</li> </ul> <h3>🛠️ Fixes</h3> <ul> <li>roll to Chrome 146.0.7680.66 (<a href="https://redirect.github.com/puppeteer/puppeteer/issues/14752">#14752</a>) (<a href="https://github.com/puppeteer/puppeteer/commit/60ace04425d1ad4e99732298ed51839f09adcb0a">60ace04</a>)</li> </ul> <h2>puppeteer: v24.39.0</h2> <h2><a href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.38.0...puppeteer-v24.39.0">24.39.0</a> (2026-03-10)</h2> <h3>♻️ Chores</h3> <ul> <li><strong>puppeteer:</strong> Synchronize puppeteer versions</li> </ul> <h3>Dependencies</h3> <ul> <li>The following workspace dependencies were updated <ul> <li>dependencies <ul> <li>puppeteer-core bumped from 24.38.0 to 24.39.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.38.0...puppeteer-v24.39.0">24.39.0</a> (2026-03-10)</h2> <h3>♻️ Chores</h3> <ul> <li><strong>puppeteer:</strong> Synchronize puppeteer versions</li> </ul> <h3>Dependencies</h3> <ul> <li>The following workspace dependencies were updated <ul> <li>dependencies <ul> <li>puppeteer-core bumped from 24.38.0 to 24.39.0</li> </ul> </li> </ul> </li> </ul> <h3>🎉 Features</h3> <ul> <li>expose Page.hasDevTools (<a href="https://redirect.github.com/puppeteer/puppeteer/issues/14758">#14758</a>) (<a href="https://github.com/puppeteer/puppeteer/commit/5ed7e7784a3e23bd1b42b8f0d041a74709a1bf4e">5ed7e77</a>)</li> </ul> <h3>🛠️ Fixes</h3> <ul> <li>roll to Chrome 146.0.7680.66 (<a href="https://redirect.github.com/puppeteer/puppeteer/issues/14752">#14752</a>) (<a href="https://github.com/puppeteer/puppeteer/commit/60ace04425d1ad4e99732298ed51839f09adcb0a">60ace04</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/puppeteer/puppeteer/commit/cbadc53bb7e699cc6b6ff07946fda4c1d121015e"><code>cbadc53</code></a> chore: release main (<a href="https://redirect.github.com/puppeteer/puppeteer/issues/14757">#14757</a>)</li> <li><a href="https://github.com/puppeteer/puppeteer/commit/5ed7e7784a3e23bd1b42b8f0d041a74709a1bf4e"><code>5ed7e77</code></a> feat: expose Page.hasDevTools (<a href="https://redirect.github.com/puppeteer/puppeteer/issues/14758">#14758</a>)</li> <li><a href="https://github.com/puppeteer/puppeteer/commit/60ace04425d1ad4e99732298ed51839f09adcb0a"><code>60ace04</code></a> fix: roll to Chrome 146.0.7680.66 (<a href="https://redirect.github.com/puppeteer/puppeteer/issues/14752">#14752</a>)</li> <li><a href="https://github.com/puppeteer/puppeteer/commit/4d0851287a3d578a75dd6d941fdf86d016bb493b"><code>4d08512</code></a> chore(deps-dev): bump <code>@swc/core</code> from 1.15.17 to 1.15.18 in /website in the al...</li> <li><a href="https://github.com/puppeteer/puppeteer/commit/8b64a281cc4df66feb77f3dfc4178fe04a1e8e72"><code>8b64a28</code></a> chore(deps): bump the all group with 5 updates (<a href="https://redirect.github.com/puppeteer/puppeteer/issues/14755">#14755</a>)</li> <li><a href="https://github.com/puppeteer/puppeteer/commit/a5ba71ab242a078b259188f091677386400d4e79"><code>a5ba71a</code></a> chore: reduce flakiness in touch tests (<a href="https://redirect.github.com/puppeteer/puppeteer/issues/14751">#14751</a>)</li> <li><a href="https://github.com/puppeteer/puppeteer/commit/d3c93afcce23a8d5262922ad603ab69a75313fa1"><code>d3c93af</code></a> ci: update changelog sections (<a href="https://redirect.github.com/puppeteer/puppeteer/issues/14750">#14750</a>)</li> <li><a href="https://github.com/puppeteer/puppeteer/commit/bca52c3257f1aff4a100f01a8576102daed47a79"><code>bca52c3</code></a> ci: only run stale on bug issues (<a href="https://redirect.github.com/puppeteer/puppeteer/issues/14749">#14749</a>)</li> <li><a href="https://github.com/puppeteer/puppeteer/commit/282f935e34574381c648c07288beb9e4d44f51de"><code>282f935</code></a> chore(deps): bump svgo from 3.3.2 to 3.3.3 in /website (<a href="https://redirect.github.com/puppeteer/puppeteer/issues/14747">#14747</a>)</li> <li>See full diff in <a href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.38.0...puppeteer-v24.39.0">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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.3.5 to 25.4.0 <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare view</a></li> </ul> </details> <br /> Updates `@typescript-eslint/eslint-plugin` from 8.56.1 to 8.57.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.57.0</h2> <h2>8.57.0 (2026-03-09)</h2> <h3>🚀 Features</h3> <ul> <li><strong>eslint-plugin:</strong> [no-unnecessary-condition] allow literal loop conditions in for/do loops (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12080">#12080</a>)</li> </ul> <h3>🩹 Fixes</h3> <ul> <li><strong>eslint-plugin:</strong> [strict-void-return] false positives with overloads (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12055">#12055</a>)</li> <li><strong>eslint-plugin:</strong> handle statically analyzable computed keys in prefer-readonly (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12079">#12079</a>)</li> <li><strong>eslint-plugin:</strong> guard against negative paramIndex in no-useless-default-assignment (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12077">#12077</a>)</li> <li><strong>eslint-plugin:</strong> [prefer-promise-reject-errors] add allow <code>TypeOrValueSpecifier</code> to prefer-promise-reject-errors (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12094">#12094</a>)</li> <li><strong>eslint-plugin:</strong> [no-base-to-string] fix false positive for toString with overloads (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12089">#12089</a>)</li> <li><strong>typescript-estree:</strong> switch back to use <code>ts.getModifiers()</code> (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12034">#12034</a>)</li> <li><strong>typescript-estree:</strong> if the template literal is tagged and the text has an invalid escape, <code>cooked</code> will be <code>null</code> (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11355">#11355</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>Brad Zacher <a href="https://github.com/bradzacher"><code>@bradzacher</code></a></li> <li>Brian Schlenker <a href="https://github.com/bschlenk"><code>@bschlenk</code></a></li> <li>Evyatar Daud <a href="https://github.com/StyleShit"><code>@StyleShit</code></a></li> <li>fisker Cheung <a href="https://github.com/fisker"><code>@fisker</code></a></li> <li>James Henry <a href="https://github.com/JamesHenry"><code>@JamesHenry</code></a></li> <li>Josh Goldberg</li> <li>Kirk Waiblinger <a href="https://github.com/kirkwaiblinger"><code>@kirkwaiblinger</code></a></li> <li>Moses Odutusin <a href="https://github.com/thebolarin"><code>@thebolarin</code></a></li> <li>Newton Yuan <a href="https://github.com/NewtonYuan"><code>@NewtonYuan</code></a></li> <li>SungHyun627 <a href="https://github.com/SungHyun627"><code>@SungHyun627</code></a></li> <li>Younsang Na <a href="https://github.com/nayounsang"><code>@nayounsang</code></a></li> </ul> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.57.0">GitHub Releases</a> for more information.</p> <p>You can read about our <a href="https://typescript-eslint.io/users/versioning">versioning strategy</a> and <a href="https://typescript-eslint.io/users/releases">releases</a> on our website.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md"><code>@typescript-eslint/eslint-plugin</code>'s changelog</a>.</em></p> <blockquote> <h2>8.57.0 (2026-03-09)</h2> <h3>🚀 Features</h3> <ul> <li><strong>eslint-plugin:</strong> [no-unnecessary-condition] allow literal loop conditions in for/do loops (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12080">#12080</a>)</li> </ul> <h3>🩹 Fixes</h3> <ul> <li><strong>eslint-plugin:</strong> [no-base-to-string] fix false positive for toString with overloads (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12089">#12089</a>)</li> <li><strong>eslint-plugin:</strong> [prefer-promise-reject-errors] add allow <code>TypeOrValueSpecifier</code> to prefer-promise-reject-errors (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12094">#12094</a>)</li> <li><strong>typescript-estree:</strong> if the template literal is tagged and the text has an invalid escape, <code>cooked</code> will be <code>null</code> (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11355">#11355</a>)</li> <li><strong>eslint-plugin:</strong> guard against negative paramIndex in no-useless-default-assignment (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12077">#12077</a>)</li> <li><strong>eslint-plugin:</strong> handle statically analyzable computed keys in prefer-readonly (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12079">#12079</a>)</li> <li><strong>eslint-plugin:</strong> [strict-void-return] false positives with overloads (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12055">#12055</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>Brad Zacher <a href="https://github.com/bradzacher"><code>@bradzacher</code></a></li> <li>Brian Schlenker <a href="https://github.com/bschlenk"><code>@bschlenk</code></a></li> <li>Evyatar Daud <a href="https://github.com/StyleShit"><code>@StyleShit</code></a></li> <li>James Henry <a href="https://github.com/JamesHenry"><code>@JamesHenry</code></a></li> <li>Josh Goldberg</li> <li>Kirk Waiblinger <a href="https://github.com/kirkwaiblinger"><code>@kirkwaiblinger</code></a></li> <li>Moses Odutusin <a href="https://github.com/thebolarin"><code>@thebolarin</code></a></li> <li>Newton Yuan <a href="https://github.com/NewtonYuan"><code>@NewtonYuan</code></a></li> <li>SungHyun627 <a href="https://github.com/SungHyun627"><code>@SungHyun627</code></a></li> <li>Younsang Na <a href="https://github.com/nayounsang"><code>@nayounsang</code></a></li> </ul> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.57.0">GitHub Releases</a> for more information.</p> <p>You can read about our <a href="https://typescript-eslint.io/users/versioning">versioning strategy</a> and <a href="https://typescript-eslint.io/users/releases">releases</a> on our website.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/2c6aeeec238dfea860b9f3c146a55f8f49f15cf5"><code>2c6aeee</code></a> chore(release): publish 8.57.0</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/46bf066d3df4af9aa8804a383e0d6d407a8e79f0"><code>46bf066</code></a> docs(eslint-plugin): document no-unnecessary-condition limitation with object...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/f696dadfc37078efe4119ad2ab0609cde3e42766"><code>f696dad</code></a> chore: use pnpm catalog (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/12047">#12047</a>)</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/2029c78dcbe11b7e750af588d3c47f1211f02798"><code>2029c78</code></a> fix(eslint-plugin): [no-base-to-string] fix false positive for toString with ...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/0f4f101a125487bc07db323288afb86d5247bc31"><code>0f4f101</code></a> fix(eslint-plugin): [prefer-promise-reject-errors] add allow `TypeOrValueSpec...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/53f473b7a8c46094623712ba69a627182d049a5b"><code>53f473b</code></a> fix(typescript-estree): if the template literal is tagged and the text has an...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/2291b81f99670319618192645519a056fdb94cf4"><code>2291b81</code></a> docs: minor grammar adjustment (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/12112">#12112</a>)</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/fc5cd09de85600134ca0885ad5cdcedcddcd20ba"><code>fc5cd09</code></a> fix(eslint-plugin): guard against negative paramIndex in no-useless-default-a...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/adc2aad848fe1ac8044ba4a8d84daf8bb1939ced"><code>adc2aad</code></a> fix(eslint-plugin): handle statically analyzable computed keys in prefer-read...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/85badfffbf38730772afbffaa6d024592752664a"><code>85badff</code></a> fix(eslint-plugin): [strict-void-return] false positives with overloads (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/12055">#12055</a>)</li> <li>Additional commits viewable in <a href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.57.0/packages/eslint-plugin">compare view</a></li> </ul> </details> <br /> Updates `@typescript-eslint/parser` from 8.56.1 to 8.57.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.57.0</h2> <h2>8.57.0 (2026-03-09)</h2> <h3>🚀 Features</h3> <ul> <li><strong>eslint-plugin:</strong> [no-unnecessary-condition] allow literal loop conditions in for/do loops (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12080">#12080</a>)</li> </ul> <h3>🩹 Fixes</h3> <ul> <li><strong>eslint-plugin:</strong> [strict-void-return] false positives with overloads (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12055">#12055</a>)</li> <li><strong>eslint-plugin:</strong> handle statically analyzable computed keys in prefer-readonly (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12079">#12079</a>)</li> <li><strong>eslint-plugin:</strong> guard against negative paramIndex in no-useless-default-assignment (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12077">#12077</a>)</li> <li><strong>eslint-plugin:</strong> [prefer-promise-reject-errors] add allow <code>TypeOrValueSpecifier</code> to prefer-promise-reject-errors (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12094">#12094</a>)</li> <li><strong>eslint-plugin:</strong> [no-base-to-string] fix false positive for toString with overloads (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12089">#12089</a>)</li> <li><strong>typescript-estree:</strong> switch back to use <code>ts.getModifiers()</code> (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12034">#12034</a>)</li> <li><strong>typescript-estree:</strong> if the template literal is tagged and the text has an invalid escape, <code>cooked</code> will be <code>null</code> (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11355">#11355</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>Brad Zacher <a href="https://github.com/bradzacher"><code>@bradzacher</code></a></li> <li>Brian Schlenker <a href="https://github.com/bschlenk"><code>@bschlenk</code></a></li> <li>Evyatar Daud <a href="https://github.com/StyleShit"><code>@StyleShit</code></a></li> <li>fisker Cheung <a href="https://github.com/fisker"><code>@fisker</code></a></li> <li>James Henry <a href="https://github.com/JamesHenry"><code>@JamesHenry</code></a></li> <li>Josh Goldberg</li> <li>Kirk Waiblinger <a href="https://github.com/kirkwaiblinger"><code>@kirkwaiblinger</code></a></li> <li>Moses Odutusin <a href="https://github.com/thebolarin"><code>@thebolarin</code></a></li> <li>Newton Yuan <a href="https://github.com/NewtonYuan"><code>@NewtonYuan</code></a></li> <li>SungHyun627 <a href="https://github.com/SungHyun627"><code>@SungHyun627</code></a></li> <li>Younsang Na <a href="https://github.com/nayounsang"><code>@nayounsang</code></a></li> </ul> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.57.0">GitHub Releases</a> for more information.</p> <p>You can read about our <a href="https://typescript-eslint.io/users/versioning">versioning strategy</a> and <a href="https://typescript-eslint.io/users/releases">releases</a> on our website.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md"><code>@typescript-eslint/parser</code>'s changelog</a>.</em></p> <blockquote> <h2>8.57.0 (2026-03-09)</h2> <p>This was a version bump only for parser to align it with other projects, there were no code changes.</p> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.57.0">GitHub Releases</a> for more information.</p> <p>You can read about our <a href="https://typescript-eslint.io/users/versioning">versioning strategy</a> and <a href="https://typescript-eslint.io/users/releases">releases</a> on our website.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/2c6aeeec238dfea860b9f3c146a55f8f49f15cf5"><code>2c6aeee</code></a> chore(release): publish 8.57.0</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/f696dadfc37078efe4119ad2ab0609cde3e42766"><code>f696dad</code></a> chore: use pnpm catalog (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser/issues/12047">#12047</a>)</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/a09921e2de2e8790e6a803016b825815ca9409d8"><code>a09921e</code></a> chore: update vitest to 4.x (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser/issues/12071">#12071</a>)</li> <li>See full diff in <a href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.57.0/packages/parser">compare view</a></li> </ul> </details> <br /> Updates `typescript-eslint` from 8.56.1 to 8.57.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.57.0</h2> <h2>8.57.0 (2026-03-09)</h2> <h3>🚀 Features</h3> <ul> <li><strong>eslint-plugin:</strong> [no-unnecessary-condition] allow literal loop conditions in for/do loops (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12080">#12080</a>)</li> </ul> <h3>🩹 Fixes</h3> <ul> <li><strong>eslint-plugin:</strong> [strict-void-return] false positives with overloads (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12055">#12055</a>)</li> <li><strong>eslint-plugin:</strong> handle statically analyzable computed keys in prefer-readonly (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12079">#12079</a>)</li> <li><strong>eslint-plugin:</strong> guard against negative paramIndex in no-useless-default-assignment (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12077">#12077</a>)</li> <li><strong>eslint-plugin:</strong> [prefer-promise-reject-errors] add allow <code>TypeOrValueSpecifier</code> to prefer-promise-reject-errors (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12094">#12094</a>)</li> <li><strong>eslint-plugin:</strong> [no-base-to-string] fix false positive for toString with overloads (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12089">#12089</a>)</li> <li><strong>typescript-estree:</strong> switch back to use <code>ts.getModifiers()</code> (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12034">#12034</a>)</li> <li><strong>typescript-estree:</strong> if the template literal is tagged and the text has an invalid escape, <code>cooked</code> will be <code>null</code> (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11355">#11355</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>Brad Zacher <a href="https://github.com/bradzacher"><code>@bradzacher</code></a></li> <li>Brian Schlenker <a href="https://github.com/bschlenk"><code>@bschlenk</code></a></li> <li>Evyatar Daud <a href="https://github.com/StyleShit"><code>@StyleShit</code></a></li> <li>fisker Cheung <a href="https://github.com/fisker"><code>@fisker</code></a></li> <li>James Henry <a href="https://github.com/JamesHenry"><code>@JamesHenry</code></a></li> <li>Josh Goldberg</li> <li>Kirk Waiblinger <a href="https://github.com/kirkwaiblinger"><code>@kirkwaiblinger</code></a></li> <li>Moses Odutusin <a href="https://github.com/thebolarin"><code>@thebolarin</code></a></li> <li>Newton Yuan <a href="https://github.com/NewtonYuan"><code>@NewtonYuan</code></a></li> <li>SungHyun627 <a href="https://github.com/SungHyun627"><code>@SungHyun627</code></a></li> <li>Younsang Na <a href="https://github.com/nayounsang"><code>@nayounsang</code></a></li> </ul> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.57.0">GitHub Releases</a> for more information.</p> <p>You can read about our <a href="https://typescript-eslint.io/users/versioning">versioning strategy</a> and <a href="https://typescript-eslint.io/users/releases">releases</a> on our website.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md">typescript-eslint's changelog</a>.</em></p> <blockquote> <h2>8.57.0 (2026-03-09)</h2> <p>This was a version bump only for typescript-eslint to align it with other projects, there were no code changes.</p> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.57.0">GitHub Releases</a> for more information.</p> <p>You can read about our <a href="https://typescript-eslint.io/users/versioning">versioning strategy</a> and <a href="https://typescript-eslint.io/users/releases">releases</a> on our website.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/2c6aeeec238dfea860b9f3c146a55f8f49f15cf5"><code>2c6aeee</code></a> chore(release): publish 8.57.0</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/f696dadfc37078efe4119ad2ab0609cde3e42766"><code>f696dad</code></a> chore: use pnpm catalog (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint/issues/12047">#12047</a>)</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/a09921e2de2e8790e6a803016b825815ca9409d8"><code>a09921e</code></a> chore: update vitest to 4.x (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint/issues/12071">#12071</a>)</li> <li>See full diff in <a href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.57.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 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>
This PR enables an alternative CLI interface for Chrome DevTools MCP. `chrome-devtools` can be used in shell scripts to automate the Chrome DevTools MCP session running as a daemon process. Currently, a single session is shared between all `chrome-devtools` calls. All tools available by default are included into the CLI. Examples: ```bash ❯ chrome-devtools navigate_page --url https://example.com Successfully navigated to https://example.com. ## Pages 1: https://example.com/ [selected] ❯ chrome-devtools lighthouse_audit ## Lighthouse Audit Results Mode: navigation Device: desktop URL: https://example.com/ ### Category Scores - Accessibility: 96 (accessibility) - Best Practices: 96 (best-practices) - SEO: 80 (seo) ### Audit Summary Passed: 30 Failed: 4 Total Timing: 4107.22ms ### Reports - /var/folders/hq/m1wr43z9665g5pghys7gkc2w00r23k/T/chrome-devtools-mcp-l5LRIT/report.json - /var/folders/hq/m1wr43z9665g5pghys7gkc2w00r23k/T/chrome-devtools-mcp-3o6rcM/report.htm ``` ```sh ❯ chrome-devtools lighthouse_audit --format=json | jq { "lighthouseResult": { "summary": { "mode": "navigation", "device": "desktop", "url": "https://example.com/", "scores": [ { "id": "accessibility", "title": "Accessibility", "score": 0.96 }, { "id": "best-practices", "title": "Best Practices", "score": 0.96 }, { "id": "seo", "title": "SEO", "score": 0.8 } ], "audits": { "failed": 4, "passed": 30 }, "timing": { "total": 3754.87 } }, "reports": [ "/var/folders/hq/m1wr43z9665g5pghys7gkc2w00r23k/T/chrome-devtools-mcp-nbLj82/report.json", "/var/folders/hq/m1wr43z9665g5pghys7gkc2w00r23k/T/chrome-devtools-mcp-VTp35b/report.html" ] } } ``` To test: ```sh npm ci npm run clean npm run bundle npm pack npm i chrome-devtools-mcp-0.18.1.tgz -g # to install globally ``` --------- Co-authored-by: Mathias Bynens <mathias@qiwi.be>
5762e61 to
3cad505
Compare
Is there an advantage to .md format instead of raw .heapsnaphot files? |
|
I added the compare_snapshots.js script as a fallback to memlab to compare snapshot and rewrote some of the skills guidance to include remarks from the review. PTAL |
From the post I am seeing it's ease of use with LLM, as it can directly use the data without needing to do other steps. |
|
Added a possible follow up issue for retaining path: #1224 |
…ot tool (ChromeDevTools#1162) This PR add a new skill for detecting and removing memory leaks using take_memory_snapshot tool. Skill was based on authoritative material from own sources: * https://developer.chrome.com/docs/devtools/memory-problems * https://web.dev/articles/effectivemanagement as well as examples of memory leaks from public domain. It can be tested with https://github.com/devnook/mem-leak-example. Example prompt * A page running at localhost:3000 has memory issues when you click from home to contact tab and back. Can you fix it? The skill prefers using comparison tools like memlab instead of custom evaluate_script snippets to avoid directly reading of .heapsnpashot files to save context space and tokens. Fixes ChromeDevTools#1056 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Yusheng <113574546+yshngg@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alex Rudenko <OrKoN@users.noreply.github.com> Co-authored-by: Mathias Bynens <mathias@qiwi.be>
🤖 I have created a release *beep* *boop* --- ## [0.21.0](chrome-devtools-mcp-v0.20.3...chrome-devtools-mcp-v0.21.0) (2026-04-01) ### 🎉 Features * add a skill for detecting memory leaks using take_memory_snapshot tool ([#1162](#1162)) ([d19a235](d19a235)) ### 🛠️ Fixes * **cli:** avoid defaulting to isolated when userDataDir is provided ([#1258](#1258)) ([73e1e24](73e1e24)) * list_pages should work after selected page is closed ([#1145](#1145)) ([2664455](2664455)) * mark lighthouse and memory as non-read-only ([#1769](#1769)) ([bec9dae](bec9dae)) * **telemetry:** record client name ([9a47b65](9a47b65)) * versioning for Claude Code plugin ([#1233](#1233)) ([966b86f](966b86f)) * wrap .mcp.json config in mcpServers key ([#1246](#1246)) ([c7948cf](c7948cf)) ### 📄 Documentation * Command Code CLI instructions for MCP server ([0a7c0a7](0a7c0a7)) * provide disclaimer about supported browsers ([#1237](#1237)) ([8676b72](8676b72)) ### 🏗️ Refactor * set process titles for easier debugging ([#1770](#1770)) ([0fe3896](0fe3896)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
🤖 I have created a release *beep* *boop* --- ## [0.21.0](chrome-devtools-mcp-v0.20.3...chrome-devtools-mcp-v0.21.0) (2026-04-01) ### 🎉 Features * add a skill for detecting memory leaks using take_memory_snapshot tool ([#1162](#1162)) ([d19a235](d19a235)) ### 🛠️ Fixes * **cli:** avoid defaulting to isolated when userDataDir is provided ([#1258](#1258)) ([73e1e24](73e1e24)) * list_pages should work after selected page is closed ([#1145](#1145)) ([2664455](2664455)) * mark lighthouse and memory as non-read-only ([#1769](#1769)) ([bec9dae](bec9dae)) * **telemetry:** record client name ([9a47b65](9a47b65)) * versioning for Claude Code plugin ([#1233](#1233)) ([966b86f](966b86f)) * wrap .mcp.json config in mcpServers key ([#1246](#1246)) ([c7948cf](c7948cf)) ### 📄 Documentation * Command Code CLI instructions for MCP server ([0a7c0a7](0a7c0a7)) * provide disclaimer about supported browsers ([#1237](#1237)) ([8676b72](8676b72)) ### 🏗️ Refactor * set process titles for easier debugging ([#1770](#1770)) ([0fe3896](0fe3896)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: Alex Rudenko <alexrudenko@chromium.org>
This PR add a new skill for detecting and removing memory leaks using take_memory_snapshot tool.
Skill was based on authoritative material from own sources:
as well as examples of memory leaks from public domain.
It can be tested with https://github.com/devnook/mem-leak-example. Example prompt
The skill prefers using comparison tools like memlab instead of custom evaluate_script snippets to avoid directly reading of .heapsnpashot files to save context space and tokens.
Fixes #1056