[openstreetmap/openstreetmap-website] Bump the dependencies group with 5 updates (PR #7234)
dependabot[bot]
notifications at github.com
Wed Jul 15 23:16:55 UTC 2026
Bumps the dependencies group with 5 updates:
| Package | From | To |
| --- | --- | --- |
| [doorkeeper-openid_connect](https://github.com/doorkeeper-gem/doorkeeper-openid_connect) | `1.10.4` | `1.10.5` |
| [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) | `1.226.0` | `1.227.0` |
| [herb](https://github.com/marcoroth/herb) | `0.10.1` | `0.10.2` |
| [selenium-webdriver](https://github.com/SeleniumHQ/selenium) | `4.45.0` | `4.46.0` |
| [simplecov](https://github.com/simplecov-ruby/simplecov) | `0.22.0` | `1.0.1` |
Updates `doorkeeper-openid_connect` from 1.10.4 to 1.10.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/doorkeeper-gem/doorkeeper-openid_connect/releases">doorkeeper-openid_connect's releases</a>.</em></p>
<blockquote>
<h2>v1.10.5</h2>
<ul>
<li><a href="https://redirect.github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/329">#329</a> Restore compatibility with the full <code>doorkeeper >= 5.5</code> range declared in the gemspec (<a href="https://redirect.github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/328">#328</a>). Doorkeeper 5.5.x raised <code>NameError: uninitialized constant Doorkeeper::Orm::ActiveRecord::Mixins</code> at load time (the mixin file ships since 5.5.0 but is only autoloadable since 5.6.0 — it is now required explicitly when absent), and Doorkeeper 5.6/5.7 broke the discovery endpoint because <code>pkce_code_challenge_methods</code> only exists since 5.8.0 (the discovery response now falls back to <code>plain S256</code>, which is what those versions accept). CI now exercises the oldest supported Doorkeeper series via <code>gemfiles/doorkeeper_5.{5,6,7}.gemfile</code></li>
<li><a href="https://redirect.github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/325">#325</a> Remove the dead <code>Claims::AggregatedClaim</code> and <code>Claims::DistributedClaim</code> classes. They have never been required, instantiated, or reachable through the claims DSL (<code>ClaimsBuilder</code> only builds <code>NormalClaim</code>), and the discovery document only advertises <code>claim_types_supported: ["normal"]</code> — the files just shipped in the gem unused since 2016</li>
<li><a href="https://redirect.github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/324">#324</a> Split <code>Helpers::Controller</code> (294 lines, one module) into focused submodules — <code>Prompt</code>, <code>MaxAge</code>, <code>ErrorResponse</code>, <code>TokenMatching</code> — and decompose the two most complex methods (<code>handle_oidc_prompt_param!</code>, <code>handle_oidc_max_age_param!</code>). This is a behavior-preserving refactor that allows dropping the <code>Metrics/ModuleLength</code>, <code>Metrics/CyclomaticComplexity</code> and <code>Metrics/PerceivedComplexity</code> overrides from <code>.rubocop_todo.yml</code>; the codebase now passes those cops at RuboCop's default thresholds</li>
<li><a href="https://redirect.github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/326">#326</a> Make the dynamic client registration spec robust against pre-existing <code>Doorkeeper::Application</code> rows: replace absolute <code>Application.count</code> assertions and <code>Application.first</code> lookups with relative <code>change</code> matchers and <code>Application.find_by(uid:)</code> lookups keyed on the <code>client_id</code> returned by each request. With a polluted <code>test.sqlite3</code> (e.g. left behind by a <code>rake server</code> session against the same dummy app) 12 of the 20 examples failed spuriously; they now pass regardless of prior DB state</li>
<li><a href="https://redirect.github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/327">#327</a> Document previously-undocumented config options in the generated initializer template: <code>authorize_dynamic_client_registration</code> (DCR endpoint authorization gate), <code>apply_prompt_to_non_oidc_requests</code>, <code>end_session_endpoint</code>, <code>discovery_url_options</code>, and the <code>response:</code> option for claims (controlling whether a claim appears in the ID Token, UserInfo, or both). No behavior change</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/doorkeeper-gem/doorkeeper-openid_connect/blob/master/CHANGELOG.md">doorkeeper-openid_connect's changelog</a>.</em></p>
<blockquote>
<h2>v1.10.5 (2026-07-09)</h2>
<ul>
<li><a href="https://redirect.github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/329">#329</a> Restore compatibility with the full <code>doorkeeper >= 5.5</code> range declared in the gemspec (<a href="https://redirect.github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/328">#328</a>). Doorkeeper 5.5.x raised <code>NameError: uninitialized constant Doorkeeper::Orm::ActiveRecord::Mixins</code> at load time (the mixin file ships since 5.5.0 but is only autoloadable since 5.6.0 — it is now required explicitly when absent), and Doorkeeper 5.6/5.7 broke the discovery endpoint because <code>pkce_code_challenge_methods</code> only exists since 5.8.0 (the discovery response now falls back to <code>plain S256</code>, which is what those versions accept). CI now exercises the oldest supported Doorkeeper series via <code>gemfiles/doorkeeper_5.{5,6,7}.gemfile</code></li>
<li><a href="https://redirect.github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/325">#325</a> Remove the dead <code>Claims::AggregatedClaim</code> and <code>Claims::DistributedClaim</code> classes. They have never been required, instantiated, or reachable through the claims DSL (<code>ClaimsBuilder</code> only builds <code>NormalClaim</code>), and the discovery document only advertises <code>claim_types_supported: ["normal"]</code> — the files just shipped in the gem unused since 2016</li>
<li><a href="https://redirect.github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/324">#324</a> Split <code>Helpers::Controller</code> (294 lines, one module) into focused submodules — <code>Prompt</code>, <code>MaxAge</code>, <code>ErrorResponse</code>, <code>TokenMatching</code> — and decompose the two most complex methods (<code>handle_oidc_prompt_param!</code>, <code>handle_oidc_max_age_param!</code>). This is a behavior-preserving refactor that allows dropping the <code>Metrics/ModuleLength</code>, <code>Metrics/CyclomaticComplexity</code> and <code>Metrics/PerceivedComplexity</code> overrides from <code>.rubocop_todo.yml</code>; the codebase now passes those cops at RuboCop's default thresholds</li>
<li><a href="https://redirect.github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/326">#326</a> Make the dynamic client registration spec robust against pre-existing <code>Doorkeeper::Application</code> rows: replace absolute <code>Application.count</code> assertions and <code>Application.first</code> lookups with relative <code>change</code> matchers and <code>Application.find_by(uid:)</code> lookups keyed on the <code>client_id</code> returned by each request. With a polluted <code>test.sqlite3</code> (e.g. left behind by a <code>rake server</code> session against the same dummy app) 12 of the 20 examples failed spuriously; they now pass regardless of prior DB state</li>
<li><a href="https://redirect.github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/327">#327</a> Document previously-undocumented config options in the generated initializer template: <code>authorize_dynamic_client_registration</code> (DCR endpoint authorization gate), <code>apply_prompt_to_non_oidc_requests</code>, <code>end_session_endpoint</code>, <code>discovery_url_options</code>, and the <code>response:</code> option for claims (controlling whether a claim appears in the ID Token, UserInfo, or both). No behavior change</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/doorkeeper-gem/doorkeeper-openid_connect/commit/9473aceb420ae3a17f9bd33dcc65e251ed51fa6d"><code>9473ace</code></a> Release 1.10.5 :tada:</li>
<li><a href="https://github.com/doorkeeper-gem/doorkeeper-openid_connect/commit/00b89c1e9dec896eec74b4286c56aec11a95cfe1"><code>00b89c1</code></a> Merge pull request <a href="https://redirect.github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/327">#327</a> from 55728/docs/initializer-and-readme</li>
<li><a href="https://github.com/doorkeeper-gem/doorkeeper-openid_connect/commit/c9b1ac6de478d5d1b648558fd65d22cf3e9be900"><code>c9b1ac6</code></a> Merge pull request <a href="https://redirect.github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/326">#326</a> from 55728/test/dcr-spec-relative-counts</li>
<li><a href="https://github.com/doorkeeper-gem/doorkeeper-openid_connect/commit/0ce78d00b372d941df3b091a1f155d56bba5fc0b"><code>0ce78d0</code></a> Merge pull request <a href="https://redirect.github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/324">#324</a> from 55728/refactor/controller-helpers-metrics</li>
<li><a href="https://github.com/doorkeeper-gem/doorkeeper-openid_connect/commit/079b5d96f727266aa5a0ca44c9988278b881c220"><code>079b5d9</code></a> Merge pull request <a href="https://redirect.github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/325">#325</a> from 55728/chore/remove-dead-claim-classes</li>
<li><a href="https://github.com/doorkeeper-gem/doorkeeper-openid_connect/commit/7e8c6b2d40741f042a2255007772c22a539378b3"><code>7e8c6b2</code></a> Merge pull request <a href="https://redirect.github.com/doorkeeper-gem/doorkeeper-openid_connect/issues/329">#329</a> from 55728/compat/doorkeeper-5-5-support</li>
<li><a href="https://github.com/doorkeeper-gem/doorkeeper-openid_connect/commit/79d3308080086301370ff6fe45a8d8ba3bb9ad4c"><code>79d3308</code></a> Restore compatibility with doorkeeper 5.5–5.7</li>
<li><a href="https://github.com/doorkeeper-gem/doorkeeper-openid_connect/commit/cbaa8c759c946a5823efaa93a08112546a30d2e0"><code>cbaa8c7</code></a> Fix broken Migration wiki link in README</li>
<li><a href="https://github.com/doorkeeper-gem/doorkeeper-openid_connect/commit/38dbb3165774fe23e0fbc87ed815ada27690c6dc"><code>38dbb31</code></a> Add why-comments to non-obvious OIDC wiring</li>
<li><a href="https://github.com/doorkeeper-gem/doorkeeper-openid_connect/commit/afee80e94dbc120b0066bd506ee7fccf791d721c"><code>afee80e</code></a> Harden DCR spec against pre-existing Application rows</li>
<li>Additional commits viewable in <a href="https://github.com/doorkeeper-gem/doorkeeper-openid_connect/compare/v1.10.4...v1.10.5">compare view</a></li>
</ul>
</details>
<br />
Updates `aws-sdk-s3` from 1.226.0 to 1.227.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md">aws-sdk-s3's changelog</a>.</em></p>
<blockquote>
<h2>1.227.0 (2026-07-09)</h2>
<ul>
<li>Feature - Code Generated Changes, see <code>./build_tools</code> or <code>aws-sdk-core</code>'s CHANGELOG.md for details.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/aws/aws-sdk-ruby/commits">compare view</a></li>
</ul>
</details>
<br />
Updates `herb` from 0.10.1 to 0.10.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/marcoroth/herb/releases">herb's releases</a>.</em></p>
<blockquote>
<h2>v0.10.2</h2>
<h3>Parser</h3>
<ul>
<li>Skip close tag search for tag names with no closing tags by <a href="https://github.com/marcoroth"><code>@marcoroth</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1794">marcoroth/herb#1794</a></li>
<li>Add <code>timeout</code> to <code>parse_option_T</code> by <a href="https://github.com/marcoroth"><code>@marcoroth</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1795">marcoroth/herb#1795</a></li>
<li>Add <code>max_errors</code> to <code>parse_option_T</code> by <a href="https://github.com/marcoroth"><code>@marcoroth</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1796">marcoroth/herb#1796</a></li>
<li>Allow inline <code>in</code> expressions outside of <code>case</code> statements by <a href="https://github.com/ttilberg"><code>@ttilberg</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1821">marcoroth/herb#1821</a></li>
</ul>
<h3>Linter</h3>
<h4>New Linter Rules</h4>
<ul>
<li>Implement <code>a11y-no-redundant-image-alt</code> rule by <a href="https://github.com/joelhawksley"><code>@joelhawksley</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1686">marcoroth/herb#1686</a></li>
<li>Implement <code>a11y-disabled-attribute</code> rule by <a href="https://github.com/joelhawksley"><code>@joelhawksley</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1685">marcoroth/herb#1685</a></li>
<li>Implement <code>a11y-avoid-generic-link-text</code> rule by <a href="https://github.com/joelhawksley"><code>@joelhawksley</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1673">marcoroth/herb#1673</a></li>
<li>Implement <code>a11y-svg-has-accessible-text</code> rule by <a href="https://github.com/joelhawksley"><code>@joelhawksley</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1669">marcoroth/herb#1669</a></li>
<li>Implement <code>a11y-no-aria-label-misuse</code> rule by <a href="https://github.com/joelhawksley"><code>@joelhawksley</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1677">marcoroth/herb#1677</a></li>
<li>Implement <code>a11y-nested-interactive-elements</code> rule by <a href="https://github.com/joelhawksley"><code>@joelhawksley</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1674">marcoroth/herb#1674</a></li>
</ul>
<h4>Updates Rules</h4>
<ul>
<li>Fix <code>html-no-self-closing</code> to preserve indentation by <a href="https://github.com/fgkolf"><code>@fgkolf</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1753">marcoroth/herb#1753</a></li>
<li>Narrow <code>html-no-self-closing</code> offense location by <a href="https://github.com/marcoroth"><code>@marcoroth</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1777">marcoroth/herb#1777</a></li>
<li>Add WAI-ARIA Graphics roles to <code>html-aria-role-must-be-valid</code> by <a href="https://github.com/miyatis"><code>@miyatis</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1825">marcoroth/herb#1825</a></li>
<li>Allow <code>application/ld+json</code> for <code>html-allowed-script-type</code> rule by <a href="https://github.com/xymbol"><code>@xymbol</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1844">marcoroth/herb#1844</a></li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Fix disabled formatter stdin output by <a href="https://github.com/hschne"><code>@hschne</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1851">marcoroth/herb#1851</a></li>
</ul>
<h3>Laguage Server</h3>
<ul>
<li>Fix comments inside multiline ERB tags by <a href="https://github.com/RSeven"><code>@RSeven</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1776">marcoroth/herb#1776</a></li>
</ul>
<h3>Core</h3>
<ul>
<li>Update AST Utils for <code>HTMLConditionalOpenTagNode</code> by <a href="https://github.com/marcoroth"><code>@marcoroth</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1781">marcoroth/herb#1781</a></li>
</ul>
<h3>JavaScript</h3>
<ul>
<li>Upgrade to Node.js 24 by <a href="https://github.com/marcoroth"><code>@marcoroth</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1778">marcoroth/herb#1778</a></li>
</ul>
<h3>Ruby</h3>
<ul>
<li>Add sig/manifest.yaml to declare stdlib dependencies by <a href="https://github.com/tk0miya"><code>@tk0miya</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1711">marcoroth/herb#1711</a></li>
<li>Check RBS validity on CI by <a href="https://github.com/tk0miya"><code>@tk0miya</code></a> in <a href="https://redirect.github.com/marcoroth/herb/pull/1712">marcoroth/herb#1712</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/marcoroth/herb/commit/b2244546d4a949d6867e3a9f987062d16f35e74b"><code>b224454</code></a> JavaScript: Set <code>unreleased</code> rules to <code>v0.10.2</code></li>
<li><a href="https://github.com/marcoroth/herb/commit/3f65710489e89b112e05e5e4b167d61a1f1975cf"><code>3f65710</code></a> <code>v0.10.2</code> (<a href="https://redirect.github.com/marcoroth/herb/issues/1853">#1853</a>)</li>
<li><a href="https://github.com/marcoroth/herb/commit/722d53c70b5f5c83e6c62816cca7b9bfd184ae09"><code>722d53c</code></a> Language Server: Fix comments inside multiline ERB tags (<a href="https://redirect.github.com/marcoroth/herb/issues/1776">#1776</a>)</li>
<li><a href="https://github.com/marcoroth/herb/commit/a53af5903e22c6f885806ef2318e8ee0ffbe0817"><code>a53af59</code></a> Bump <code>@types/node</code> from 26.0.1 to 26.1.1 (<a href="https://redirect.github.com/marcoroth/herb/issues/1848">#1848</a>)</li>
<li><a href="https://github.com/marcoroth/herb/commit/4a174b96de19a1fe34ccf9feec54a854db8564b0"><code>4a174b9</code></a> Bump sorbet from 0.6.13323 to 0.6.13341 (<a href="https://redirect.github.com/marcoroth/herb/issues/1847">#1847</a>)</li>
<li><a href="https://github.com/marcoroth/herb/commit/f8104b09174c6ea2359a43729035dce7af4ee376"><code>f8104b0</code></a> Bump <code>@vscode/vsce</code> from 3.9.1 to 3.9.2 (<a href="https://redirect.github.com/marcoroth/herb/issues/1850">#1850</a>)</li>
<li><a href="https://github.com/marcoroth/herb/commit/30160e1ef68124922339410b4fe85e6e6b7b04d4"><code>30160e1</code></a> Formatter: Fix disabled formatter stdin output (<a href="https://redirect.github.com/marcoroth/herb/issues/1851">#1851</a>)</li>
<li><a href="https://github.com/marcoroth/herb/commit/bda4e75e99a620c8d95b7f5b87ea3bc135c3df21"><code>bda4e75</code></a> Bump picomatch from 4.0.4 to 4.0.5 (<a href="https://redirect.github.com/marcoroth/herb/issues/1840">#1840</a>)</li>
<li><a href="https://github.com/marcoroth/herb/commit/7935fa7fa11cbf9ff0d5fe438e611566bafa2596"><code>7935fa7</code></a> Linter: Allow <code>application/ld+json</code> for <code>html-allowed-script-type</code> rule (<a href="https://redirect.github.com/marcoroth/herb/issues/1844">#1844</a>)</li>
<li><a href="https://github.com/marcoroth/herb/commit/154ce0883c0a041c6fb8feab0daffbb776194565"><code>154ce08</code></a> Ruby: Require <code>rails-html-sanitizer</code> explicitly</li>
<li>Additional commits viewable in <a href="https://github.com/marcoroth/herb/compare/v0.10.1...v0.10.2">compare view</a></li>
</ul>
</details>
<br />
Updates `selenium-webdriver` from 4.45.0 to 4.46.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/SeleniumHQ/selenium/releases">selenium-webdriver's releases</a>.</em></p>
<blockquote>
<h2>Selenium 4.46.0</h2>
<h2>Detailed Changelogs by Component</h2>
<p><!-- raw HTML omitted --> <strong><a href="https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG">Java</a></strong> | <!-- raw HTML omitted --> <strong><a href="https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES">Python</a></strong> | <!-- raw HTML omitted --> <strong><a href="https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG">DotNet</a></strong> | <!-- raw HTML omitted --> <strong><a href="https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES">Ruby</a></strong> | <!-- raw HTML omitted --> <strong><a href="https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md">JavaScript</a></strong>
<!-- raw HTML omitted --></p>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>[build] Upgrade rules_rs to 0.0.90 and build Rust against <a href="https://github.com/llvm"><code>@llvm</code></a> on macOS by <a href="https://github.com/AutomatedTester"><code>@AutomatedTester</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17683">SeleniumHQ/selenium#17683</a></li>
<li>[dotnet] Thread safe product info determination by <a href="https://github.com/nvborisenko"><code>@nvborisenko</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17684">SeleniumHQ/selenium#17684</a></li>
<li>[release] Skip release if package is already published by <a href="https://github.com/diemol"><code>@diemol</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17686">SeleniumHQ/selenium#17686</a></li>
<li>[docs] add design decision record process and template by <a href="https://github.com/titusfortner"><code>@titusfortner</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17665">SeleniumHQ/selenium#17665</a></li>
<li>[rust] Support pbzx-compressed macOS .pkg payloads by <a href="https://github.com/AutomatedTester"><code>@AutomatedTester</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17691">SeleniumHQ/selenium#17691</a></li>
<li>[java] Mark all current BiDi related classes beta by <a href="https://github.com/pujagani"><code>@pujagani</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17690">SeleniumHQ/selenium#17690</a></li>
<li>[build] Upgrade rules_rs to 0.0.92 by <a href="https://github.com/AutomatedTester"><code>@AutomatedTester</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17688">SeleniumHQ/selenium#17688</a></li>
<li>[ci] Ignore changes in docs/decisions directory for pull requests by <a href="https://github.com/diemol"><code>@diemol</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17693">SeleniumHQ/selenium#17693</a></li>
<li>[build] Upgrade <a href="https://github.com/llvm"><code>@llvm</code></a> to 0.8.9 by <a href="https://github.com/AutomatedTester"><code>@AutomatedTester</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17703">SeleniumHQ/selenium#17703</a></li>
<li>[rust] Use PKG again for Firefox macOS downloads by <a href="https://github.com/AutomatedTester"><code>@AutomatedTester</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17702">SeleniumHQ/selenium#17702</a></li>
<li>[rb] trim whitespace around NO_PROXY entries by <a href="https://github.com/aguspe"><code>@aguspe</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17565">SeleniumHQ/selenium#17565</a></li>
<li>Treat prefix literally in UrlTemplate.match(url, prefix) by <a href="https://github.com/vasiliy-mikhailov"><code>@vasiliy-mikhailov</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17713">SeleniumHQ/selenium#17713</a></li>
<li>[java] show browser version and available CDP versions by <a href="https://github.com/asolntsev"><code>@asolntsev</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17708">SeleniumHQ/selenium#17708</a></li>
<li>Make Either.stream() and iterator() empty for a left value by <a href="https://github.com/vasiliy-mikhailov"><code>@vasiliy-mikhailov</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17714">SeleniumHQ/selenium#17714</a></li>
<li>[java] Handle system proxy setting for arguments passed to selenium manager by <a href="https://github.com/bhecquet"><code>@bhecquet</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17402">SeleniumHQ/selenium#17402</a></li>
<li>[js] Add binding-neutral BiDi schema with cddl2ts-gated fidelity by <a href="https://github.com/titusfortner"><code>@titusfortner</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17700">SeleniumHQ/selenium#17700</a></li>
<li>[build] add copyright headers to rbs, pyi, ts, mjs, and erb files by <a href="https://github.com/titusfortner"><code>@titusfortner</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17720">SeleniumHQ/selenium#17720</a></li>
<li>[rb] add ClientConfig for HTTP client customization by <a href="https://github.com/titusfortner"><code>@titusfortner</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17699">SeleniumHQ/selenium#17699</a></li>
<li>[rb] Add copyright header for client_config.rbs by <a href="https://github.com/nvborisenko"><code>@nvborisenko</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17722">SeleniumHQ/selenium#17722</a></li>
<li>[dotnet] [bidi] Split event stream backed subscription and enumeration by <a href="https://github.com/nvborisenko"><code>@nvborisenko</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17705">SeleniumHQ/selenium#17705</a></li>
<li>[dotnet] [test] Moves Urls knowledge to testing web server by <a href="https://github.com/nvborisenko"><code>@nvborisenko</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17724">SeleniumHQ/selenium#17724</a></li>
<li>[java] fix comparator of Docker versions by <a href="https://github.com/asolntsev"><code>@asolntsev</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17723">SeleniumHQ/selenium#17723</a></li>
<li>[dotnet] [test] Driver is protected through fixtures by <a href="https://github.com/nvborisenko"><code>@nvborisenko</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17726">SeleniumHQ/selenium#17726</a></li>
<li>[dotnet] [test] Clean driver fixture from expected page titles by <a href="https://github.com/nvborisenko"><code>@nvborisenko</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17727">SeleniumHQ/selenium#17727</a></li>
<li>[py] Route Safari, STP and WebView2 to their handlers by <a href="https://github.com/v-dermichev"><code>@v-dermichev</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17728">SeleniumHQ/selenium#17728</a></li>
<li>[grid] Fix classpath packaging Redis-backed for SessionQueue by <a href="https://github.com/VietND96"><code>@VietND96</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17706">SeleniumHQ/selenium#17706</a></li>
<li>[rust][selenium-manager]: do not ignore browser path when version is specified by <a href="https://github.com/Delta456"><code>@Delta456</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17659">SeleniumHQ/selenium#17659</a></li>
<li>[json] Allow constructor args to be used when coercing from json by <a href="https://github.com/shs96c"><code>@shs96c</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17733">SeleniumHQ/selenium#17733</a></li>
<li>[py] Fix example WebDriverWait import in docstring by <a href="https://github.com/cgoldberg"><code>@cgoldberg</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17735">SeleniumHQ/selenium#17735</a></li>
<li>[dotnet] [test] Eliminate stub driver for testing events in Support package by <a href="https://github.com/nvborisenko"><code>@nvborisenko</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17736">SeleniumHQ/selenium#17736</a></li>
<li>[java] Fix JSON parser EOF sentinel collision with U+FFFF by <a href="https://github.com/shs96c"><code>@shs96c</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17737">SeleniumHQ/selenium#17737</a></li>
<li>[java] Reject unescaped control characters in JSON strings by <a href="https://github.com/shs96c"><code>@shs96c</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17740">SeleniumHQ/selenium#17740</a></li>
<li>[rust] Support multiple names for Firefox binary in Linux (<a href="https://redirect.github.com/SeleniumHQ/selenium/issues/17695">#17695</a>) by <a href="https://github.com/bonigarcia"><code>@bonigarcia</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17732">SeleniumHQ/selenium#17732</a></li>
<li>build: update Node.js toolchain version to 24.18.0 by <a href="https://github.com/diemol"><code>@diemol</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17742">SeleniumHQ/selenium#17742</a></li>
<li>[java] Tighten JSON number lexer to match RFC 8259 by <a href="https://github.com/shs96c"><code>@shs96c</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17739">SeleniumHQ/selenium#17739</a></li>
<li>[java] Enforce commas between JSON elements; accept trailing commas by <a href="https://github.com/shs96c"><code>@shs96c</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17738">SeleniumHQ/selenium#17738</a></li>
<li>[java] Deprecate methods to avoid internal BiDi connection surfacing on driver by <a href="https://github.com/pujagani"><code>@pujagani</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17751">SeleniumHQ/selenium#17751</a></li>
<li>[js] Update cddl to 0.21.0 to fix quoted reserved-word parsing in BiDi codegen by <a href="https://github.com/titusfortner"><code>@titusfortner</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17752">SeleniumHQ/selenium#17752</a></li>
<li>[rb] generate the BiDi protocol layer from the shared binding-neutral schema by <a href="https://github.com/titusfortner"><code>@titusfortner</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17731">SeleniumHQ/selenium#17731</a></li>
<li>[docs] ADR implementation updates - track by PR number, clarify PR body vs ADR, tracking status by issue by <a href="https://github.com/titusfortner"><code>@titusfortner</code></a> in <a href="https://redirect.github.com/SeleniumHQ/selenium/pull/17697">SeleniumHQ/selenium#17697</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES">selenium-webdriver's changelog</a>.</em></p>
<blockquote>
<h1>4.46.0 (2026-07-10)</h1>
<ul>
<li>Support CDP versions: v148, v149, v150</li>
<li>trim whitespace around NO_PROXY entries (<a href="https://redirect.github.com/SeleniumHQ/selenium/issues/17565">#17565</a>)</li>
<li>add ClientConfig for HTTP client customization (<a href="https://redirect.github.com/SeleniumHQ/selenium/issues/17699">#17699</a>)</li>
<li>generate the BiDi protocol layer from the shared binding-neutral schema (<a href="https://redirect.github.com/SeleniumHQ/selenium/issues/17731">#17731</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/SeleniumHQ/selenium/commit/df5a6341cbb5f8f06b836bd595752775627c80dc"><code>df5a634</code></a> [build] Prepare for release of selenium-4.46.0 (<a href="https://redirect.github.com/SeleniumHQ/selenium/issues/17763">#17763</a>)</li>
<li><a href="https://github.com/SeleniumHQ/selenium/commit/ee4057cfd2205dd9555b8ef59b3baf7b613b20c7"><code>ee4057c</code></a> Add guidance for testing conventions in each language (<a href="https://redirect.github.com/SeleniumHQ/selenium/issues/16734">#16734</a>)</li>
<li><a href="https://github.com/SeleniumHQ/selenium/commit/6283602b1c8ea64b9f8e7afb1233dfc8c136ad18"><code>6283602</code></a> [rb] generate the BiDi protocol layer from the shared binding-neutral schema ...</li>
<li><a href="https://github.com/SeleniumHQ/selenium/commit/39394dda237bb101961823e26685dabaa8fe82f1"><code>39394dd</code></a> [rb] guard flaky safari test</li>
<li><a href="https://github.com/SeleniumHQ/selenium/commit/6f7ddb3f55dd95276361a540a9c71d37ce049a26"><code>6f7ddb3</code></a> [rb] Add copyright header for client_config.rbs (<a href="https://redirect.github.com/SeleniumHQ/selenium/issues/17722">#17722</a>)</li>
<li><a href="https://github.com/SeleniumHQ/selenium/commit/cab142e624303ce8a296c49923151daea8a02500"><code>cab142e</code></a> [rb] add ClientConfig for HTTP client customization (<a href="https://redirect.github.com/SeleniumHQ/selenium/issues/17699">#17699</a>)</li>
<li><a href="https://github.com/SeleniumHQ/selenium/commit/ea8ad9bb2760ae8fd12ce68e35de01ccdfb8e761"><code>ea8ad9b</code></a> [build] add copyright headers to rbs, pyi, ts, mjs, and erb files (<a href="https://redirect.github.com/SeleniumHQ/selenium/issues/17720">#17720</a>)</li>
<li><a href="https://github.com/SeleniumHQ/selenium/commit/c0b8ff6451419542dcecc53c922e1a79e4dc3940"><code>c0b8ff6</code></a> [rb] trim whitespace around NO_PROXY entries (<a href="https://redirect.github.com/SeleniumHQ/selenium/issues/17565">#17565</a>)</li>
<li><a href="https://github.com/SeleniumHQ/selenium/commit/54ad3102173dcd12228a05174e4e0b44eb1abb47"><code>54ad310</code></a> [build] Automated Browser Version Update (<a href="https://redirect.github.com/SeleniumHQ/selenium/issues/17687">#17687</a>)</li>
<li><a href="https://github.com/SeleniumHQ/selenium/commit/945692a71365d4a8945c0f0ad04c26948b952487"><code>945692a</code></a> [build] Reset versions to nightly after 4.45.0 release</li>
<li>See full diff in <a href="https://github.com/SeleniumHQ/selenium/compare/selenium-4.45.0...selenium-4.46.0">compare view</a></li>
</ul>
</details>
<br />
Updates `simplecov` from 0.22.0 to 1.0.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/simplecov-ruby/simplecov/releases">simplecov's releases</a>.</em></p>
<blockquote>
<h2>v1.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix <code>NoMethodError</code> in <code>formatters=</code> for non-Array arguments by <a href="https://github.com/koic"><code>@koic</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1224">simplecov-ruby/simplecov#1224</a></li>
<li>Explicitly write formatter's status message to STDERR by <a href="https://github.com/viralpraxis"><code>@viralpraxis</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1225">simplecov-ruby/simplecov#1225</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/viralpraxis"><code>@viralpraxis</code></a> made their first contribution in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1225">simplecov-ruby/simplecov#1225</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/simplecov-ruby/simplecov/compare/v1.0.0...v1.0.1">https://github.com/simplecov-ruby/simplecov/compare/v1.0.0...v1.0.1</a></p>
<h2>v1.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Adds Ruby 3.2 to the CI matrix. by <a href="https://github.com/petergoldstein"><code>@petergoldstein</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1042">simplecov-ruby/simplecov#1042</a></li>
<li>Fix incorrect comment on "Gemfile" by <a href="https://github.com/nishidayuya"><code>@nishidayuya</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1027">simplecov-ruby/simplecov#1027</a></li>
<li>Fix typo in documentation by <a href="https://github.com/eyupatis"><code>@eyupatis</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/995">simplecov-ruby/simplecov#995</a></li>
<li>Readme: Fix Coverage link by <a href="https://github.com/camsteffen"><code>@camsteffen</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1049">simplecov-ruby/simplecov#1049</a></li>
<li>Cleanup archived project by <a href="https://github.com/borisrorsvort"><code>@borisrorsvort</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1056">simplecov-ruby/simplecov#1056</a></li>
<li>Added dependabot for GitHub Actions and bundler by <a href="https://github.com/ydah"><code>@ydah</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1048">simplecov-ruby/simplecov#1048</a></li>
<li>Bump rubocop from 1.24.1 to 1.42.0 by <a href="https://github.com/ydah"><code>@ydah</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1047">simplecov-ruby/simplecov#1047</a></li>
<li>Bump actions/checkout from 3 to 4 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1070">simplecov-ruby/simplecov#1070</a></li>
<li>Fix typo by <a href="https://github.com/zenspider"><code>@zenspider</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1076">simplecov-ruby/simplecov#1076</a></li>
<li>CI debugging by <a href="https://github.com/PragTob"><code>@PragTob</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1086">simplecov-ruby/simplecov#1086</a></li>
<li>Add TruffleRuby in CI by <a href="https://github.com/eregon"><code>@eregon</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1079">simplecov-ruby/simplecov#1079</a></li>
<li>allow Coverage to start when Coverage.running? is not implemented by <a href="https://github.com/notEthan"><code>@notEthan</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1043">simplecov-ruby/simplecov#1043</a></li>
<li>Run Rubocop only once in CI by <a href="https://github.com/PragTob"><code>@PragTob</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1087">simplecov-ruby/simplecov#1087</a></li>
<li>Unexclude skipped on TruffleRuby test case by <a href="https://github.com/andrykonchin"><code>@andrykonchin</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1089">simplecov-ruby/simplecov#1089</a></li>
<li>Set up the trusted publisher together with <a href="https://github.com/segiddins"><code>@segiddins</code></a> by <a href="https://github.com/PragTob"><code>@PragTob</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1094">simplecov-ruby/simplecov#1094</a></li>
<li>Bump step-security/harden-runner from 2.7.1 to 2.8.1 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1095">simplecov-ruby/simplecov#1095</a></li>
<li>Trying to update cucumber & co but running into conflicts by <a href="https://github.com/PragTob"><code>@PragTob</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1088">simplecov-ruby/simplecov#1088</a></li>
<li>Technical/Fix documentation formatters usage example by <a href="https://github.com/bestwebua"><code>@bestwebua</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1096">simplecov-ruby/simplecov#1096</a></li>
<li>Fix minor typo in README by <a href="https://github.com/chris-hewitt"><code>@chris-hewitt</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1080">simplecov-ruby/simplecov#1080</a></li>
<li>Update gems & fix new rubocop offenses by <a href="https://github.com/PragTob"><code>@PragTob</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1098">simplecov-ruby/simplecov#1098</a></li>
<li>Bring Ruby 2.7 support back by <a href="https://github.com/amatsuda"><code>@amatsuda</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1107">simplecov-ruby/simplecov#1107</a></li>
<li>Bump step-security/harden-runner from 2.8.1 to 2.9.1 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1104">simplecov-ruby/simplecov#1104</a></li>
<li>Bring Ruby 2.5 and 2.6 support back by <a href="https://github.com/amatsuda"><code>@amatsuda</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1108">simplecov-ruby/simplecov#1108</a></li>
<li>Bump step-security/harden-runner from 2.9.1 to 2.10.2 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1117">simplecov-ruby/simplecov#1117</a></li>
<li>Bump rubygems/release-gem from 612653d273a73bdae1df8453e090060bb4db5f31 to a25424ba2ba8b387abc8ef40807c2c85b96cbe32 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1119">simplecov-ruby/simplecov#1119</a></li>
<li>Follow the repo convention to use <code>floor</code> instead of <code>round</code> to provide actionable coverage metrics by <a href="https://github.com/corsonknowles"><code>@corsonknowles</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1116">simplecov-ruby/simplecov#1116</a></li>
<li>Ensure branches Hash is present when supported by <a href="https://github.com/marcotc"><code>@marcotc</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/972">simplecov-ruby/simplecov#972</a></li>
<li>Add logger to deps and load in early in test Rails app. by <a href="https://github.com/simi"><code>@simi</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1131">simplecov-ruby/simplecov#1131</a></li>
<li>Bump step-security/harden-runner from 2.10.2 to 2.11.1 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1128">simplecov-ruby/simplecov#1128</a></li>
<li>Reduce GC pressure in LinesCombiner by ~90% by <a href="https://github.com/KevSlashNull"><code>@KevSlashNull</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1144">simplecov-ruby/simplecov#1144</a></li>
<li>Add support for <code>oneshot_lines</code> coverage mode by <a href="https://github.com/fatkodima"><code>@fatkodima</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1154">simplecov-ruby/simplecov#1154</a></li>
<li>Bump actions/checkout from 4 to 6 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1148">simplecov-ruby/simplecov#1148</a></li>
<li>Bump rubygems/release-gem from 1.1.1 to 1.1.2 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1145">simplecov-ruby/simplecov#1145</a></li>
<li>Bump step-security/harden-runner from 2.13.0 to 2.14.1 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1153">simplecov-ruby/simplecov#1153</a></li>
<li>Fixed typos and grammatical errors by <a href="https://github.com/AmritD"><code>@AmritD</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1147">simplecov-ruby/simplecov#1147</a></li>
<li>Fix crash in oneshot coverage when file is missing or not valid Ruby by <a href="https://github.com/skryukov"><code>@skryukov</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1158">simplecov-ruby/simplecov#1158</a></li>
<li>Prevent test_frameworks profile to hide source directories by <a href="https://github.com/splattael"><code>@splattael</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1133">simplecov-ruby/simplecov#1133</a></li>
<li>Minimum coverage by group check by <a href="https://github.com/mikhliuk-k"><code>@mikhliuk-k</code></a> in <a href="https://redirect.github.com/simplecov-ruby/simplecov/pull/1105">simplecov-ruby/simplecov#1105</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/simplecov-ruby/simplecov/blob/main/CHANGELOG.md">simplecov's changelog</a>.</em></p>
<blockquote>
<h1>1.0.1 (2026-07-14)</h1>
<h2>Enhancements</h2>
<ul>
<li>The gem now ships type signatures under <code>sig/</code>, covering the public API: the configuration DSL (including the criterion-scoped <code>coverage</code> block and the legacy deprecated verbs), the <code>Result</code> / <code>FileList</code> / <code>SourceFile</code> / <code>CoverageStatistics</code> read API that formatter authors consume, the formatter and filter class hierarchies, exit codes, and the <code>ParallelAdapters::Base</code> contract. Internal classes carry repository-only skeleton signatures (<code>sig/internal/</code>, excluded from the gem package) so the entire codebase type-checks under Steep in strict mode, while the shipped signature payload stays small. Signatures are checked with <code>rbs validate</code> and <code>steep check</code> as part of the default rake task. RBS and Steep users no longer need the third-party signatures from <code>ruby/gem_rbs_collection</code>, which cover the 0.22 API and predate 1.0's configuration redesign.</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>Branch tuples synthesized for tracked-but-unloaded files now match Ruby's <code>Coverage</code> exactly for <code>elsif</code> and for <code>if</code> arms with empty bodies. <code>StaticCoverageExtractor</code> attributed the outer else arm of an <code>elsif</code> to the clause's body rather than the whole clause, and an empty <code>if</code> then-body to the whole node rather than Coverage's zero-width point at the predicate's end. Since resultset merges combine branch arms by their exact location, a simulated entry merging with a real one for the same file (parent and worker under Minitest's <code>parallelize</code>, or RSpec and Minitest suites collated together) produced phantom, permanently-missed branch arms. A new differential spec now pins every branch construct tuple-for-tuple against Ruby's <code>Coverage</code> — which promptly caught that CRuby 3.4 changed several of these conventions, so the extractor now emits whichever shape the running Ruby's <code>Coverage</code> uses (on 3.2/3.3: elsif clause ranges end at the chain's last content rather than the shared <code>end</code>, empty <code>if</code>/<code>else</code>/<code>when</code> bodies fall back to enclosing ranges, and empty <code>while</code>/<code>in</code> bodies collapse to points). Reported with an exemplary diagnosis by <a href="https://github.com/hasghari"><code>@hasghari</code></a>. See <a href="https://redirect.github.com/simplecov-ruby/simplecov/issues/1226">#1226</a>.</li>
<li><code>merge_subprocesses</code> no longer silently drops all worker coverage under Minitest's fork-based <code>parallelize(workers: N)</code> (the setup the <code>rails</code> profile exists for). When Minitest's autorun was armed before <code>SimpleCov.start</code> — which is how <code>rails test</code> loads — SimpleCov deferred its report to <code>Minitest.after_run</code>, and forked workers inherited that deferral even though Minitest pins its <code>after_run</code> hook to the parent's pid, so no exit path in the worker ever stored its resultset. Workers now reset the inherited at_exit state on fork and re-arm their own hook, so their resultsets are stored and merged as documented. Reported with an exemplary diagnosis by <a href="https://github.com/hasghari"><code>@hasghari</code></a>. See <a href="https://redirect.github.com/simplecov-ruby/simplecov/issues/1227">#1227</a>.</li>
<li>Fixed <code>SimpleCov.formatters=</code> raising <code>NoMethodError</code> when given a single formatter instead of an Array — a regression from 0.22.x, where <code>MultiFormatter.new</code> normalized the value internally. This restores the long-documented <code>SimpleCov.formatters = SimpleCov::Formatter::MultiFormatter.new([...])</code> pattern, in which <code>MultiFormatter.new</code> returns a Class rather than an Array. The regression surfaced in ruby/ruby's CI through net-imap's test helper. Thanks <a href="https://github.com/koic"><code>@koic</code></a>. See <a href="https://redirect.github.com/simplecov-ruby/simplecov/issues/1224">#1224</a>.</li>
<li>Formatter status lines ("Coverage report generated for X") and threshold-enforcement output (violation reports, "SimpleCov failed with exit N") no longer route through <code>Kernel#warn</code>. They still print to stderr, but they are program output rather than Ruby warnings, so <code>Warning.warn</code> hooks — warning trackers and raise-on-warning test setups — no longer intercept them as unaddressable noise, and threshold failure explanations now survive <code>ruby -W0</code>, which previously reduced a failing check to a bare exit code with no explanation. Genuine warnings (deprecations, dropped-file notices, parse failures) still use <code>warn</code>. Suppression remains explicit: <code>silent: true</code> for formatter status lines, <code>print_errors false</code> for enforcement output. Thanks <a href="https://github.com/viralpraxis"><code>@viralpraxis</code></a>. See <a href="https://redirect.github.com/simplecov-ruby/simplecov/issues/1225">#1225</a>.</li>
</ul>
<h1>1.0.0 (2026-07-12)</h1>
<p>First stable release of the 1.0 line. The entries below consolidate release candidates rc1 through rc5 and describe all changes since 0.22.1.</p>
<h2>Breaking Changes</h2>
<ul>
<li>Dropped support for Ruby 3.1 and JRuby 9.4. The minimum is now Ruby 3.2 (and JRuby 10, which reports <code>RUBY_VERSION</code> 3.4). Ruby 3.1 reached end of life in March 2025, and a recent <code>i18n</code> release calls <code>Fiber[]</code>, a Ruby 3.2 API, at load time, so suites that load Rails no longer run on 3.1. Raising <code>required_ruby_version</code> to <code>>= 3.2</code> also excludes JRuby 9.4, which reports <code>RUBY_VERSION</code> 3.1.x. See <a href="https://redirect.github.com/simplecov-ruby/simplecov/issues/1171">#1171</a>.</li>
<li>JSON formatter: group stats changed from <code>{ "covered_percent": 80.0 }</code> to full stats shape <code>{ "covered": 8, "missed": 2, "total": 10, "percent": 80.0, "strength": 0.0 }</code>. The key <code>covered_percent</code> is renamed to <code>percent</code>.</li>
<li>JSON formatter: <code>simplecov_json_formatter</code> gem is now built in. <code>require "simplecov_json_formatter"</code> continues to work via a shim.</li>
<li><code>StringFilter</code> now matches at path-segment boundaries. <code>"lib"</code> matches <code>/lib/</code> but no longer matches <code>/library/</code>. Use a <code>Regexp</code> filter for substring matching.</li>
<li><code>SourceFile#project_filename</code> now returns a truly relative path with no leading separator (e.g. <code>lib/foo.rb</code> instead of <code>/lib/foo.rb</code>). This also removes the leading <code>/</code> from file path keys in <code>coverage.json</code> and from the filename in <code>minimum_coverage_by_file</code> error messages. Anchored <code>RegexFilter</code>s that relied on a leading <code>/</code> (e.g. <code>%r{^/lib/}</code>) should be rewritten (e.g. <code>%r{\Alib/}</code>).</li>
<li>Removed <code>docile</code> gem dependency. The <code>SimpleCov.configure</code> block is now evaluated via <code>instance_exec</code> with instance variable proxying.</li>
<li>Removed automatic activation of <code>JSONFormatter</code> when the <code>CC_TEST_REPORTER_ID</code> environment variable is set. The default <code>HTMLFormatter</code> now emits <code>coverage.json</code> alongside the HTML report (using <code>JSONFormatter.build_hash</code> to serialize the same payload <code>JSONFormatter</code> writes), so the env-var special case is no longer needed. Because of this, listing <code>JSONFormatter</code> alongside <code>HTMLFormatter</code> is redundant and can be removed.</li>
<li><code>SimpleCov.start</code> now loads the <code>test_frameworks</code> profile by default, which filters paths under <code>test/</code>, <code>spec/</code>, <code>features/</code>, and <code>autotest/</code>. Running the suite always executes 100% of the test files themselves, which inflated the overall percentage and obscured application coverage. To opt back in (e.g. to surface dead test helpers), drop the filter with <code>remove_filter %r{\A(test|features|spec|autotest)/}</code>. See <a href="https://redirect.github.com/simplecov-ruby/simplecov/issues/816">#816</a>.</li>
<li>HTML and JSON formatters now write the "Coverage report generated for X to Y" status line (and the per-criterion totals beneath it) to stderr instead of stdout. The message is a diagnostic, not the program's output, and routing it to stdout polluted pipelines like <code>rspec -f json</code>. Suppress it entirely with <code>silent: true</code> on the formatter; redirect with <code>2>&1</code> if you want the old behavior. See <a href="https://redirect.github.com/simplecov-ruby/simplecov/issues/1060">#1060</a>.</li>
<li>Under <code>parallel_tests</code>, SimpleCov now waits in the <strong>first</strong> started process (via <code>ParallelTests.first_process?</code>) rather than the last. This matches the convention <code>parallel_tests</code>'s own README recommends for "do something once after all workers finish" hooks, so user code that has its own <code>ParallelTests.wait_for_other_processes_to_finish</code> in an <code>RSpec.after(:suite)</code> (or equivalent) no longer deadlocks against SimpleCov's wait when both pick the same process. As a side benefit, the previous <code>PARALLEL_TEST_GROUPS=1</code> workaround for <code>last_process?</code>'s <code>"" == "1"</code> mismatch (<a href="https://redirect.github.com/simplecov-ruby/simplecov/issues/1066">#1066</a>) is no longer needed — <code>first_process?</code> handles that case naturally. <strong>Migration:</strong> the rare project that wired its own wait via <code>ParallelTests.last_process?</code> now hits the symmetric deadlock and must switch to <code>first_process?</code>. See <a href="https://redirect.github.com/simplecov-ruby/simplecov/issues/922">#922</a>.</li>
<li>Removed <code>SimpleCov.coverage_criterion</code>. It was a reader/writer for a value nothing in SimpleCov ever consumed, so it duplicated <code>primary_coverage</code> without affecting any behavior. Use <code>primary_coverage</code> to choose the report's leading criterion (or the <code>coverage :branch, primary: true</code> form).</li>
</ul>
<h2>Deprecations</h2>
<ul>
<li>The configuration API has been redesigned around a smaller, more consistent set of verbs. The legacy methods continue to work but each emits a deprecation warning that names its replacement; a future release will remove them. Warnings are deduplicated by call site, so a deprecated method called in a loop or a configuration block re-evaluated once per parallel worker or spec file warns at most once per source location (see <a href="https://redirect.github.com/simplecov-ruby/simplecov/issues/1204">#1204</a>). See the "Migrating from the legacy configuration API" section in the README for the full migration table and a before/after example.
<ul>
<li><code>add_filter</code> → <code>skip</code> (identical matcher grammar; no behavior change)</li>
<li><code>add_group</code> → <code>group</code> (identical matcher grammar; no behavior change)</li>
<li><code>track_files</code> → <code>cover</code> (<code>cover</code> includes unloaded files like <code>track_files</code> did <strong>and</strong> restricts the report to the matching set; pass every directory you want reported, e.g. <code>cover "lib/**/*.rb", "app/**/*.rb"</code>, to keep the old additive-only behavior)</li>
<li><code>use_merging</code> → <code>merging</code> (same value)</li>
<li><code>enable_for_subprocesses</code> → <code>merge_subprocesses</code> (same value)</li>
<li><code>enable_coverage_for_eval</code> → <code>enable_coverage :eval</code> (folds into the same call that enables <code>:line</code> / <code>:branch</code> / <code>:method</code>)</li>
<li><code>print_error_status</code> (reader) → <code>print_errors</code> (the <code>print_error_status=</code> writer is unaffected for now)</li>
</ul>
</li>
<li>Calling <code>SimpleCov.start</code> from <code>.simplecov</code> is deprecated. Coverage tracking still begins for backward compatibility, but a one-time deprecation warning fires pointing the user at moving the call into <code>spec_helper.rb</code> / <code>test_helper.rb</code>; a future release will require the explicit <code>SimpleCov.start</code> from a test helper. The migration goes hand-in-hand with the bugfix below: once <code>SimpleCov.start</code> lives in the test helper, the parent process that auto-loads <code>.simplecov</code> never starts tracking and the empty-report-overwrite scenario can't arise. See <a href="https://redirect.github.com/simplecov-ruby/simplecov/issues/581">#581</a>.</li>
<li><code># :nocov:</code> toggle comments (and the configurable <code>SimpleCov.nocov_token</code> / <code>SimpleCov.skip_token</code>) are deprecated in favor of the new <code># simplecov:disable</code> / <code># simplecov:enable</code> directives. Each file that still uses <code># :nocov:</code> emits a one-time deprecation warning to stderr at load time pointing at the recommended replacement, and any call to <code>SimpleCov.nocov_token</code> or <code>SimpleCov.skip_token</code> (getter or setter) likewise warns. The directive will be removed in a future release.</li>
<li><code>SimpleCov::SourceFile#branches_coverage_percent</code> and <code>#methods_coverage_percent</code> are deprecated in favor of the uniform <code>covered_percent(:branch)</code> / <code>covered_percent(:method)</code>. <code>covered_percent</code> (and <code>covered_strength</code>) now take a criterion argument (defaulting to <code>:line</code>), so the same call reaches any criterion instead of line being the unprefixed default while branch and method had their own differently-named methods. <code>coverage_statistics</code> also now accepts a criterion (e.g. <code>coverage_statistics(:branch)</code>) to return that one <code>CoverageStatistics</code> rather than the whole Hash.</li>
<li><code>minimum_coverage_by_file</code> and <code>minimum_coverage_by_group</code> are deprecated in favor of the <code>coverage</code> method's <code>minimum_per_file</code> / <code>minimum_per_group</code> verbs. The legacy methods overloaded a single hash to carry both per-criterion defaults and per-path / per-group overrides, with <code>minimum_coverage_by_file</code> further distinguishing Symbol keys (criterion defaults) from String / Regexp keys (path overrides) and accepting either a bare number or a per-criterion hash as the value. The <code>coverage</code> block fixes the criterion so every threshold is a plain percentage with an <code>only:</code> target. The setter form emits a deprecation warning naming the replacement; the no-arg getter (read internally) is unchanged. Replace e.g. <code>minimum_coverage_by_file line: 70, 'app/x.rb' => 100</code> with <code>coverage(:line) { minimum_per_file 70; minimum_per_file 100, only: 'app/x.rb' }</code>. See the "Per-criterion thresholds with <code>coverage</code>" README section.</li>
</ul>
<h2>Enhancements</h2>
<ul>
<li><code>simplecov uncovered</code> gained <code>--criterion line|branch|method</code> (default <code>line</code>) so the lowest-coverage listing can rank by branch or method coverage, not just line.</li>
<li>Added the criterion-first <code>coverage</code> configuration method — a uniform way to configure each coverage criterion (<code>:line</code>, <code>:branch</code>, <code>:method</code>) in one place. <code>coverage :line do minimum 90; minimum_per_file 80; maximum_drop 5 end</code> (or the one-liner <code>coverage :branch, minimum: 80</code>) enables the criterion and declares its thresholds with identical syntax regardless of criterion, because the criterion is fixed by the enclosing call rather than smuggled into the argument as the historical "a bare number means line coverage, every other criterion needs a Hash" special case. Verbs: <code>minimum</code>, <code>maximum</code>, <code>exact</code>, <code>maximum_drop</code>, <code>minimum_per_file</code> (with <code>only:</code> String-path / Regexp overrides), and <code>minimum_per_group</code>. Options: <code>primary:</code> (the report's leading criterion), <code>oneshot:</code> (oneshot-lines mode for <code>:line</code>), and <code>:eval</code>. The flat <code>minimum_coverage</code> family remains as suite-wide sugar. Thresholds feed the same internal stores, so exit-code enforcement is unchanged. See the "Per-criterion thresholds with <code>coverage</code>" section in the README.</li>
<li>JSON formatter: <code>coverage.json</code> now carries a top-level <code>$schema</code> field holding the URL of the versioned canonical JSON Schema the document conforms to, plus a human-readable <code>meta.schema_version</code> (<code>"major.minor"</code>, currently <code>"1.0"</code>). The versioned canonical lives at <code>schemas/coverage-v1.0.schema.json</code> and is immutable per version, an unversioned convenience alias at <code>schemas/coverage.schema.json</code> always tracks the latest. Downstream tools can validate inputs, generate types, or pin to a known shape, and the document-level <code>$schema</code> makes each payload self-describing. The schema version is independent of the gem version: additive changes bump minor, removals or shape changes bump major and ship as a new <code>schemas/coverage-vX.0.schema.json</code> file so prior-version consumers stay valid. <code>meta.commit</code> carries the git commit SHA the report was generated against (or null outside a git checkout), so tools can recover the exact source from history even when <code>source_in_json false</code> omits the per-file source arrays.</li>
<li>Added <code>SimpleCov::ParallelAdapters</code> — a pluggable adapter interface for parallel test runners. SimpleCov's coordination with parallel test runners (deciding which worker does final-result work, waiting for siblings, knowing how many resultsets to expect) now routes through an adapter chain rather than hard-coding the <code>parallel_tests</code> gem's API. Two adapters ship: <code>ParallelTestsAdapter</code> wraps the historical grosser/parallel_tests gem (precise, gem-API-based); <code>GenericAdapter</code> handles any runner that follows the <code>TEST_ENV_NUMBER</code> / <code>PARALLEL_TEST_GROUPS</code> env-var convention without shipping a Ruby API. The practical impact: <strong>parallel_rspec (and any similar env-var-only runner) now works out of the box</strong> — previously every worker thought it was the "final" one and they clobbered each other's resultsets. Custom runners can register their own adapter via <code>SimpleCov::ParallelAdapters.register MyAdapter</code>, where <code>MyAdapter</code> subclasses <code>SimpleCov::ParallelAdapters::Base</code> and overrides the four contract methods (<code>active?</code>, <code>first_worker?</code>, <code>wait_for_siblings</code>, <code>expected_worker_count</code>). See <a href="https://redirect.github.com/simplecov-ruby/simplecov/issues/1065">#1065</a>.</li>
<li>Added <code>SimpleCov.ignore_branches</code> for opting out of synthetic <code>:else</code> branches that Ruby's <code>Coverage</code> library reports for constructs with no literal <code>else</code> keyword — exhaustive <code>case/in</code> pattern matches, <code>case/when</code> without <code>else</code>, <code>||=</code> / <code>&&=</code>, and <code>if</code> / <code>unless</code> without <code>else</code>. Variadic; only <code>:implicit_else</code> is supported today, with room for future synthetic branch types. Calling it without (or before) <code>enable_coverage :branch</code> is harmless — the setting is stored and applies once branch coverage is enabled. Explicit <code>else</code> arms still count. See <a href="https://redirect.github.com/simplecov-ruby/simplecov/issues/1033">#1033</a>.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/simplecov-ruby/simplecov/commit/ab1b6d4d92c153d850e677d088b1b1c6b5465f45"><code>ab1b6d4</code></a> Bump version to 1.0.1</li>
<li><a href="https://github.com/simplecov-ruby/simplecov/commit/cfb58a2822c81f4d945f93cdf4fbeb00268967fc"><code>cfb58a2</code></a> Emit branch tuples matching the running Ruby's Coverage conventions</li>
<li><a href="https://github.com/simplecov-ruby/simplecov/commit/56ed0be814e6390a93b921f9baab40654c2316d2"><code>56ed0be</code></a> Match Coverage's branch tuples for elsif and empty if bodies</li>
<li><a href="https://github.com/simplecov-ruby/simplecov/commit/bee8c3e041f15a722c2ec62bd5711b560d8446f4"><code>bee8c3e</code></a> Store forked worker coverage when Minitest owns the exit hook</li>
<li><a href="https://github.com/simplecov-ruby/simplecov/commit/ead027d2677bb4e3e3aba8a2af8e665606d8d307"><code>ead027d</code></a> Keep enforcement output out of the Warning subsystem</li>
<li><a href="https://github.com/simplecov-ruby/simplecov/commit/7274905f207746d1f79bd97ec1831a5d9447bb81"><code>7274905</code></a> Explicitly write formatter's status message to STDERR</li>
<li><a href="https://github.com/simplecov-ruby/simplecov/commit/26c8c427a398ae1eeaea311ebe2192d83fd5d88f"><code>26c8c42</code>...
_Description has been truncated_
You can view, comment on, or merge this pull request online at:
https://github.com/openstreetmap/openstreetmap-website/pull/7234
-- Commit Summary --
* Bump the dependencies group with 5 updates
-- File Changes --
M Gemfile.lock (32)
-- Patch Links --
https://github.com/openstreetmap/openstreetmap-website/pull/7234.patch
https://github.com/openstreetmap/openstreetmap-website/pull/7234.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/openstreetmap/openstreetmap-website/pull/7234
You are receiving this because you are subscribed to this thread.
Message ID: <openstreetmap/openstreetmap-website/pull/7234 at github.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/rails-dev/attachments/20260715/ad69af1a/attachment-0001.htm>
More information about the rails-dev
mailing list