Skip to content

chore: consolidate with master - #1973

Merged
isekovanic merged 16 commits into
release-v10from
chore/consolidate-with-master
Oct 30, 2026
Merged

isekovanic merged 16 commits into
release-v10from
chore/consolidate-with-master

Conversation

@isekovanic

Copy link
Copy Markdown
Contributor

CLA

  • I have signed the Stream CLA (required).
  • Code changes are tested

Description of the changes, What, Why and How?

Changelog

MartinCupela and others added 16 commits October 16, 2026 11:53
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite)
from 8.2.1 to 8.3.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v8.3.4</h2>
<h3>Features</h3>
<ul>
<li><strong>bundled-dev:</strong> support
<code>import.meta.hot.acceptExports</code> (<a
href="https://redirect.github.com/vitejs/vite/issues/23463">#23463</a>)
(<a
href="https://github.com/vitejs/vite/commit/bc0f21c56a2e003a4d2dd23ccb9da3ec8c706c4e">bc0f21c</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>avoid mutating hmr defaults (fix <a
href="https://redirect.github.com/vitejs/vite/issues/23575">#23575</a>)
(<a
href="https://redirect.github.com/vitejs/vite/issues/23576">#23576</a>)
(<a
href="https://github.com/vitejs/vite/commit/574d5e351905fe99891364d03c2440531378f7fd">574d5e3</a>)</li>
<li><strong>build:</strong> correct preloads when chunkImportMap is
enabled with non-root base (<a
href="https://redirect.github.com/vitejs/vite/issues/23698">#23698</a>)
(<a
href="https://github.com/vitejs/vite/commit/2a8c0f05c76e35c43ab3560984a5103c8db8dbcd">2a8c0f0</a>)</li>
<li><strong>build:</strong> wait for in-flight stylesheets in preload
helper (fix <a
href="https://redirect.github.com/vitejs/vite/issues/23652">#23652</a>)
(<a
href="https://redirect.github.com/vitejs/vite/issues/23662">#23662</a>)
(<a
href="https://github.com/vitejs/vite/commit/036b74599b2fe1d8c61475371b856ceb88d26963">036b745</a>)</li>
<li><strong>bundled-dev:</strong> serve <code>/@vite/client</code> and
stub <code>@vite/env</code> (<a
href="https://redirect.github.com/vitejs/vite/issues/23664">#23664</a>)
(<a
href="https://github.com/vitejs/vite/commit/5afc5a8876624888fc1e8f43fed1c85c4b0e830b">5afc5a8</a>)</li>
<li><strong>client:</strong> skip rewriting unchanged adopted styles (<a
href="https://redirect.github.com/vitejs/vite/issues/23697">#23697</a>)
(<a
href="https://github.com/vitejs/vite/commit/fa7146938b0ca703653c90c20907191a01c032ba">fa71469</a>)</li>
<li><strong>css:</strong> resolve imported preprocessors from their file
path with lightningcss (<a
href="https://redirect.github.com/vitejs/vite/issues/23688">#23688</a>)
(<a
href="https://github.com/vitejs/vite/commit/cf52011c46409a4a45f3d74bba631b8f005c4bc9">cf52011</a>)</li>
<li><strong>deps:</strong> update all non-major dependencies (<a
href="https://redirect.github.com/vitejs/vite/issues/23648">#23648</a>)
(<a
href="https://github.com/vitejs/vite/commit/8a4c19cfc035f2dd203f2fa6d00ab9256a5e77c9">8a4c19c</a>)</li>
<li><strong>deps:</strong> update rolldown-related dependencies (<a
href="https://redirect.github.com/vitejs/vite/issues/23649">#23649</a>)
(<a
href="https://github.com/vitejs/vite/commit/794516d50cff80e405bc9b3e5faac1c82987566c">794516d</a>)</li>
<li><strong>dev:</strong> a restart requested during a restart used to
be dropped (fix <a
href="https://redirect.github.com/vitejs/vite/issues/23392">#23392</a>)
(<a
href="https://redirect.github.com/vitejs/vite/issues/23484">#23484</a>)
(<a
href="https://github.com/vitejs/vite/commit/70d56ea1848909edab416934f3f68ce14343eb73">70d56ea</a>)</li>
<li>don't treat modules ending with js-like query as js (<a
href="https://redirect.github.com/vitejs/vite/issues/23687">#23687</a>)
(<a
href="https://github.com/vitejs/vite/commit/fcb6f1252a95857823d935f98554b938888d41a0">fcb6f12</a>)</li>
<li><strong>html:</strong> avoid adding filesystem root to watcher (<a
href="https://redirect.github.com/vitejs/vite/issues/23689">#23689</a>)
(<a
href="https://github.com/vitejs/vite/commit/3a7f2aea757d59bae66ad6edf6b321d26a7e6778">3a7f2ae</a>)</li>
<li><strong>html:</strong> skip caching CSS of chunks in a cycle (fix <a
href="https://redirect.github.com/vitejs/vite/issues/23628">#23628</a>)
(<a
href="https://redirect.github.com/vitejs/vite/issues/23636">#23636</a>)
(<a
href="https://github.com/vitejs/vite/commit/15d82f7dc679ab9c18d5ce2c3711157c2365ddd1">15d82f7</a>)</li>
<li><strong>optimizer:</strong> scan deep imports with custom extensions
(<a
href="https://redirect.github.com/vitejs/vite/issues/23678">#23678</a>)
(<a
href="https://github.com/vitejs/vite/commit/8579189bae8626b6ddab55a09325e209d62e027e">8579189</a>)</li>
<li>remove input option unescaping for now (<a
href="https://redirect.github.com/vitejs/vite/issues/23694">#23694</a>)
(<a
href="https://github.com/vitejs/vite/commit/facc2fb1fffce03d9e2dd7011d0bd0eeddc7d0f6">facc2fb</a>)</li>
<li><strong>server:</strong> match static aliases on path boundaries (<a
href="https://redirect.github.com/vitejs/vite/issues/23643">#23643</a>)
(<a
href="https://github.com/vitejs/vite/commit/b28db28e9e62d9866a9a0f1b22e74589cc180577">b28db28</a>)</li>
<li><strong>watcher:</strong> normalize file before root check in
<code>ensureWatchedFile</code> (<a
href="https://redirect.github.com/vitejs/vite/issues/23673">#23673</a>)
(<a
href="https://github.com/vitejs/vite/commit/12bb28c22379c8d2fe90088fa0eefbfa2ab3fb80">12bb28c</a>)</li>
</ul>
<h3>Performance Improvements</h3>
<ul>
<li><strong>module-runner:</strong> skip cloning call sites that have no
source map (<a
href="https://redirect.github.com/vitejs/vite/issues/23646">#23646</a>)
(<a
href="https://github.com/vitejs/vite/commit/3d674869a50a0bca84a8cc8dc55bd35d57100e37">3d67486</a>)</li>
</ul>
<h3>Code Refactoring</h3>
<ul>
<li><strong>bundled-dev:</strong> import CSS HMR helpers from
<code>/@vite/client</code> (<a
href="https://redirect.github.com/vitejs/vite/issues/23674">#23674</a>)
(<a
href="https://github.com/vitejs/vite/commit/182f5b2a65391da5bee05f9c3df1aeb3794e98d9">182f5b2</a>)</li>
</ul>
<h2>v8.3.3</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>deps:</strong> update launch-editor to v2.14.2 (<a
href="https://redirect.github.com/vitejs/vite/issues/23654">#23654</a>)
(<a
href="https://github.com/vitejs/vite/commit/22fd1d5238cce2ee9db0eb4122f9e8feb6b06097">22fd1d5</a>)</li>
<li><strong>html:</strong> filename passed to transformIndexHtml should
not include queries (<a
href="https://redirect.github.com/vitejs/vite/issues/23653">#23653</a>)
(<a
href="https://github.com/vitejs/vite/commit/7dafd8e56f152403a3230608fa4005273c2e9e17">7dafd8e</a>)</li>
<li><strong>server:</strong> check <code>fs.serve</code> for
<code>?vite-wasm-instance</code> (<a
href="https://redirect.github.com/vitejs/vite/issues/23655">#23655</a>)
(<a
href="https://github.com/vitejs/vite/commit/ba8b7ab43b4afa5d0292ab4b6e3a7b5033cc9c73">ba8b7ab</a>)</li>
<li><strong>server:</strong> store ids to <code>safeModulePaths</code>
rather than URLs (<a
href="https://redirect.github.com/vitejs/vite/issues/23656">#23656</a>)
(<a
href="https://github.com/vitejs/vite/commit/c3e06f92e969952466b4e2f5801e85e1e00cd905">c3e06f9</a>)</li>
</ul>
<h2>v8.3.2</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>build:</strong> preload CSS correctly when
<code>renderBuiltUrl</code> returns URLs with queries (<a
href="https://redirect.github.com/vitejs/vite/issues/23611">#23611</a>)
(<a
href="https://github.com/vitejs/vite/commit/64e0a215c24f0522b27b91f93cfd93e317b94481">64e0a21</a>)</li>
<li><strong>bundled-dev:</strong> serve lazy chunk sourcemaps (<a
href="https://redirect.github.com/vitejs/vite/issues/23026">#23026</a>)
(<a
href="https://github.com/vitejs/vite/commit/eb7aa9a8816a1e926d5d9b4cbe7e796b61314ce2">eb7aa9a</a>)</li>
<li><strong>bundled-dev:</strong> serve the rolldown runtime from the
installed rolldown (<a
href="https://redirect.github.com/vitejs/vite/issues/23568">#23568</a>)
(<a
href="https://github.com/vitejs/vite/commit/bc598a6a8a6b7d6e157e9f19c16911cff8d2360c">bc598a6</a>)</li>
<li><strong>deps:</strong> update all non-major dependencies (<a
href="https://redirect.github.com/vitejs/vite/issues/23601">#23601</a>)
(<a
href="https://github.com/vitejs/vite/commit/9944fa6033873f13ae88f59e023ab642c50fee2b">9944fa6</a>)</li>
<li><strong>deps:</strong> update rolldown-related dependencies (<a
href="https://redirect.github.com/vitejs/vite/issues/23602">#23602</a>)
(<a
href="https://github.com/vitejs/vite/commit/88c17415af221b3a13e778f4f2c0e907c8287baf">88c1741</a>)</li>
<li><strong>html:</strong> resolve percent-encoded srcset urls (<a
href="https://redirect.github.com/vitejs/vite/issues/23609">#23609</a>)
(<a
href="https://github.com/vitejs/vite/commit/53f1ce7bfe38426861f6da572ef0e3359f6a80cd">53f1ce7</a>)</li>
<li>limit size of object and array printing via
<code>forwardConsole</code> (<a
href="https://redirect.github.com/vitejs/vite/issues/23565">#23565</a>)
(<a
href="https://github.com/vitejs/vite/commit/e64a5877dd3e552843a545749ccc257568917d28">e64a587</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted --><a
href="https://github.com/vitejs/vite/compare/v8.3.3...v8.3.4">8.3.4</a>
(2026-10-08)<!-- raw HTML omitted --></h2>
<h3>Features</h3>
<ul>
<li><strong>bundled-dev:</strong> support
<code>import.meta.hot.acceptExports</code> (<a
href="https://redirect.github.com/vitejs/vite/issues/23463">#23463</a>)
(<a
href="https://github.com/vitejs/vite/commit/bc0f21c56a2e003a4d2dd23ccb9da3ec8c706c4e">bc0f21c</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>avoid mutating hmr defaults (fix <a
href="https://redirect.github.com/vitejs/vite/issues/23575">#23575</a>)
(<a
href="https://redirect.github.com/vitejs/vite/issues/23576">#23576</a>)
(<a
href="https://github.com/vitejs/vite/commit/574d5e351905fe99891364d03c2440531378f7fd">574d5e3</a>)</li>
<li><strong>build:</strong> correct preloads when chunkImportMap is
enabled with non-root base (<a
href="https://redirect.github.com/vitejs/vite/issues/23698">#23698</a>)
(<a
href="https://github.com/vitejs/vite/commit/2a8c0f05c76e35c43ab3560984a5103c8db8dbcd">2a8c0f0</a>)</li>
<li><strong>build:</strong> wait for in-flight stylesheets in preload
helper (fix <a
href="https://redirect.github.com/vitejs/vite/issues/23652">#23652</a>)
(<a
href="https://redirect.github.com/vitejs/vite/issues/23662">#23662</a>)
(<a
href="https://github.com/vitejs/vite/commit/036b74599b2fe1d8c61475371b856ceb88d26963">036b745</a>)</li>
<li><strong>bundled-dev:</strong> serve <code>/@vite/client</code> and
stub <code>@vite/env</code> (<a
href="https://redirect.github.com/vitejs/vite/issues/23664">#23664</a>)
(<a
href="https://github.com/vitejs/vite/commit/5afc5a8876624888fc1e8f43fed1c85c4b0e830b">5afc5a8</a>)</li>
<li><strong>client:</strong> skip rewriting unchanged adopted styles (<a
href="https://redirect.github.com/vitejs/vite/issues/23697">#23697</a>)
(<a
href="https://github.com/vitejs/vite/commit/fa7146938b0ca703653c90c20907191a01c032ba">fa71469</a>)</li>
<li><strong>css:</strong> resolve imported preprocessors from their file
path with lightningcss (<a
href="https://redirect.github.com/vitejs/vite/issues/23688">#23688</a>)
(<a
href="https://github.com/vitejs/vite/commit/cf52011c46409a4a45f3d74bba631b8f005c4bc9">cf52011</a>)</li>
<li><strong>deps:</strong> update all non-major dependencies (<a
href="https://redirect.github.com/vitejs/vite/issues/23648">#23648</a>)
(<a
href="https://github.com/vitejs/vite/commit/8a4c19cfc035f2dd203f2fa6d00ab9256a5e77c9">8a4c19c</a>)</li>
<li><strong>deps:</strong> update rolldown-related dependencies (<a
href="https://redirect.github.com/vitejs/vite/issues/23649">#23649</a>)
(<a
href="https://github.com/vitejs/vite/commit/794516d50cff80e405bc9b3e5faac1c82987566c">794516d</a>)</li>
<li><strong>dev:</strong> a restart requested during a restart used to
be dropped (fix <a
href="https://redirect.github.com/vitejs/vite/issues/23392">#23392</a>)
(<a
href="https://redirect.github.com/vitejs/vite/issues/23484">#23484</a>)
(<a
href="https://github.com/vitejs/vite/commit/70d56ea1848909edab416934f3f68ce14343eb73">70d56ea</a>)</li>
<li>don't treat modules ending with js-like query as js (<a
href="https://redirect.github.com/vitejs/vite/issues/23687">#23687</a>)
(<a
href="https://github.com/vitejs/vite/commit/fcb6f1252a95857823d935f98554b938888d41a0">fcb6f12</a>)</li>
<li><strong>html:</strong> avoid adding filesystem root to watcher (<a
href="https://redirect.github.com/vitejs/vite/issues/23689">#23689</a>)
(<a
href="https://github.com/vitejs/vite/commit/3a7f2aea757d59bae66ad6edf6b321d26a7e6778">3a7f2ae</a>)</li>
<li><strong>html:</strong> skip caching CSS of chunks in a cycle (fix <a
href="https://redirect.github.com/vitejs/vite/issues/23628">#23628</a>)
(<a
href="https://redirect.github.com/vitejs/vite/issues/23636">#23636</a>)
(<a
href="https://github.com/vitejs/vite/commit/15d82f7dc679ab9c18d5ce2c3711157c2365ddd1">15d82f7</a>)</li>
<li><strong>optimizer:</strong> scan deep imports with custom extensions
(<a
href="https://redirect.github.com/vitejs/vite/issues/23678">#23678</a>)
(<a
href="https://github.com/vitejs/vite/commit/8579189bae8626b6ddab55a09325e209d62e027e">8579189</a>)</li>
<li>remove input option unescaping for now (<a
href="https://redirect.github.com/vitejs/vite/issues/23694">#23694</a>)
(<a
href="https://github.com/vitejs/vite/commit/facc2fb1fffce03d9e2dd7011d0bd0eeddc7d0f6">facc2fb</a>)</li>
<li><strong>server:</strong> match static aliases on path boundaries (<a
href="https://redirect.github.com/vitejs/vite/issues/23643">#23643</a>)
(<a
href="https://github.com/vitejs/vite/commit/b28db28e9e62d9866a9a0f1b22e74589cc180577">b28db28</a>)</li>
<li><strong>watcher:</strong> normalize file before root check in
<code>ensureWatchedFile</code> (<a
href="https://redirect.github.com/vitejs/vite/issues/23673">#23673</a>)
(<a
href="https://github.com/vitejs/vite/commit/12bb28c22379c8d2fe90088fa0eefbfa2ab3fb80">12bb28c</a>)</li>
</ul>
<h3>Performance Improvements</h3>
<ul>
<li><strong>module-runner:</strong> skip cloning call sites that have no
source map (<a
href="https://redirect.github.com/vitejs/vite/issues/23646">#23646</a>)
(<a
href="https://github.com/vitejs/vite/commit/3d674869a50a0bca84a8cc8dc55bd35d57100e37">3d67486</a>)</li>
</ul>
<h3>Code Refactoring</h3>
<ul>
<li><strong>bundled-dev:</strong> import CSS HMR helpers from
<code>/@vite/client</code> (<a
href="https://redirect.github.com/vitejs/vite/issues/23674">#23674</a>)
(<a
href="https://github.com/vitejs/vite/commit/182f5b2a65391da5bee05f9c3df1aeb3794e98d9">182f5b2</a>)</li>
</ul>
<h2><!-- raw HTML omitted --><a
href="https://github.com/vitejs/vite/compare/v8.3.2...v8.3.3">8.3.3</a>
(2026-10-06)<!-- raw HTML omitted --></h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>deps:</strong> update launch-editor to v2.14.2 (<a
href="https://redirect.github.com/vitejs/vite/issues/23654">#23654</a>)
(<a
href="https://github.com/vitejs/vite/commit/22fd1d5238cce2ee9db0eb4122f9e8feb6b06097">22fd1d5</a>)</li>
<li><strong>html:</strong> filename passed to transformIndexHtml should
not include queries (<a
href="https://redirect.github.com/vitejs/vite/issues/23653">#23653</a>)
(<a
href="https://github.com/vitejs/vite/commit/7dafd8e56f152403a3230608fa4005273c2e9e17">7dafd8e</a>)</li>
<li><strong>server:</strong> check <code>fs.serve</code> for
<code>?vite-wasm-instance</code> (<a
href="https://redirect.github.com/vitejs/vite/issues/23655">#23655</a>)
(<a
href="https://github.com/vitejs/vite/commit/ba8b7ab43b4afa5d0292ab4b6e3a7b5033cc9c73">ba8b7ab</a>)</li>
<li><strong>server:</strong> store ids to <code>safeModulePaths</code>
rather than URLs (<a
href="https://redirect.github.com/vitejs/vite/issues/23656">#23656</a>)
(<a
href="https://github.com/vitejs/vite/commit/c3e06f92e969952466b4e2f5801e85e1e00cd905">c3e06f9</a>)</li>
</ul>
<h2><!-- raw HTML omitted --><a
href="https://github.com/vitejs/vite/compare/v8.3.1...v8.3.2">8.3.2</a>
(2026-10-01)<!-- raw HTML omitted --></h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>build:</strong> preload CSS correctly when
<code>renderBuiltUrl</code> returns URLs with queries (<a
href="https://redirect.github.com/vitejs/vite/issues/23611">#23611</a>)
(<a
href="https://github.com/vitejs/vite/commit/64e0a215c24f0522b27b91f93cfd93e317b94481">64e0a21</a>)</li>
<li><strong>bundled-dev:</strong> serve lazy chunk sourcemaps (<a
href="https://redirect.github.com/vitejs/vite/issues/23026">#23026</a>)
(<a
href="https://github.com/vitejs/vite/commit/eb7aa9a8816a1e926d5d9b4cbe7e796b61314ce2">eb7aa9a</a>)</li>
<li><strong>bundled-dev:</strong> serve the rolldown runtime from the
installed rolldown (<a
href="https://redirect.github.com/vitejs/vite/issues/23568">#23568</a>)
(<a
href="https://github.com/vitejs/vite/commit/bc598a6a8a6b7d6e157e9f19c16911cff8d2360c">bc598a6</a>)</li>
<li><strong>deps:</strong> update all non-major dependencies (<a
href="https://redirect.github.com/vitejs/vite/issues/23601">#23601</a>)
(<a
href="https://github.com/vitejs/vite/commit/9944fa6033873f13ae88f59e023ab642c50fee2b">9944fa6</a>)</li>
<li><strong>deps:</strong> update rolldown-related dependencies (<a
href="https://redirect.github.com/vitejs/vite/issues/23602">#23602</a>)
(<a
href="https://github.com/vitejs/vite/commit/88c17415af221b3a13e778f4f2c0e907c8287baf">88c1741</a>)</li>
<li><strong>html:</strong> resolve percent-encoded srcset urls (<a
href="https://redirect.github.com/vitejs/vite/issues/23609">#23609</a>)
(<a
href="https://github.com/vitejs/vite/commit/53f1ce7bfe38426861f6da572ef0e3359f6a80cd">53f1ce7</a>)</li>
<li>limit size of object and array printing via
<code>forwardConsole</code> (<a
href="https://redirect.github.com/vitejs/vite/issues/23565">#23565</a>)
(<a
href="https://github.com/vitejs/vite/commit/e64a5877dd3e552843a545749ccc257568917d28">e64a587</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vitejs/vite/commit/b6c20f6a8126d8561891e5fb9368e8fc9da37538"><code>b6c20f6</code></a>
release: v8.3.4 (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/23702">#23702</a>)</li>
<li><a
href="https://github.com/vitejs/vite/commit/b28db28e9e62d9866a9a0f1b22e74589cc180577"><code>b28db28</code></a>
fix(server): match static aliases on path boundaries (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/23643">#23643</a>)</li>
<li><a
href="https://github.com/vitejs/vite/commit/bc0f21c56a2e003a4d2dd23ccb9da3ec8c706c4e"><code>bc0f21c</code></a>
feat(bundled-dev): support <code>import.meta.hot.acceptExports</code>
(<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/23463">#23463</a>)</li>
<li><a
href="https://github.com/vitejs/vite/commit/fa7146938b0ca703653c90c20907191a01c032ba"><code>fa71469</code></a>
fix(client): skip rewriting unchanged adopted styles (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/23697">#23697</a>)</li>
<li><a
href="https://github.com/vitejs/vite/commit/2a8c0f05c76e35c43ab3560984a5103c8db8dbcd"><code>2a8c0f0</code></a>
fix(build): correct preloads when chunkImportMap is enabled with
non-root bas...</li>
<li><a
href="https://github.com/vitejs/vite/commit/3a7f2aea757d59bae66ad6edf6b321d26a7e6778"><code>3a7f2ae</code></a>
fix(html): avoid adding filesystem root to watcher (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/23689">#23689</a>)</li>
<li><a
href="https://github.com/vitejs/vite/commit/facc2fb1fffce03d9e2dd7011d0bd0eeddc7d0f6"><code>facc2fb</code></a>
fix: remove input option unescaping for now (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/23694">#23694</a>)</li>
<li><a
href="https://github.com/vitejs/vite/commit/70d56ea1848909edab416934f3f68ce14343eb73"><code>70d56ea</code></a>
fix(dev): a restart requested during a restart used to be dropped (fix
<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/23392">#23392</a>...</li>
<li><a
href="https://github.com/vitejs/vite/commit/cf52011c46409a4a45f3d74bba631b8f005c4bc9"><code>cf52011</code></a>
fix(css): resolve imported preprocessors from their file path with
lightningc...</li>
<li><a
href="https://github.com/vitejs/vite/commit/fcb6f1252a95857823d935f98554b938888d41a0"><code>fcb6f12</code></a>
fix: don't treat modules ending with js-like query as js (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/23687">#23687</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/vitejs/vite/commits/v8.3.4/packages/vite">compare
view</a></li>
</ul>
</details>
<br />


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

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/GetStream/stream-chat-js/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Title: fix(poll): keep translations from poll.updated in the poll state

## CLA
- [x] Code changes are tested

## Description of the changes, What, Why and How?

The v9 counterpart of <v10 PR link> (`release-v10`), for the stable 9.x
line that
stream-chat-react v14 depends on.
**What.** `Poll.handlePollUpdated` now keeps the server's question and
description translations (`name_i18n`, `description_i18n`) from a
`poll.updated`
event.
**Why.** The backend translates polls automatically

([CHA-5308](https://linear.app/stream/issue/CHA-5308/implement-api-changes)),
and
#1878 added the `TranslatedField` response fields in 9.54.0. But
`handlePollUpdated` copies the event through `extractPollData`, which
builds the
`PollData` request type and lists its fields one by one. The
translations aren't
in that list, so they never reached `poll.state`. Two cases are
affected:

- **Edited question:** readers in other languages see the old
translation, or the
new question untranslated, until they reload.
- **Language added on demand:** `translateMessage` on a poll message
translates
the poll on the server and sends `poll.updated`. The question's new
language
never reaches open clients.

Option translations were not affected, because `options` is copied
whole. The other paths that write poll state keep translations:
`message.new`, vote events (`answer_text_i18n` arrives with
`poll_vote`), `query()` and `reinitializeState`.

**How.** `handlePollUpdated` copies both fields from `event.poll`
explicitly,
also when they are absent. `poll.updated` carries the whole poll, and a
change
made under channel-only translation removes the old translations, so an
absent
field clears the stale ones. `extractPollData` is public and returns a
request
type, so it is left as it is. There are no public API or type changes:
`PollState` already has both fields.
**Tests**
- `test/unit/poll.test.js`: an edited question's translations are
stored, a
language added later is stored, the description's translations are
stored, and
translations the event no longer carries are cleared.
- `test/unit/poll_manager.test.ts`: `poll.updated` sent through the
client
updates the cached poll's `name_i18n`.

`yarn types`, `yarn lint` and `yarn test` pass (3212 tests). The run
reports 1unhandled error, from `poll.test.js` (`slowRequest.reject`). It
also happens on an unmodified `master` and is unrelated.

**Verified live** against an app with auto-translation on:
- **Published 9.54.0:** a `translateMessage` to Portuguese reached the
server, but the open client's cached poll didn't keep `pt_text`.
- **This build:** a `translateMessage` to Dutch added `nl_text` to the
cached poll.

Consumer: GetStream/stream-chat-react <React v14 PR link>, poll
translations in the React v14 UI.

## Changelog

- Fix: `poll.updated` now keeps the poll's question and description
translations (`name_i18n`, `description_i18n`), so edited questions and
languages added with `translateMessage` show without a reload
## CLA

- [x] I have signed the [Stream
CLA](https://docs.google.com/forms/d/e/1FAIpQLScFKsKkAJI7mhCr7K9rEIOpqIDThrWxuvxnwUq2XkHyG154vQ/viewform)
(required).
- [x] Code changes are tested

## Description of the changes, What, Why and How?

Ports GetStream/stream-video-js#2464. Adds a Claude Code PreToolUse hook
that blocks PR creation (`gh pr create` and MCP PR-creation tools)
unless a Linear ticket ID is in the PR title or PR body. The branch name
does not count.

- `.claude/hooks/require-linear-ticket.sh` needs only bash, jq and curl.
Every other tool call exits 0.
- Accepted team keys: `REACT`, `RN`, `CHAT` and `VID` (override with
`LINEAR_TEAM_KEYS`).
- For `gh pr create`, only the text from the `gh pr create` invocation
onward is scanned, and `--head`/`--base`/`--repo` values are ignored.
`--body-file` contents are included. For MCP tools, only `title` and
`body` are read.
- If `LINEAR_API_KEY` is set, the ticket's existence is checked via
Linear GraphQL. Only a "not found" response blocks; auth or network
errors warn and allow.
- Registered in a new project `.claude/settings.json`; the workflow is
documented in `AGENTS.md` (file tickets in `REACT`, or `RN` for React
Native-driven work).
- Pipe-tested: missing ticket, ID only in the branch name or `--head`,
and IDs from other teams (e.g. `FEEDS-…`) exit 2;
`REACT`/`RN`/`CHAT`/`VID` IDs in the title or body exit 0; unrelated
commands exit 0.

Ticket: https://linear.app/stream/issue/REACT-1188

## Changelog

- No user-facing changes (repository tooling only).
… expired (#1944)

## CLA

- [ ] I have signed the [Stream
CLA](https://docs.google.com/forms/d/e/1FAIpQLScFKsKkAJI7mhCr7K9rEIOpqIDThrWxuvxnwUq2XkHyG154vQ/viewform)
(required).
- [x] Code changes are tested

## Description of the changes, What, Why and How?

Linear: [CHA-6335](https://linear.app/stream/issue/CHA-6335)

### What the server now does

GetStream/chat#19359 (merged, ships with the next backend release)
changes how chat-ws closes a connected socket whose token expires while
the app has `auto_disconnect_ws` on. Before, the socket was dropped with
no frame, so the client saw a 1006. Now the server:

1. sends the existing `connection.error` event, the same payload a
handshake with an expired token gets:

`{"type":"connection.error","error":{"code":40,"StatusCode":401,"message":"JWTAuth
error: token is expired (exp)"}}`
2. closes with **1008**. It is deliberately not 1000, because this SDK
treats 1000 as final and would not reconnect.

### Why this SDK needs a change

The Swift, Kotlin and Flutter SDKs already refresh the token when they
get that event, then reconnect. `StableWSConnection` only looks at
`connection.error` before the connection resolves. After that the event
is dispatched and otherwise ignored, and the close takes the normal
`_reconnect()` path. That path reconnects with the **expired** token,
gets rejected with `token_expired`, and only then calls the
`tokenProvider` (`_reconnect({ refreshToken: true })`).

Every token expiry on such an app therefore costs one rejected connect
and a few seconds without a socket.

### The change (`src/connection.ts`)

- `onmessage` sets `tokenExpiredByServer` when a resolved socket
receives `connection.error` with code 40. The event is still dispatched
as before.
- `onclose` (non-1000 branch) and `onerror` go through a new
`_reconnectAfterFailure()`. When the flag is set and the token manager
is not static, it calls `_reconnect({ refreshToken: true })`. Otherwise
it calls `_reconnect()` exactly as today.
- `onerror` is covered too, so an error event fired next to the close
cannot win the race and reconnect with the stale token.
- The flag is cleared whenever a new socket is set up
(`_setupConnectionPromise`) and on `disconnect()`, so it never carries
over to another socket.

### Measured effect

Measured on one production region (us-east4) over 24h, plus a peak-hour
sample:

- About **2.8M rejected reconnects/day** came within 10s of the server
closing the same user's socket at token expiry.
- **More than 99.9%** of those came from stream-chat-js (React and React
Native); the native SDKs make up ~0.05%.
- For the most affected app, this pattern was about half of all its
`token_expired` rejects. 92% of those users connected with a new token
within 2 minutes (median ~4s), which means a `tokenProvider` was in use:
the stale retry was pure waste.

Once both the backend release and this change are out, those reconnects
should go straight through with a fresh token.

### Backward compatibility

- **Older servers** (and v2 / video transports) never send this event
after connect, so the flag is never set and nothing changes.
- **Static tokens** (no `tokenProvider`): the token cannot be refreshed,
so they reconnect exactly as before.
- **1000 closes** and **`disconnect()`** are unaffected: the 1000 branch
does not reconnect, and `disconnect()` clears the flag.
- **No public API change.** `tokenExpiredByServer` is a new field on the
internal `StableWSConnection` class.

### Not changed here

In `_reconnect`, `loadToken()` for `refreshToken` runs outside the
`try`. If the `tokenProvider` rejects, the reconnect loop stops. This is
the same hazard the existing `token_expired` → `refreshToken` path
already has. This PR only reaches that path one round trip earlier.

### Tests

New `token expired by the server after connect` block in
`test/unit/connection.test.js`:

- With a provider, a code 40 event followed by a 1008 close (or an error
and then a close) reconnects with `refreshToken: true`.
- With a static token, the reconnect is called with no arguments.
- A close without the event (1008 or 1006), or a `connection.error` with
another code, does not refresh.
- The event followed by a 1000 close does not reconnect.
- The event is still dispatched.
- The flag is cleared on new-socket setup and on `disconnect()`.
- A round trip against a local WS server that sends the event and closes
with 1008: the second connect carries the new provider token (`token-1`,
`token-2`). Without the fix it reconnects with `token-1` twice.

Results:

- `yarn lint` and `yarn types` pass.
- `yarn vitest run`: 81 files, 3221 passed and 1 skipped on Node 22.
- On Node 20, 3 `client.test.js` tests that use `Promise.withResolvers`
fail on `master` too; they are unrelated to this change.

## Changelog

- Refresh the token before reconnecting when the server reports that the
token of a connected socket expired (`connection.error` code 40). This
avoids one rejected `token_expired` reconnect per token expiry for apps
using a `tokenProvider`.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Laurent Schaffner <laurentschaffner@Laurents-MacBook-Pro-Stream.local>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
## [9.54.1](v9.54.0...v9.54.1) (2026-10-27)

### Bug Fixes

* **poll:** keep translations from poll.updated in the poll state ([#1938](#1938)) ([3c1a18a](3c1a18a)), closes [#1878](#1878)
* refresh the token before reconnecting when the server reports it expired ([#1944](#1944)) ([2910396](2910396)), closes [GetStream/chat#19359](https://github.com/GetStream/chat/issues/19359)
* type fixes from docs check; add docs snippet runner ([#1902](#1902)) ([2095fc1](2095fc1))
* type issues from platform docs check; add docs snippet test for the platform docs ([#1914](#1914)) ([c7706d2](c7706d2))
## CLA

- [x] I have signed the [Stream
CLA](https://docs.google.com/forms/d/e/1FAIpQLScFKsKkAJI7mhCr7K9rEIOpqIDThrWxuvxnwUq2XkHyG154vQ/viewform)
(required).
- [x] Code changes are tested

## Description of the changes, What, Why and How?

Ticket:
https://linear.app/stream/issue/REACT-1415/uncaught-error-when-removing-the-last-vote-in-a-poll

Removing the last vote on an option optimistically (added in 9.54.0,
#1895) left `latest_votes_by_option[optionId]` as an empty array. The
server never sends that: it drops the key once an option has no votes.
SDKs that read the first vote of each option without a guard crash on
it. React Native crashes in its channel list preview when the last vote
of a poll that is the channel's last message is removed.

We already dropped the key for `vote_counts_by_option` but missed
`latest_votes_by_option`. The fake-server simulation only compares vote
counts and own votes against the server, so it couldn't catch this.

`applyOwnVoteDelta` now deletes the key when an option's latest votes
become empty, the same as for vote counts. The existing removal test
asserted `[]` and now asserts the key is gone.

## Changelog

- Fixed optimistic vote removal leaving an empty
`latest_votes_by_option` entry, which crashed SDKs reading the first
vote of each option.
…d latest pages (#1934)

## CLA

- [ ] I have signed the [Stream
CLA](https://docs.google.com/forms/d/e/1FAIpQLScFKsKkAJI7mhCr7K9rEIOpqIDThrWxuvxnwUq2XkHyG154vQ/viewform)
(required).
- [x] Code changes are tested

## Description of the changes, What, Why and How?

Fixes two message pagination bugs, one commit each.

### #1931: `queryChannels` with `message_limit: 0` sets `hasPrev` to
false

`hydrateActiveChannels` computed the page size with `message_limit ||
25`, so `0` became 25. The empty page then failed the `0 >= 25` "has
more" check and reset `hasPrev` to false on every returned channel, so
older messages could never be loaded (and channels with nothing loaded
stayed empty).

- `||` is now `??`, matching `Channel.query`.
- `messageSetPagination` leaves the pagination of a set that already has
messages untouched when the requested page size is 0, since an empty
page says nothing about what else exists. This also applies to
`Channel.query({ messages: { limit: 0 } })`, which previously forced
`hasPrev: true` even on fully loaded channels. A set with no messages
still ends up with `hasPrev: true`, so it can load messages.

### #1930: messages sent while disconnected are missing and unreachable

When the newest page of a channel (from `queryChannels`, `recoverState`
or `watch`) shares no messages with the loaded latest messages and is
newer than all of them, `findTargetMessageSet`'s `'latest'` case
appended it to the latest set as if continuous. Pagination then asked
for messages older than the oldest loaded one, so the gap was never
requested.

- New `ChannelState._dropLatestMessagesDisjointFrom(page)` empties the
stale latest set in that situation, so the newest page starts fresh and
paginating back loads the gap and eventually reconnects with the older
messages.
- `Channel._initializeState` calls it only for `'latest'` and only when
the query has no message cursor (new `hasMessagePaginationCursor` util),
so forward-cursor queries like `watch({ messages: { id_gt } })` still
extend the latest messages.
- It is skipped while the latest set holds local-only messages
(`sending`, `failed`, `error`, `ephemeral`). Keeping them while dropping
the rest would make one of them the oldest message, whose id SDKs use as
the pagination cursor and the server does not know. In that edge case
the previous merge behavior applies.
- Live `message.new` events are unaffected; they do not go through
`_initializeState`.

### Notes for reviewers

- `ChannelState._dropLatestMessagesDisjointFrom` is a new
underscore-prefixed method on an exported class, following the existing
`_initializeState` convention. `hasMessagePaginationCursor` is not
re-exported from `src/index.ts`.
- Not addressed here: `messageSetBounds` in `channel_state.ts` treats
`a[0]` as the newest message while sets are stored oldest first, so
`messageSetsOverlapByTimestamp` misses partial overlaps. This fix does
not rely on it; correcting it changes other message set paths and is
better as a separate change.

### Tests

New regression tests in `test/unit/client.test.js` cover:
`message_limit: 0` on loaded, fully loaded and empty channels;
paginating back through the gap after recovery until all messages are in
one set; the `watch()` path; overlapping pages still merging;
forward-cursor pages; a stale latest set replaced while the user is
viewing an older jumped-to set; failed local messages being kept; and
live `message.new` not wiping messages. Each guard's test was checked to
fail with that guard removed.

## Changelog

- Fixed `queryChannels` with `message_limit: 0` resetting `hasPrev` so
channels stopped loading older messages (#1931)
- Fixed messages that arrived while disconnected being hidden behind the
newest page and unreachable by pagination (#1930)

---------

Co-authored-by: Ivan Sekovanikj <31964049+isekovanic@users.noreply.github.com>
Ticket: https://linear.app/stream/issue/REACT-1211

Fixes #1903

## CLA

- [x] I have signed the [Stream
CLA](https://docs.google.com/forms/d/e/1FAIpQLScFKsKkAJI7mhCr7K9rEIOpqIDThrWxuvxnwUq2XkHyG154vQ/viewform)
(required).
- [ ] Code changes are tested (docs only, no code changes; every changed
link was checked and returns 200)

## Description of the changes, What, Why and How?

Fixes dead links in the repo's markdown docs.

- `README.md`: the v9 release guide link pointed to
`/chat/docs/node/upgrade-stream-chat-to-v9`, which returns 404. The
guide lives at `/chat/docs/javascript/upgrade-stream-chat-to-v9/`.
- `docs/fileUpload.md`: the Stream Dashboard link had a typo
(`getsream.io`).
- `CONTRIBUTING.md`: the release section linked to the removed
`initiate_release` workflow and described the old PR-based release flow.
It now describes the current process: run the `Release` workflow from
`master`, `release-v8` or `rc`, with semantic-release deriving the
version and changelog from commit messages, plus the `dry_run` option.

I checked every other link in the non-changelog markdown files and found
no other broken ones.

## Changelog

- Fix broken links in README and docs, and update the release guide in
CONTRIBUTING.md
## CLA

- [x] I have signed the [Stream
CLA](https://docs.google.com/forms/d/e/1FAIpQLScFKsKkAJI7mhCr7K9rEIOpqIDThrWxuvxnwUq2XkHyG154vQ/viewform)
(required).
- [x] Code changes are tested

## Description of the changes, What, Why and How?

Ticket:
https://linear.app/stream/issue/RN-469/edits-drop-custom-attachments-from-messages

Editing a message dropped its attachments that are not uploads (custom
types, giphy, ...). The composer loads them into the attachment manager,
but the composition middlewares only composed finished uploads, so they
were left out. For a message with only such attachments, `localMessage`
kept the `attachments: []` that `compose()` starts with, and SDKs that
send `localMessage` as the update (React Native) made the server delete
them all. In a mixed message, the custom ones were dropped from both
payloads. Confirmed against the API: `[product]` came back as `[]` after
an edit, and `[product, image]` as `[image]`.

The attachment middlewares (default, pending uploads and draft) now
treat an attachment as sendable when its upload finished or when it was
never an upload. Attachments added during the edit behave as before:
pending uploads only go on the optimistic message, and failed ones are
left out.

Tests compose real edits and assert the `updateMessage` request: custom
only, custom + image (with and without pending uploads), custom + a new
pending upload, and a new upload that failed. The existing middleware
tests now mock `attachments` instead of `successfulUploads`.

## Changelog

- Fixed editing a message dropping its custom and other non-upload
attachments.
## [9.54.2](v9.54.1...v9.54.2) (2026-10-28)

### Bug Fixes

* avoid dropping custom attachments on edit ([#1953](#1953)) ([ebc794c](ebc794c))
* message pagination after message_limit 0 queries and disconnected latest pages ([#1934](#1934)) ([6faedbc](6faedbc)), closes [#1931](#1931) [#1930](#1930)
* poll crash on last vote removal ([#1952](#1952)) ([c5c923a](c5c923a)), closes [#1895](#1895)
## CLA

- [x] I have signed the [Stream
CLA](https://docs.google.com/forms/d/e/1FAIpQLScFKsKkAJI7mhCr7K9rEIOpqIDThrWxuvxnwUq2XkHyG154vQ/viewform)
(required).
- [x] Code changes are tested

## Description of the changes, What, Why and How?

Fixes the `stream-chat` part of
GetStream/stream-chat-react-native#3903.

Linear ticket:
https://linear.app/stream/issue/RN-471/offline-support-channels-hydrated-from-the-local-db-get-hasprev-false

With offline support, `ChannelManager.queryChannels` first hydrates the
channels it reads from the offline DB. It called `hydrateActiveChannels`
without the query's options, so the cached messages of each channel were
judged against the default page size of 25 instead of the
`message_limit` the query asked for. A channel with fewer than 25 cached
messages ended up with `messagePagination.hasPrev = false`, even when
the server had older messages.

The online `queryChannels` page that follows did not correct it. It
merges into the cached messages, and `hasPrev` is only recalculated when
the page starts at the first message of the set. With `message_limit:
10` and, for example, 20 cached messages, that never happens, so
scrolling up never requested older messages for the rest of the session.

`ChannelManager` now passes the query's options to
`hydrateActiveChannels` when hydrating from the offline DB, so a cached
page is read the same way as a page from the server. A full page leaves
older messages to load, and a shorter one marks the start of the
channel. `hydrateActiveChannels` only reads `message_limit` from those
options, so nothing else changes.

The React Native SDK's offline DB is being changed to return the newest
`message_limit` messages of each channel (25 when the query sets none)
in a separate PR. This change also works with the current SDK, which
returns up to 24 cached messages: a channel with more cached messages
than `message_limit` is no longer marked as having nothing older.

Tests:

- `channel_manager.test.ts` checks that the query's options are passed
to `hydrateActiveChannels`.
- `client.test.js` covers a full and a short cached page, and the online
page arriving afterwards.
- Verified end to end on an Android emulator with the React Native SDK
`SampleApp` (`message_limit: 10`, a channel with 20 of 50 messages
cached). Before the change the list stopped at the cached messages and
sent no request when scrolling up. With it, scrolling up loaded the full
history.

## Changelog

- Channels hydrated from the offline database are now read against the
query's `message_limit`, so a channel with older messages on the server
no longer gets `hasPrev = false` from its cached messages.
## [9.54.3](v9.54.2...v9.54.3) (2026-10-28)

### Bug Fixes

* read cached channels against the query's message_limit ([#1958](#1958)) ([bbddea0](bbddea0))
…1962)

## CLA

- [ ] I have signed the [Stream
CLA](https://docs.google.com/forms/d/e/1FAIpQLScFKsKkAJI7mhCr7K9rEIOpqIDThrWxuvxnwUq2XkHyG154vQ/viewform)
(required).
- [x] Code changes are tested

## Description of the changes, What, Why and How?

Fixes #1961.

**What:** when the `tokenProvider` rejected during `_reconnect({
refreshToken: true })`, the rejection escaped as an unhandled promise
rejection (`Call to tokenProvider failed with message: ...`).
Integrators can't catch it, because no caller awaits `_reconnect()`.
Mobile error trackers report it as a crash, for example when the token
refresh happens in a network dead spot.

**Why:** `tokenManager.loadToken()` was awaited outside the `try` in
`_reconnect()`.

**How:** the refresh now has its own `try/catch`. A failed refresh is
handled like a failed connect: the connection is marked unhealthy,
`consecutiveFailures` goes up, and `_reconnect({ refreshToken: true })`
is scheduled again with the usual backoff (capped at 25s). The fix
suggested in the issue moves `loadToken()` into the existing `try`, but
that `catch` only retries on `isWSFailure` or `TOKEN_EXPIRED`. A
token-provider error is neither, so the connection would stay dead until
something else triggered a reconnect. The "abort if another reconnect
started while the token was loading" check is unchanged.

The retry is skipped once `disconnect()` has been called. Otherwise an
old connection would keep calling the `tokenProvider`, because
`_reconnect()` only aborts after a disconnect when `enableWSFallback` is
on. v10 port: #1963.

## Changelog

- Fixed an unhandled promise rejection when the `tokenProvider` fails
while the WebSocket reconnects after an expired token. The reconnect now
retries with backoff.
## [9.54.4](v9.54.3...v9.54.4) (2026-10-29)

### Bug Fixes

* handle tokenProvider rejection during reconnect token refresh ([#1962](#1962)) ([7721bd5](7721bd5))
@isekovanic
isekovanic merged commit 8124be7 into release-v10 Oct 30, 2026
3 checks passed
@isekovanic
isekovanic deleted the chore/consolidate-with-master branch October 30, 2026 15:08
@stream-ci-bot

Copy link
Copy Markdown

🎉 This PR is included in version 10.0.0-rc.29 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants