dependabot[bot] opened a new pull request, #76069:
URL: https://github.com/apache/airflow/pull/76069

   Bumps the 3-4-core-ui-package-updates group with 34 updates in the 
/airflow-core/src/airflow/ui directory:
   
   | Package | From | To |
   | --- | --- | --- |
   | [@guanmingchiu/sqlparser-ts](https://github.com/guan404ming/sqlparser-ts) 
| `0.62.0` | `0.63.0` |
   | 
[@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query)
 | `5.104.0` | `5.105.0` |
   | 
[@tanstack/react-table](https://github.com/TanStack/table/tree/HEAD/packages/react-table)
 | `9.2.6` | `9.3.1` |
   | 
[@tanstack/react-virtual](https://github.com/TanStack/virtual/tree/HEAD/packages/react-virtual)
 | `3.14.13` | `3.14.23` |
   | [chart.js](https://github.com/chartjs/Chart.js) | `4.5.1` | `4.6.1` |
   | [i18next](https://github.com/i18next/i18next) | `26.4.2` | `26.5.11` |
   | 
[i18next-browser-languagedetector](https://github.com/i18next/i18next-browser-languageDetector)
 | `8.2.1` | `8.2.3` |
   | [i18next-http-backend](https://github.com/i18next/i18next-http-backend) | 
`4.0.2` | `4.0.6` |
   | [katex](https://github.com/KaTeX/KaTeX) | `0.19.0` | `0.19.1` |
   | [mermaid](https://github.com/mermaid-js/mermaid) | `12.1.0` | `12.2.0` |
   | [react](https://github.com/react/react/tree/HEAD/packages/react) | 
`19.3.0` | `19.3.1` |
   | [react-dom](https://github.com/react/react/tree/HEAD/packages/react-dom) | 
`19.3.0` | `19.3.1` |
   | [react-hook-form](https://github.com/react-hook-form/react-hook-form) | 
`7.89.0` | `7.91.0` |
   | [react-i18next](https://github.com/i18next/react-i18next) | `17.0.15` | 
`17.1.9` |
   | 
[react-resizable-panels](https://github.com/bvaughn/react-resizable-panels) | 
`4.14.1` | `4.15.0` |
   | 
[react-syntax-highlighter](https://github.com/react-syntax-highlighter/react-syntax-highlighter)
 | `16.1.1` | `16.1.2` |
   | [zustand](https://github.com/pmndrs/zustand) | `5.0.15` | `5.0.16` |
   | [@playwright/test](https://github.com/microsoft/playwright) | `1.63.0` | 
`1.64.1` |
   | 
[@tanstack/eslint-plugin-query](https://github.com/TanStack/query/tree/HEAD/packages/eslint-plugin-query)
 | `5.104.0` | `5.105.0` |
   | 
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
 | `26.6.3` | `26.6.5` |
   | 
[@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)
 | `8.71.0` | `8.72.0` |
   | 
[@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)
 | `8.71.0` | `8.72.0` |
   | 
[@typescript-eslint/utils](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/utils)
 | `8.71.0` | `8.72.0` |
   | 
[@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react)
 | `6.1.1` | `6.1.2` |
   | 
[@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8)
 | `5.0.3` | `5.0.5` |
   | [eslint](https://github.com/eslint/eslint) | `10.11.0` | `10.13.0` |
   | 
[eslint-plugin-perfectionist](https://github.com/azat-io/eslint-plugin-perfectionist)
 | `5.12.1` | `5.13.0` |
   | 
[eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) | 
`5.5.6` | `5.5.7` |
   | [happy-dom](https://github.com/capricorn86/happy-dom) | `20.14.5` | 
`20.14.6` |
   | [msw](https://github.com/mswjs/msw) | `3.0.2` | `3.0.3` |
   | [prettier](https://github.com/prettier/prettier) | `3.9.9` | `3.9.10` |
   | 
[typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint)
 | `8.71.0` | `8.72.0` |
   | [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `8.3.3` | 
`8.3.5` |
   | [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | 
`5.0.3` | `5.0.5` |
   
   
   Updates `@guanmingchiu/sqlparser-ts` from 0.62.0 to 0.63.0
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/guan404ming/sqlparser-ts/commit/3afc96c499542c18afcdb207e5ba9d7c2178918e";><code>3afc96c</code></a>
 ⬆️ Upgrade to sqlparser v0.63.0 (<a 
href="https://redirect.github.com/guan404ming/sqlparser-ts/issues/26";>#26</a>)</li>
   <li><a 
href="https://github.com/guan404ming/sqlparser-ts/commit/6d85c14c1cc3ceb5b13442fad7ef81935807ae02";><code>6d85c14</code></a>
 Use badgen for npm downloads badge to avoid rate limits (<a 
href="https://redirect.github.com/guan404ming/sqlparser-ts/issues/25";>#25</a>)</li>
   <li>See full diff in <a 
href="https://github.com/guan404ming/sqlparser-ts/compare/v0.62.0...v0.63.0";>compare
 view</a></li>
   </ul>
   </details>
   <br />
   
   Updates `@tanstack/react-query` from 5.104.0 to 5.105.0
   <details>
   <summary>Release notes</summary>
   <p><em>Sourced from <a 
href="https://github.com/TanStack/query/releases";>@​tanstack/react-query's 
releases</a>.</em></p>
   <blockquote>
   <h2><code>@​tanstack/react-query-devtools</code><a 
href="https://github.com/5";><code>@​5</code></a>.105.0</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies []:
   <ul>
   <li><code>@​tanstack/query-devtools</code><a 
href="https://github.com/5";><code>@​5</code></a>.105.0</li>
   <li><code>@​tanstack/react-query</code><a 
href="https://github.com/5";><code>@​5</code></a>.105.0</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-query-next-experimental</code><a 
href="https://github.com/5";><code>@​5</code></a>.105.0</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies []:
   <ul>
   <li><code>@​tanstack/react-query</code><a 
href="https://github.com/5";><code>@​5</code></a>.105.0</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-query-persist-client</code><a 
href="https://github.com/5";><code>@​5</code></a>.105.0</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies []:
   <ul>
   <li><code>@​tanstack/query-persist-client-core</code><a 
href="https://github.com/5";><code>@​5</code></a>.105.0</li>
   <li><code>@​tanstack/react-query</code><a 
href="https://github.com/5";><code>@​5</code></a>.105.0</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-query</code><a 
href="https://github.com/5";><code>@​5</code></a>.105.0</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies []:
   <ul>
   <li><code>@​tanstack/query-core</code><a 
href="https://github.com/5";><code>@​5</code></a>.105.0</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-query-devtools</code><a 
href="https://github.com/5";><code>@​5</code></a>.104.5</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/query/commit/1f8d134ea3fa356072b40c69d5cd0227886b89bd";><code>1f8d134</code></a>]:
   <ul>
   <li><code>@​tanstack/react-query</code><a 
href="https://github.com/5";><code>@​5</code></a>.104.5</li>
   <li><code>@​tanstack/query-devtools</code><a 
href="https://github.com/5";><code>@​5</code></a>.104.5</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-query-next-experimental</code><a 
href="https://github.com/5";><code>@​5</code></a>.104.5</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/query/commit/1f8d134ea3fa356072b40c69d5cd0227886b89bd";><code>1f8d134</code></a>]:
   <ul>
   <li><code>@​tanstack/react-query</code><a 
href="https://github.com/5";><code>@​5</code></a>.104.5</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-query-persist-client</code><a 
href="https://github.com/5";><code>@​5</code></a>.104.5</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/query/commit/1f8d134ea3fa356072b40c69d5cd0227886b89bd";><code>1f8d134</code></a>]:
   <ul>
   <li><code>@​tanstack/react-query</code><a 
href="https://github.com/5";><code>@​5</code></a>.104.5</li>
   <li><code>@​tanstack/query-persist-client-core</code><a 
href="https://github.com/5";><code>@​5</code></a>.104.5</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-query</code><a 
href="https://github.com/5";><code>@​5</code></a>.104.5</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li><a 
href="https://redirect.github.com/TanStack/query/pull/12117";>#12117</a> <a 
href="https://github.com/TanStack/query/commit/1f8d134ea3fa356072b40c69d5cd0227886b89bd";><code>1f8d134</code></a>
 - Recompute <code>useMutationState</code> and <code>useIsMutating</code> 
results when their filters, selector, or query client change, without waiting 
for a mutation cache update.</li>
   </ul>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Changelog</summary>
   <p><em>Sourced from <a 
href="https://github.com/TanStack/query/blob/main/packages/react-query/CHANGELOG.md";>@​tanstack/react-query's
 changelog</a>.</em></p>
   <blockquote>
   <h2>5.105.0</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies []:
   <ul>
   <li><code>@​tanstack/query-core</code><a 
href="https://github.com/5";><code>@​5</code></a>.105.0</li>
   </ul>
   </li>
   </ul>
   <h2>5.104.5</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li><a 
href="https://redirect.github.com/TanStack/query/pull/12117";>#12117</a> <a 
href="https://github.com/TanStack/query/commit/1f8d134ea3fa356072b40c69d5cd0227886b89bd";><code>1f8d134</code></a>
 - Recompute <code>useMutationState</code> and <code>useIsMutating</code> 
results when their filters, selector, or query client change, without waiting 
for a mutation cache update.</li>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/query/commit/f608f933a36da30670082e90d0a56b2569290563";><code>f608f93</code></a>]:
   <ul>
   <li><code>@​tanstack/query-core</code><a 
href="https://github.com/5";><code>@​5</code></a>.104.5</li>
   </ul>
   </li>
   </ul>
   <h2>5.104.4</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>
   <p><a 
href="https://redirect.github.com/TanStack/query/pull/11328";>#11328</a> <a 
href="https://github.com/TanStack/query/commit/c20886163a3759725cceafb421e864e7d213ec26";><code>c208861</code></a>
 - Allow queries with falsy errors to retry on mount when 
<code>throwOnError</code> returns false.</p>
   </li>
   <li>
   <p><a 
href="https://redirect.github.com/TanStack/query/pull/11728";>#11728</a> <a 
href="https://github.com/TanStack/query/commit/a10839824cecec8ea141330191c2e0ad0ae2b53f";><code>a108398</code></a>
 - fix(react-query*): declare '<code>@​types/react</code>' as an optional peer 
dependency</p>
   </li>
   <li>
   <p>Updated dependencies [<a 
href="https://github.com/TanStack/query/commit/1fee0443dbeb346b8401557ca286a66cdec7ad71";><code>1fee044</code></a>,
 <a 
href="https://github.com/TanStack/query/commit/fce89ddf7a35b14252096ff64a1217efd81b415c";><code>fce89dd</code></a>]:</p>
   <ul>
   <li><code>@​tanstack/query-core</code><a 
href="https://github.com/5";><code>@​5</code></a>.104.4</li>
   </ul>
   </li>
   </ul>
   <h2>5.104.3</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/query/commit/0f15bc925db5813be6a17527988ec7d7b3c8cfc0";><code>0f15bc9</code></a>]:
   <ul>
   <li><code>@​tanstack/query-core</code><a 
href="https://github.com/5";><code>@​5</code></a>.104.3</li>
   </ul>
   </li>
   </ul>
   <h2>5.104.2</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/query/commit/03e8c3955ddbf20f0a07b79982b52dfad8df5323";><code>03e8c39</code></a>]:
   <ul>
   <li><code>@​tanstack/query-core</code><a 
href="https://github.com/5";><code>@​5</code></a>.104.2</li>
   </ul>
   </li>
   </ul>
   <h2>5.104.1</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies []:
   <ul>
   <li><code>@​tanstack/query-core</code><a 
href="https://github.com/5";><code>@​5</code></a>.104.1</li>
   </ul>
   </li>
   </ul>
   </blockquote>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/TanStack/query/commit/5cc606e2e84b6feb86a2284a984ba2d3ef1643c8";><code>5cc606e</code></a>
 ci: Version Packages (<a 
href="https://github.com/TanStack/query/tree/HEAD/packages/react-query/issues/12301";>#12301</a>)</li>
   <li><a 
href="https://github.com/TanStack/query/commit/14cc3302e385c4cb747790e7fa2a8a768cfe5f26";><code>14cc330</code></a>
 style(packages): write durations in 'count * unit * 1000' order (<a 
href="https://github.com/TanStack/query/tree/HEAD/packages/react-query/issues/12382";>#12382</a>)</li>
   <li><a 
href="https://github.com/TanStack/query/commit/d7c0418f871052e45afc866f4520c062ebd5561a";><code>d7c0418</code></a>
 chore(react-query/{useQuery,useInfiniteQuery}): remove the unused '<a 
href="https://github.com/eslint-re";><code>@​eslint-re</code></a>...</li>
   <li><a 
href="https://github.com/TanStack/query/commit/aa3e26b4f0a38fcd34dc0b57b643d4d99546b7ff";><code>aa3e26b</code></a>
 chore(react-query/{HydrationBoundary,utils}): explain why 
'react-hooks-js/ref...</li>
   <li><a 
href="https://github.com/TanStack/query/commit/b2801aa76f65186a37f64a6c316bdc33c8e1945a";><code>b2801aa</code></a>
 test(react-query/useMutation): assert that the mutation settles in the cache 
...</li>
   <li><a 
href="https://github.com/TanStack/query/commit/43636c43e729b19cfb6e4f74963f454d082c5483";><code>43636c4</code></a>
 test(react-query/useMutation): wait for the mutation to settle after unmount 
...</li>
   <li><a 
href="https://github.com/TanStack/query/commit/1eed9d9ef57f15b3974be1ae4387d32ede7e021d";><code>1eed9d9</code></a>
 chore(*): explain why 'vitest-js/valid-expect' is disabled for the 
'expectTyp...</li>
   <li><a 
href="https://github.com/TanStack/query/commit/6bdeb130812bc571260a07e1e0de267eba66f4db";><code>6bdeb13</code></a>
 test(*/useQuery): rename the 'throwOnError' callback parameter to 'err' to 
av...</li>
   <li><a 
href="https://github.com/TanStack/query/commit/86b9f209128831805e9aaedc19cfe5d1319f796d";><code>86b9f20</code></a>
 test(*/useMutationState): rename the built 'mutation' to 'existingMutation' 
t...</li>
   <li><a 
href="https://github.com/TanStack/query/commit/d09972b8503749c0035813405e57e722147f70cc";><code>d09972b</code></a>
 test(*): rename the 'queryKey' test helper to 'createKey' since it creates 
ke...</li>
   <li>Additional commits viewable in <a 
href="https://github.com/TanStack/query/commits/@tanstack/[email protected]/packages/react-query";>compare
 view</a></li>
   </ul>
   </details>
   <br />
   
   Updates `@tanstack/react-table` from 9.2.6 to 9.3.1
   <details>
   <summary>Release notes</summary>
   <p><em>Sourced from <a 
href="https://github.com/TanStack/table/releases";>@​tanstack/react-table's 
releases</a>.</em></p>
   <blockquote>
   <h2><code>@​tanstack/react-table-devtools</code><a 
href="https://github.com/9";><code>@​9</code></a>.3.1</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/table/commit/87c6bcc52a5cd614d83d698c76048b4c1c2bb8f7";><code>87c6bcc</code></a>]:
   <ul>
   <li><code>@​tanstack/table-devtools</code><a 
href="https://github.com/9";><code>@​9</code></a>.3.1</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-table</code><a 
href="https://github.com/9";><code>@​9</code></a>.3.1</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li><a href="https://redirect.github.com/TanStack/table/pull/6631";>#6631</a> 
<a 
href="https://github.com/TanStack/table/commit/3d3648f788310465e135c09fd3f803ef25a92c18";><code>3d3648f</code></a>
 - Refresh the <code>AppTable</code> context when the <code>useAppTable</code> 
owner renders with new options or state, so <code>useTableContext()</code> 
consumers no longer show stale rows after <code>data</code> is replaced under a 
cached (React Compiler, <code>useMemo</code>, <code>memo</code>) 
<code>AppTable</code> element.</li>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/table/commit/2d5f5b65a98350949ac9ce7397a29ee9bbe2fd5e";><code>2d5f5b6</code></a>,
 <a 
href="https://github.com/TanStack/table/commit/87c6bcc52a5cd614d83d698c76048b4c1c2bb8f7";><code>87c6bcc</code></a>]:
   <ul>
   <li><code>@​tanstack/table-core</code><a 
href="https://github.com/9";><code>@​9</code></a>.3.1</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-table-devtools</code><a 
href="https://github.com/9";><code>@​9</code></a>.2.8</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/table/commit/f1c3409bb4aae6c07ebb1cb0a0723372ed64223e";><code>f1c3409</code></a>]:
   <ul>
   <li><code>@​tanstack/table-devtools</code><a 
href="https://github.com/9";><code>@​9</code></a>.2.8</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-table</code><a 
href="https://github.com/9";><code>@​9</code></a>.2.8</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/table/commit/f1c3409bb4aae6c07ebb1cb0a0723372ed64223e";><code>f1c3409</code></a>]:
   <ul>
   <li><code>@​tanstack/table-core</code><a 
href="https://github.com/9";><code>@​9</code></a>.2.8</li>
   </ul>
   </li>
   </ul>
   </blockquote>
   </details>
   <details>
   <summary>Changelog</summary>
   <p><em>Sourced from <a 
href="https://github.com/TanStack/table/blob/main/packages/react-table/CHANGELOG.md";>@​tanstack/react-table's
 changelog</a>.</em></p>
   <blockquote>
   <h2>9.3.1</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li><a href="https://redirect.github.com/TanStack/table/pull/6631";>#6631</a> 
<a 
href="https://github.com/TanStack/table/commit/3d3648f788310465e135c09fd3f803ef25a92c18";><code>3d3648f</code></a>
 - Refresh the <code>AppTable</code> context when the <code>useAppTable</code> 
owner renders with new options or state, so <code>useTableContext()</code> 
consumers no longer show stale rows after <code>data</code> is replaced under a 
cached (React Compiler, <code>useMemo</code>, <code>memo</code>) 
<code>AppTable</code> element.</li>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/table/commit/2d5f5b65a98350949ac9ce7397a29ee9bbe2fd5e";><code>2d5f5b6</code></a>,
 <a 
href="https://github.com/TanStack/table/commit/87c6bcc52a5cd614d83d698c76048b4c1c2bb8f7";><code>87c6bcc</code></a>]:
   <ul>
   <li><code>@​tanstack/table-core</code><a 
href="https://github.com/9";><code>@​9</code></a>.3.1</li>
   </ul>
   </li>
   </ul>
   <h2>9.2.8</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/table/commit/f1c3409bb4aae6c07ebb1cb0a0723372ed64223e";><code>f1c3409</code></a>]:
   <ul>
   <li><code>@​tanstack/table-core</code><a 
href="https://github.com/9";><code>@​9</code></a>.2.8</li>
   </ul>
   </li>
   </ul>
   </blockquote>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/TanStack/table/commit/95c4768496c07b45b1e65d8e33c3291ac66eae9b";><code>95c4768</code></a>
 ci: Version Packages (<a 
href="https://github.com/TanStack/table/tree/HEAD/packages/react-table/issues/6632";>#6632</a>)</li>
   <li><a 
href="https://github.com/TanStack/table/commit/3d3648f788310465e135c09fd3f803ef25a92c18";><code>3d3648f</code></a>
 fix(react-table, preact-table): refresh AppTable context under cached 
element...</li>
   <li><a 
href="https://github.com/TanStack/table/commit/d8ae30bcfe8665ef43d7557f4a492e0caa6f9c40";><code>d8ae30b</code></a>
 ci: Version Packages (<a 
href="https://github.com/TanStack/table/tree/HEAD/packages/react-table/issues/6625";>#6625</a>)</li>
   <li>See full diff in <a 
href="https://github.com/TanStack/table/commits/@tanstack/[email protected]/packages/react-table";>compare
 view</a></li>
   </ul>
   </details>
   <br />
   
   Updates `@tanstack/react-virtual` from 3.14.13 to 3.14.23
   <details>
   <summary>Release notes</summary>
   <p><em>Sourced from <a 
href="https://github.com/TanStack/virtual/releases";>@​tanstack/react-virtual's 
releases</a>.</em></p>
   <blockquote>
   <h2><code>@​tanstack/react-virtual</code><a 
href="https://github.com/3";><code>@​3</code></a>.14.23</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/virtual/commit/23430040447e24bcfdd9665bd6b6c67d8fefd0ea";><code>2343004</code></a>]:
   <ul>
   <li><code>@​tanstack/virtual-core</code><a 
href="https://github.com/3";><code>@​3</code></a>.19.8</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-virtual</code><a 
href="https://github.com/3";><code>@​3</code></a>.14.22</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/virtual/commit/887e97172207c28d12bf9a0df8a842e261565a42";><code>887e971</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/5d51f1d972c8c22b9cb0b767741a9c544bd89299";><code>5d51f1d</code></a>]:
   <ul>
   <li><code>@​tanstack/virtual-core</code><a 
href="https://github.com/3";><code>@​3</code></a>.19.7</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-virtual</code><a 
href="https://github.com/3";><code>@​3</code></a>.14.21</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/virtual/commit/05bb4d3e75359442e7a650f1814bd496e382bc3d";><code>05bb4d3</code></a>]:
   <ul>
   <li><code>@​tanstack/virtual-core</code><a 
href="https://github.com/3";><code>@​3</code></a>.19.6</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-virtual</code><a 
href="https://github.com/3";><code>@​3</code></a>.14.20</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/virtual/commit/56b2a63d2336907659d87125b072fa11e4ac9046";><code>56b2a63</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/d2c7911d6b749aaa47e9aab1dc10125040363bd0";><code>d2c7911</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/9c762fe49021b602b1109e471ba38e3065cba5b5";><code>9c762fe</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/6789f7affc32c3fe77d8ed5b3b9d7c274d158be9";><code>6789f7a</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/77cb05eef131699bcef0f0a5877b60503e54a366";><code>77cb05e</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/4a1a4fdae1fa86cdda6603194876399f6651630d";><code>4a1a4fd</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/3c61b6e30723e6af24d375ea1c5221d12a2e894d";><code>3c61b6e</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/9c762fe49021b602b1109e471ba38e3065cba5b5";><code>9c762fe</code></a>]:
   <ul>
   <li><code>@​tanstack/virtual-core</code><a 
href="https://github.com/3";><code>@​3</code></a>.19.5</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-virtual</code><a 
href="https://github.com/3";><code>@​3</code></a>.14.19</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/virtual/commit/269e8ed12db0b9ce55543da5b0bb1082a6296aac";><code>269e8ed</code></a>]:
   <ul>
   <li><code>@​tanstack/virtual-core</code><a 
href="https://github.com/3";><code>@​3</code></a>.19.4</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-virtual</code><a 
href="https://github.com/3";><code>@​3</code></a>.14.18</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/virtual/commit/f211d3a64de6cbdd85469c9b97959db65df32eb6";><code>f211d3a</code></a>]:
   <ul>
   <li><code>@​tanstack/virtual-core</code><a 
href="https://github.com/3";><code>@​3</code></a>.19.3</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-virtual</code><a 
href="https://github.com/3";><code>@​3</code></a>.14.17</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/virtual/commit/3800fb3e76aa7e86bc8a8eba7ddde84aef3066eb";><code>3800fb3</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/cb510cbb50a3e10eaaa7ff8c3c51f320d1224c79";><code>cb510cb</code></a>]:
   <ul>
   <li><code>@​tanstack/virtual-core</code><a 
href="https://github.com/3";><code>@​3</code></a>.19.2</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-virtual</code><a 
href="https://github.com/3";><code>@​3</code></a>.14.16</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/virtual/commit/7aa34f62587aab20938dbc84ba88a25e59552036";><code>7aa34f6</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/e7a0a92e4bec5ecd0a37659e951c8e8ff72e0207";><code>e7a0a92</code></a>]:
   <ul>
   <li><code>@​tanstack/virtual-core</code><a 
href="https://github.com/3";><code>@​3</code></a>.19.1</li>
   </ul>
   </li>
   </ul>
   <h2><code>@​tanstack/react-virtual</code><a 
href="https://github.com/3";><code>@​3</code></a>.14.15</h2>
   <h3>Patch Changes</h3>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Changelog</summary>
   <p><em>Sourced from <a 
href="https://github.com/TanStack/virtual/blob/main/packages/react-virtual/CHANGELOG.md";>@​tanstack/react-virtual's
 changelog</a>.</em></p>
   <blockquote>
   <h2>3.14.23</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/virtual/commit/23430040447e24bcfdd9665bd6b6c67d8fefd0ea";><code>2343004</code></a>]:
   <ul>
   <li><code>@​tanstack/virtual-core</code><a 
href="https://github.com/3";><code>@​3</code></a>.19.8</li>
   </ul>
   </li>
   </ul>
   <h2>3.14.22</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/virtual/commit/887e97172207c28d12bf9a0df8a842e261565a42";><code>887e971</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/5d51f1d972c8c22b9cb0b767741a9c544bd89299";><code>5d51f1d</code></a>]:
   <ul>
   <li><code>@​tanstack/virtual-core</code><a 
href="https://github.com/3";><code>@​3</code></a>.19.7</li>
   </ul>
   </li>
   </ul>
   <h2>3.14.21</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/virtual/commit/05bb4d3e75359442e7a650f1814bd496e382bc3d";><code>05bb4d3</code></a>]:
   <ul>
   <li><code>@​tanstack/virtual-core</code><a 
href="https://github.com/3";><code>@​3</code></a>.19.6</li>
   </ul>
   </li>
   </ul>
   <h2>3.14.20</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/virtual/commit/56b2a63d2336907659d87125b072fa11e4ac9046";><code>56b2a63</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/d2c7911d6b749aaa47e9aab1dc10125040363bd0";><code>d2c7911</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/9c762fe49021b602b1109e471ba38e3065cba5b5";><code>9c762fe</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/6789f7affc32c3fe77d8ed5b3b9d7c274d158be9";><code>6789f7a</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/77cb05eef131699bcef0f0a5877b60503e54a366";><code>77cb05e</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/4a1a4fdae1fa86cdda6603194876399f6651630d";><code>4a1a4fd</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/3c61b6e30723e6af24d375ea1c5221d12a2e894d";><code>3c61b6e</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/9c762fe49021b602b1109e471ba38e3065cba5b5";><code>9c762fe</code></a>]:
   <ul>
   <li><code>@​tanstack/virtual-core</code><a 
href="https://github.com/3";><code>@​3</code></a>.19.5</li>
   </ul>
   </li>
   </ul>
   <h2>3.14.19</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/virtual/commit/269e8ed12db0b9ce55543da5b0bb1082a6296aac";><code>269e8ed</code></a>]:
   <ul>
   <li><code>@​tanstack/virtual-core</code><a 
href="https://github.com/3";><code>@​3</code></a>.19.4</li>
   </ul>
   </li>
   </ul>
   <h2>3.14.18</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/virtual/commit/f211d3a64de6cbdd85469c9b97959db65df32eb6";><code>f211d3a</code></a>]:
   <ul>
   <li><code>@​tanstack/virtual-core</code><a 
href="https://github.com/3";><code>@​3</code></a>.19.3</li>
   </ul>
   </li>
   </ul>
   <h2>3.14.17</h2>
   <h3>Patch Changes</h3>
   <ul>
   <li>Updated dependencies [<a 
href="https://github.com/TanStack/virtual/commit/3800fb3e76aa7e86bc8a8eba7ddde84aef3066eb";><code>3800fb3</code></a>,
 <a 
href="https://github.com/TanStack/virtual/commit/cb510cbb50a3e10eaaa7ff8c3c51f320d1224c79";><code>cb510cb</code></a>]:
   <ul>
   <li><code>@​tanstack/virtual-core</code><a 
href="https://github.com/3";><code>@​3</code></a>.19.2</li>
   </ul>
   </li>
   </ul>
   <h2>3.14.16</h2>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/TanStack/virtual/commit/18d08351cfd969224fb7353832897cc600b21c30";><code>18d0835</code></a>
 ci: Version Packages (<a 
href="https://github.com/TanStack/virtual/tree/HEAD/packages/react-virtual/issues/1341";>#1341</a>)</li>
   <li><a 
href="https://github.com/TanStack/virtual/commit/c462c6141ea434fdbc52b5dd866bb8db7e4fd07e";><code>c462c61</code></a>
 ci: Version Packages (<a 
href="https://github.com/TanStack/virtual/tree/HEAD/packages/react-virtual/issues/1336";>#1336</a>)</li>
   <li><a 
href="https://github.com/TanStack/virtual/commit/28ff2cab7a970f4e0908229d65a0da8803903900";><code>28ff2ca</code></a>
 ci: Version Packages (<a 
href="https://github.com/TanStack/virtual/tree/HEAD/packages/react-virtual/issues/1333";>#1333</a>)</li>
   <li><a 
href="https://github.com/TanStack/virtual/commit/4296ac2c7d4736072f5a3e5edcfb0bc56d7778ed";><code>4296ac2</code></a>
 ci: Version Packages (<a 
href="https://github.com/TanStack/virtual/tree/HEAD/packages/react-virtual/issues/1323";>#1323</a>)</li>
   <li><a 
href="https://github.com/TanStack/virtual/commit/9c762fe49021b602b1109e471ba38e3065cba5b5";><code>9c762fe</code></a>
 fix(virtual-core): finish the iOS scroll-correction plan and simplify the 
scr...</li>
   <li><a 
href="https://github.com/TanStack/virtual/commit/4a1a4fdae1fa86cdda6603194876399f6651630d";><code>4a1a4fd</code></a>
 fix(virtual-core): defer iOS scroll corrections only for touch-driven 
scrolls...</li>
   <li><a 
href="https://github.com/TanStack/virtual/commit/4f9636e36e43fa8fcb67c14e2277b5b7a6461f37";><code>4f9636e</code></a>
 ci: Version Packages (<a 
href="https://github.com/TanStack/virtual/tree/HEAD/packages/react-virtual/issues/1322";>#1322</a>)</li>
   <li><a 
href="https://github.com/TanStack/virtual/commit/676a098bfbe168a9bcb55ce3cca984823a85cea7";><code>676a098</code></a>
 ci: Version Packages (<a 
href="https://github.com/TanStack/virtual/tree/HEAD/packages/react-virtual/issues/1317";>#1317</a>)</li>
   <li><a 
href="https://github.com/TanStack/virtual/commit/7c20899ba738f898a95a259390bf189b5fc1e6b5";><code>7c20899</code></a>
 ci: Version Packages (<a 
href="https://github.com/TanStack/virtual/tree/HEAD/packages/react-virtual/issues/1315";>#1315</a>)</li>
   <li><a 
href="https://github.com/TanStack/virtual/commit/cb510cbb50a3e10eaaa7ff8c3c51f320d1224c79";><code>cb510cb</code></a>
 refactor(virtual-core): describe an in-flight scroll command by one phase (<a 
href="https://github.com/TanStack/virtual/tree/HEAD/packages/react-virtual/issues/1";>#1</a>...</li>
   <li>Additional commits viewable in <a 
href="https://github.com/TanStack/virtual/commits/@tanstack/[email protected]/packages/react-virtual";>compare
 view</a></li>
   </ul>
   </details>
   <br />
   
   Updates `chart.js` from 4.5.1 to 4.6.1
   <details>
   <summary>Release notes</summary>
   <p><em>Sourced from <a 
href="https://github.com/chartjs/Chart.js/releases";>chart.js's 
releases</a>.</em></p>
   <blockquote>
   <h2>v4.6.1</h2>
   <h1>Essential Links</h1>
   <ul>
   <li><a href="https://www.npmjs.com/package/chart.js";>npm</a></li>
   <li><a 
href="https://www.chartjs.org/docs/4.6.1/migration/v4-migration.html";>Migration 
guide</a></li>
   <li><a href="https://www.chartjs.org/docs/4.6.1/";>Docs</a></li>
   <li><a href="https://www.chartjs.org/docs/4.6.1/api/";>API</a></li>
   <li><a 
href="https://www.chartjs.org/docs/4.6.1/samples/information.html";>Samples</a></li>
   </ul>
   <ul>
   <li><a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12355";>#12355</a> 
fix: trusted publishing fix + version 4.6.1 bump</li>
   </ul>
   <p>Thanks to <a 
href="https://github.com/etimberg";><code>@​etimberg</code></a></p>
   <h2>v4.6.0</h2>
   <h1>Essential Links</h1>
   <ul>
   <li><a href="https://www.npmjs.com/package/chart.js";>npm</a></li>
   <li><a 
href="https://www.chartjs.org/docs/4.6.0/migration/v4-migration.html";>Migration 
guide</a></li>
   <li><a href="https://www.chartjs.org/docs/4.6.0/";>Docs</a></li>
   <li><a href="https://www.chartjs.org/docs/4.6.0/api/";>API</a></li>
   <li><a 
href="https://www.chartjs.org/docs/4.6.0/samples/information.html";>Samples</a></li>
   </ul>
   <ul>
   <li><a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12354";>#12354</a> 
chore: version bump to 4.6.0 to prepare for release</li>
   <li><a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12328";>#12328</a> 
test: stabilize overlapping polar-area label fixture</li>
   </ul>
   <h2>Enhancements</h2>
   <ul>
   <li><a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12238";>#12238</a> 
Corrected spacing in pie/doughnut/polarArea (Fixes #<!-- raw HTML omitted 
-->10059)</li>
   <li><a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12130";>#12130</a> 
Enable scale title stroke (12092)</li>
   </ul>
   <h2>Bugs Fixed</h2>
   <ul>
   <li><a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12283";>#12283</a> 
filler plugin fill extends past line when offset: true + index scale 
min/max</li>
   <li><a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12155";>#12155</a> Fix 
early exit from clearStacks</li>
   <li><a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12142";>#12142</a> Use 
integer canvas dimensions</li>
   </ul>
   <h2>Types</h2>
   <ul>
   <li><a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12321";>#12321</a> 
fix(types): allow scriptable and indexed grid tick widths</li>
   </ul>
   <h2>Documentation</h2>
   <ul>
   <li><a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12258";>#12258</a> Add 
a note that axis labels can span lines</li>
   <li><a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12134";>#12134</a> 
docs: Add note about flexbox/grid layout responsivity issue</li>
   <li><a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12139";>#12139</a> Fix 
amount of category scales count in docs</li>
   </ul>
   <h2>Development</h2>
   <ul>
   <li><a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12306";>#12306</a> 
Bump actions/setup-node from 6 to 7</li>
   <li><a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12303";>#12303</a> 
Bump actions/checkout from 6 to 7</li>
   </ul>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/chartjs/Chart.js/commit/76d8cf895a7485dc838c90ef37e2bc9d9e388fcb";><code>76d8cf8</code></a>
 fix: trusted publishing fix + version 4.6.1 bump (<a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12355";>#12355</a>)</li>
   <li><a 
href="https://github.com/chartjs/Chart.js/commit/4e5443d6a8705a66a40e90bfb4f59cf58c5010ee";><code>4e5443d</code></a>
 chore: version bump to 4.6.0 to prepare for release (<a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12354";>#12354</a>)</li>
   <li><a 
href="https://github.com/chartjs/Chart.js/commit/7169e65147a47f3720957a6f156a33c838ab9f57";><code>7169e65</code></a>
 fix(types): allow scriptable and indexed grid tick widths (<a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12321";>#12321</a>)</li>
   <li><a 
href="https://github.com/chartjs/Chart.js/commit/714b48cdec6f3a2e44f7fdacd049159c68c9ef7c";><code>714b48c</code></a>
 test: stabilize overlapping polar-area labels across browsers (<a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12328";>#12328</a>)</li>
   <li><a 
href="https://github.com/chartjs/Chart.js/commit/6a86e238fac3d1ad35eb84b93e7804dfb5813f79";><code>6a86e23</code></a>
 Bump actions/setup-node from 6 to 7 (<a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12306";>#12306</a>)</li>
   <li><a 
href="https://github.com/chartjs/Chart.js/commit/afb3d6476f6159f233f2ed18b88fe287455ff7b1";><code>afb3d64</code></a>
 Bump actions/checkout from 6 to 7 (<a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12303";>#12303</a>)</li>
   <li><a 
href="https://github.com/chartjs/Chart.js/commit/0db976cad6f3bdce824e22ec036bc57658ce4971";><code>0db976c</code></a>
 Bump pnpm/action-setup from 4.2.0 to 6.1.0 (<a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12307";>#12307</a>)</li>
   <li><a 
href="https://github.com/chartjs/Chart.js/commit/d2ddcf9ed78cbdd6f7dc0af96f7ebee0c7ce615f";><code>d2ddcf9</code></a>
 Specify build script for compressed size (<a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12310";>#12310</a>)</li>
   <li><a 
href="https://github.com/chartjs/Chart.js/commit/b97257450d5d7d19b445b9b6a4a45cf7b3f1f3f8";><code>b972574</code></a>
 filler plugin fill extends past line when offset: true + index scale min/max 
...</li>
   <li><a 
href="https://github.com/chartjs/Chart.js/commit/0ad783f10ac3706dfcf6e7e1c54bc4b67e8fb0dc";><code>0ad783f</code></a>
 Use node 24 for CI (<a 
href="https://redirect.github.com/chartjs/Chart.js/issues/12309";>#12309</a>)</li>
   <li>Additional commits viewable in <a 
href="https://github.com/chartjs/Chart.js/compare/v4.5.1...v4.6.1";>compare 
view</a></li>
   </ul>
   </details>
   <details>
   <summary>Maintainer changes</summary>
   <p>This version was pushed to npm by <a 
href="https://www.npmjs.com/~GitHub%20Actions";>GitHub Actions</a>, a new 
releaser for chart.js since your current version.</p>
   </details>
   <br />
   
   Updates `i18next` from 26.4.2 to 26.5.11
   <details>
   <summary>Release notes</summary>
   <p><em>Sourced from <a 
href="https://github.com/i18next/i18next/releases";>i18next's 
releases</a>.</em></p>
   <blockquote>
   <h2>v26.5.11</h2>
   <ul>
   <li>fix: a nested <code>false</code>, <code>0</code> or <code>''</code> is 
now returned when a flat key with the same dotted name also exists. With 
<code>{ a: { b: false }, 'a.b': 'flat' }</code>, <code>getResource('en', 
'translation', 'a.b')</code> and <code>t('a.b')</code> returned 
<code>'flat'</code>: the nested result was checked for truthiness, so these 
present values fell through to the flat-key lookup. Without such a flat key 
they were already returned. A nested <code>null</code>, which is not a valid 
lookup by default (<code>returnNull: false</code>), still falls back to the 
flat key. Thanks <a 
href="https://github.com/lprnmns";><code>@​lprnmns</code></a> (<a 
href="https://redirect.github.com/i18next/i18next/pull/2461";>#2461</a>).</li>
   </ul>
   <h2>v26.5.10</h2>
   <ul>
   <li>fix: when none of the detected languages is in 
<code>supportedLngs</code>, the best match no longer picks a different language 
whose code only starts with the same letters. The last fuzzy check took any 
supported code starting with the language part, so with <code>supportedLngs: 
['en', 'fil-PH']</code> a Finnish user (<code>fi-FI</code>) got Filipino 
instead of the fallback language, and <code>ha</code> (Hausa) picked 
<code>haw-US</code> (Hawaiian). Other regions of the same language still match 
as before (<code>de-CH</code> → <code>de-DE</code>, <code>pt-PT</code> → 
<code>pt-BR</code>, <code>fil</code> → <code>fil-PH</code>). Compatibility 
note: a two-letter code no longer matches a supported three-letter code that 
extends it, like <code>ar</code> → <code>arz-EG</code>, <code>sw</code> → 
<code>swh-KE</code> or <code>no</code> → <code>nob-NO</code>; list the 
two-letter code in <code>supportedLngs</code> (or map it with 
<code>fallbackLng</code>) if you relied on tha
 t. Thanks <a href="https://github.com/Pharex38";><code>@​Pharex38</code></a> 
(<a 
href="https://redirect.github.com/i18next/i18next/pull/2460";>#2460</a>).</li>
   </ul>
   <h2>v26.5.9</h2>
   <ul>
   <li>fix: nested lookups no longer resolve to methods inherited from the 
prototype, like <code>constructor</code>, <code>toString</code> or 
<code>map</code>. Only the top level was guarded, so 
<code>{{constructor}}</code> was treated as missing, but 
<code>{{user.constructor}}</code> rendered the function source (with a class 
instance, the full source code of the class), and 
<code>{{user.toString}}</code>, <code>{{items.map}}</code> or a class method 
like <code>{{user.greet}}</code> did the same. The same lookup is used for 
translation keys when <code>ignoreJSONStructure</code> is on (the default): a 
nested key named like an inherited method that is missing in the current 
language (<code>t('roles.constructor')</code> with 
<code>roles.constructor</code> only in the fallback language) returned 
<code>function Object() { [native code] }</code> instead of falling back, and 
<code>exists('roles.valueOf')</code> returned <code>true</code>. These keys are 
now missing, so the fallback languag
 e, <code>missingInterpolationHandler</code>, <code>saveMissing</code> and the 
missing key handler apply as for any other missing key. Getters defined on a 
class (<code>{{user.fullName}}</code> with <code>get fullName()</code>) still 
work. Nested lookups also no longer walk into the prototype via 
<code>__proto__</code>, so <code>{{user.__proto__.constructor}}</code> no 
longer prints the class source either. Thanks <a 
href="https://github.com/Pharex38";><code>@​Pharex38</code></a> (<a 
href="https://redirect.github.com/i18next/i18next/pull/2459";>#2459</a>).</li>
   </ul>
   <h2>v26.5.8</h2>
   <ul>
   <li>fix: arrays returned with <code>joinArrays</code> now get the same 
resolved details as strings. The joined value was extended with 
<code>lastKey</code> in the place of the resolved lookup, so with 
<code>postProcessPassResolved</code> a post processor got no 
<code>usedLng</code>, <code>usedNS</code> or <code>exactUsedKey</code> 
(<code>t('steps', { joinArrays: ' / ' })</code> reported 
<code>undefined/undefined:undefined</code>). This affected the subliminal post 
processor used by the locize InContext editor, which could not map a joined 
array to its key. The nesting recursion guard did not get the parent key 
either, so arrays that nest each other (<code>listA: ['a', '$t(listB)']</code>, 
<code>listB: ['b', '$t(listA)']</code>) threw <code>Maximum call stack size 
exceeded</code>. They now stop at the guard, as strings do. An 
<code>i18nFormat</code> plugin with <code>handleAsObject</code> and 
<code>parse</code> also no longer throws <code>Cannot read properties of 
undefined (readin
 g 'usedNS')</code> on joined arrays. Thanks <a 
href="https://github.com/nk-batman21";><code>@​nk-batman21</code></a> (<a 
href="https://redirect.github.com/i18next/i18next/pull/2458";>#2458</a>).</li>
   </ul>
   <h2>v26.5.7</h2>
   <ul>
   <li>fix: with the default <code>cacheInBuiltFormats: true</code>, built-in 
formats now also work when the <code>t()</code> options contain a BigInt or a 
circular object. The cache key was built with <code>JSON.stringify</code> over 
all options, including the interpolation values, which throws on those, so 
every built-in format in that call returned the raw value: <code>t('num', { 
val: 12345678901234567890n })</code> with <code>'Total: {{val, number}}'</code> 
returned <code>'Total: 12345678901234567890'</code> instead of <code>'Total: 
12,345,678,901,234,567,890'</code>, and passing an object with a back-reference 
(like an ORM entity) left all numbers, dates and lists of that call 
unformatted. When the key cannot be built, the value is now formatted without 
the cache, as with <code>cacheInBuiltFormats: false</code>. This also applies 
to formatters added with <code>addCached</code>. Other calls still use the 
cache as before. Thanks <a href="https://github.com/nk-batman21";><code>@​n
 k-batman21</code></a> (<a 
href="https://redirect.github.com/i18next/i18next/pull/2457";>#2457</a>).</li>
   </ul>
   <h2>v26.5.6</h2>
   <ul>
   <li>fix: <code>cloneInstance({ forkResourceStore: true })</code> now copies 
the resources at every level. It copied them only down to the namespace 
objects, so nested keys and arrays stayed shared with the original instance: 
<code>addResource()</code> with a nested key (<code>fork.addResource('en', 
'translation', 'greeting.hello', 'Hi')</code>) or a deep 
<code>addResourceBundle()</code> on the fork also changed the original instance 
and every other fork. Flat keys were already isolated. Forking a large store 
takes a bit longer: with 300k keys in nested groups, about 11 ms instead of 3 
ms per fork. Clones without <code>forkResourceStore</code> still share the 
store as before. Thanks <a 
href="https://github.com/nk-batman21";><code>@​nk-batman21</code></a> (<a 
href="https://redirect.github.com/i18next/i18next/pull/2456";>#2456</a>, 
follow-up to <a 
href="https://redirect.github.com/i18next/i18next/issues/2270";>#2270</a>).</li>
   </ul>
   <h2>v26.5.5</h2>
   <ul>
   <li>fix: with the default <code>skipOnVariables: true</code>, a 
<code>{{placeholder}}</code> inside a value inserted with an unescaped 
<code>{{- var}}</code> now stays literal, as it already did for 
<code>{{var}}</code>. The escape pass ran after the unescaped values were 
written and scanned them again, so <code>t('{{- a}}', { a: '{{b}}', b: 'c' 
})</code> returned <code>'c'</code> instead of <code>'{{b}}'</code>. With 
pre-built HTML that carries user text, like <code>t('You may contact {{name}} 
at {{- emailHTML}}.', { name, emailHTML })</code>, that text could pull another 
variable of the same <code>t()</code> call into the output. Results with 
<code>skipOnVariables: false</code>, and values without placeholders, are 
unchanged. Compatibility note: a <code>{{- var}}</code> value whose 
placeholders were meant to be filled from the same <code>t()</code> call now 
keeps them literally; <code>skipOnVariables: false</code> restores the old 
behavior. Thanks <a href="https://github.com/nk-
 batman21"><code>@​nk-batman21</code></a> (<a 
href="https://redirect.github.com/i18next/i18next/pull/2455";>#2455</a>, 
reported in <a 
href="https://redirect.github.com/i18next/i18next/issues/1595#issuecomment-814611747";>#1595</a>).</li>
   </ul>
   <h2>v26.5.4</h2>
   <ul>
   <li>fix: with the default <code>skipOnVariables: true</code>, a 
<code>{{placeholder}}</code> inside an interpolated value now stays literal 
also when the same placeholder appears later in the translation. Each value was 
written with <code>String.replace</code>, which replaces the first copy of the 
placeholder text, and that could be the copy inside an earlier value: 
<code>t('{{name}} has {{count}} items', { name: '{{count}}', count: 5 })</code> 
returned <code>'5 has {{count}} items'</code> instead of <code>'{{count}} has 5 
items'</code>. The value is now written at the position of the matched 
placeholder. Results with <code>skipOnVariables: false</code> are unchanged. 
Thanks <a href="https://github.com/nk-batman21";><code>@​nk-batman21</code></a> 
(<a href="https://redirect.github.com/i18next/i18next/pull/2454";>#2454</a>, 
reported in <a 
href="https://redirect.github.com/i18next/i18next/issues/1595#issuecomment-814609503";>#1595</a>).</li>
   <li>fix: with <code>useRawValueToEscape: true</code>, a non-string value in 
an unescaped <code>{{- var}}</code> placeholder or with <code>escapeValue: 
false</code> no longer throws <code>val.replace is not a function</code>; it is 
converted to a string like any other value.</li>
   </ul>
   <h2>v26.5.3</h2>
   <ul>
   <li>fix(types): with the selector API, a plural key now requires 
<code>count</code> also when the call passes an explicit <code>ns</code>. 
<code>t(($) =&gt; $.item)</code> already failed without <code>count</code>, but 
<code>t(($) =&gt; $.item, { ns: 'items' })</code> compiled, although at runtime 
it looks up <code>item</code> instead of <code>item_one</code> / 
<code>item_other</code> and returns the key. It now fails the same way, also 
with <code>ordinal: true</code>, <code>defaultValue</code>, an <code>ns</code> 
array, a key prefix and <code>i18n.t</code>. Calls with <code>count</code>, 
<code>context</code>, <code>returnObjects: true</code> and arrays of selectors, 
as well as return types, are unchanged. Thanks <a 
href="https://github.com/nyarthan";><code>@​nyarthan</code></a> (<a 
href="https://redirect.github.com/i18next/i18next/pull/2452";>#2452</a>).</li>
   </ul>
   <h2>v26.5.2</h2>
   <ul>
   <li>fix(types): on TypeScript 7, a <code>t()</code> call with a missing, 
misspelled or wrongly typed option now reports that option again 
(<code>Property 'album' is missing</code>, <code>Type 'string' is not 
assignable to type 'number'</code>), as TypeScript 5 and 6 do. TypeScript 7 
elaborated the error against the default-value signature instead and ended in 
<code>'{ count: 3; albm: &quot;Summer&quot;; }' is not assignable to type 
'string'</code>: on a failed call TypeScript explains the last of the equally 
matching signatures, and TypeScript 7 sorts the 3-element <code>[key, 
defaultValue, options?]</code> last. It is now written as two signatures, 
<code>[key, defaultValue]</code> and <code>[key, defaultValue, options]</code>. 
This affects the default key checks with i18next <code>{{name}}</code> messages 
as well as <code>parseInterpolation: 'icu'</code> and <code>'mf2'</code>. Which 
calls compile, their return types and the error positions are unchanged on 
TypeScript 5.9, 6 and 
 7.</li>
   </ul>
   <h2>v26.5.1</h2>
   <ul>
   <li>perf(types): type-checking <code>t()</code> calls against a large 
namespace is no longer quadratic in the number of keys. TypeScript does not 
cache <code>keyof</code> of an object type, and the types rebuilt the union of 
all keys of a namespace once per key while building the key union, and again in 
every <code>t()</code> call to look up the return type. Both now use a cached 
key union, and a literal key is looked up directly instead of being intersected 
with every key. With 5,000 keys in one namespace and one call per key, the 
check time went from 14.8s to 1.1s (TypeScript 6); with 1,000 keys from 0.75s 
to 0.27s. Keys, return types and errors are unchanged.</li>
   <li>perf(types): the selector API (<code>enableSelector: true</code> / 
<code>'strict'</code>) with <code>context</code> is no longer quadratic in the 
size of an object. To decide which keys a context keeps, the types scanned all 
keys of the object once for every key, also when TypeScript checks the selector 
with <code>context</code> widened to <code>string</code>. With 1,000 keys plus 
one context variant each, a namespace took 18.7s and failed with &quot;Type 
instantiation is excessively deep and possibly infinite&quot; (TS2589); 2,500 
and more ran out of memory. The context variants of an object are now collected 
once, in one pass over its keys: 1,000 keys check in 0.69s, 5,000 in 3.1s. Long 
keys (whole sentences with <code>keySeparator: false</code>) work as before. 
Selected values and errors are unchanged.</li>
   </ul>
   <h2>v26.5.0</h2>
   <ul>
   <li>feat(types): <code>parseInterpolation: 'icu'</code> and 
<code>parseInterpolation: 'mf2'</code> type <code>t()</code> options from the 
message's ICU MessageFormat arguments (i18next-icu) or MessageFormat 2 
variables (i18next-mf2), so ICU and MF2 users no longer need 
<code>parseInterpolation: false</code> and lose argument checking. Missing, 
misspelled and wrongly typed arguments fail, and so does leaving out the 
options for a message with arguments (<code>t('greeting')</code>); that error 
names the missing arguments. Opt-in, default <code>true</code> is unchanged.
   <ul>
   <li>ICU: <code>{name}</code> takes <code>string | number</code>, <code>{n, 
number}</code>, <code>plural</code> and <code>selectordinal</code> take 
<code>number</code>, <code>{d, date}</code> and <code>{t, time}</code> take 
<code>Date</code>, <code>select</code> takes its case keys or any string (for 
<code>other</code>), and arguments nested in cases are required too. 
<code>#</code> and tags are not arguments, apostrophe quoting is read like 
intl-messageformat does.</li>
   <li>MF2: <code>{$name}</code> takes <code>string | number</code>, a variable 
annotated with <code>:number</code>, <code>:integer</code>, 
<code>:currency</code>, <code>:percent</code> or <code>:unit</code> (inline or 
through <code>.input</code> / <code>.local</code>) takes <code>number</code>, 
<code>:datetime</code>, <code>:date</code> and <code>:time</code> take 
<code>Date</code>, <code>:string</code> takes <code>string</code>, option and 
markup variables (<code>minimumFractionDigits=$digits</code>, <code>{#link 
href=$url}</code>) are required too, <code>.local</code> variables are not 
arguments, and <code>|quoted literals|</code> and <code>\{</code> escapes are 
skipped.</li>
   <li><code>interpolationFormatTypeMap</code> overrides a type by ICU format 
or MF2 function name, e.g. <code>date: Date | number</code> or a custom 
<code>uppercase: string</code>.</li>
   <li>Applies to <code>t()</code>, <code>getFixedT()</code>, 
<code>i18n.t</code>, key prefixes, namespaces, the selector API and 
react-i18next's <code>Trans</code> <code>values</code>. Messages need literal 
types, as the resources file from i18next-cli's <code>types</code> command has 
them.</li>
   <li>Type-check cost with 1,000 messages and one call each: 1.35s instead of 
0.86s with <code>false</code> (TypeScript 6), 0.5s instead of 0.26s with 
TypeScript 7. Messages that no call uses cost nothing.</li>
   </ul>
   </li>
   <li>fix(types): with the default (non-strict) key checks, an options object 
with a missing or misspelled interpolation variable now reports the missing 
variable (<code>Property 'name' is missing</code>) instead of <code>'{ nmae: 
string }' is not assignable to type 'string'</code> from the default-value 
overload.</li>
   </ul>
   <h2>v26.4.7</h2>
   <ul>
   <li>perf: <code>cloneInstance()</code> no longer inherits 
<code>preload</code>. <code>loadResources()</code> adds every 
<code>preload</code> language to each load, and clones copied 
<code>preload</code> from the parent, so a clone's <code>init()</code> and 
every <code>changeLanguage()</code> walked all preloaded languages × all 
namespaces through <code>queueLoad()</code> / <code>hasResourceBundle()</code>, 
although the parent had already loaded them into the shared store. With 
i18next-http-middleware (one clone + <code>changeLanguage()</code> per 
request), 25 preloaded languages and 20 namespaces, that was most of the 
per-request CPU: the reproduction from the issue went from ~90 µs to ~10 µs per 
request, the same as with a single language. A clone now only loads what it 
uses itself: its <code>changeLanguage()</code> no longer waits for parent 
preload languages that are still loading (the parent's own <code>init()</code> 
still does), and <code>clone.loadNamespaces()</code> load
 s the new namespace for the clone's language and fallbacks instead of every 
preloaded language. <code>clone.loadLanguages()</code> works as before, the 
parent instance is unchanged, and passing <code>preload</code> to 
<code>cloneInstance()</code> keeps the old behavior. Thanks <a 
href="https://github.com/theMostCuriousHomunculus";><code>@​theMostCuriousHomunculus</code></a>
 for the detailed report (<a 
href="https://redirect.github.com/i18next/i18next/issues/2451";>#2451</a>).</li>
   </ul>
   <h2>v26.4.6</h2>
   <ul>
   <li>fix: a fallback language whose formatted code is already in the 
hierarchy is no longer added a second time. <code>toResolveHierarchy()</code> 
checked the raw <code>fallbackLng</code> value against the list, but the list 
holds formatted codes, so any fallback written differently from its formatted 
form slipped through: <code>lng: 'de-CH'</code> with <code>fallbackLng: 
'de-ch'</code> gave <code>languages</code> <code>['de-CH', 'de', 
'de-CH']</code>, and the same happened with <code>fallbackLng: 'EN'</code> + 
<code>cleanCode</code>, <code>lowerCaseLng</code>, and Intl aliases 
(<code>iw-IL</code> → <code>he-IL</code>). Missing keys were looked up in the 
same language twice. Only exact duplicates are removed; the order is unchanged. 
Thanks <a href="https://github.com/lprnmns";><code>@​lprnmns</code></a> (<a 
href="https://redirect.github.com/i18next/i18next/pull/2450";>#2450</a>).</li>
   </ul>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Changelog</summary>
   <p><em>Sourced from <a 
href="https://github.com/i18next/i18next/blob/master/CHANGELOG.md";>i18next's 
changelog</a>.</em></p>
   <blockquote>
   <h2>26.5.11</h2>
   <ul>
   <li>fix: a nested <code>false</code>, <code>0</code> or <code>''</code> is 
now returned when a flat key with the same dotted name also exists. With 
<code>{ a: { b: false }, 'a.b': 'flat' }</code>, <code>getResource('en', 
'translation', 'a.b')</code> and <code>t('a.b')</code> returned 
<code>'flat'</code>: the nested result was checked for truthiness, so these 
present values fell through to the flat-key lookup. Without such a flat key 
they were already returned. A nested <code>null</code>, which is not a valid 
lookup by default (<code>returnNull: false</code>), still falls back to the 
flat key. Thanks <a 
href="https://github.com/lprnmns";><code>@​lprnmns</code></a> (<a 
href="https://redirect.github.com/i18next/i18next/pull/2461";>#2461</a>).</li>
   </ul>
   <h2>26.5.10</h2>
   <ul>
   <li>fix: when none of the detected languages is in 
<code>supportedLngs</code>, the best match no longer picks a different language 
whose code only starts with the same letters. The last fuzzy check took any 
supported code starting with the language part, so with <code>supportedLngs: 
['en', 'fil-PH']</code> a Finnish user (<code>fi-FI</code>) got Filipino 
instead of the fallback language, and <code>ha</code> (Hausa) picked 
<code>haw-US</code> (Hawaiian). Other regions of the same language still match 
as before (<code>de-CH</code> → <code>de-DE</code>, <code>pt-PT</code> → 
<code>pt-BR</code>, <code>fil</code> → <code>fil-PH</code>). Compatibility 
note: a two-letter code no longer matches a supported three-letter code that 
extends it, like <code>ar</code> → <code>arz-EG</code>, <code>sw</code> → 
<code>swh-KE</code> or <code>no</code> → <code>nob-NO</code>; list the 
two-letter code in <code>supportedLngs</code> (or map it with 
<code>fallbackLng</code>) if you relied on tha
 t. Thanks <a href="https://github.com/Pharex38";><code>@​Pharex38</code></a> 
(<a 
href="https://redirect.github.com/i18next/i18next/pull/2460";>#2460</a>).</li>
   </ul>
   <h2>26.5.9</h2>
   <ul>
   <li>fix: nested lookups no longer resolve to methods inherited from the 
prototype, like <code>constructor</code>, <code>toString</code> or 
<code>map</code>. Only the top level was guarded, so 
<code>{{constructor}}</code> was treated as missing, but 
<code>{{user.constructor}}</code> rendered the function source (with a class 
instance, the full source code of the class), and 
<code>{{user.toString}}</code>, <code>{{items.map}}</code> or a class method 
like <code>{{user.greet}}</code> did the same. The same lookup is used for 
translation keys when <code>ignoreJSONStructure</code> is on (the default): a 
nested key named like an inherited method that is missing in the current 
language (<code>t('roles.constructor')</code> with 
<code>roles.constructor</code> only in the fallback language) returned 
<code>function Object() { [native code] }</code> instead of falling back, and 
<code>exists('roles.valueOf')</code> returned <code>true</code>. These keys are 
now missing, so the fallback languag
 e, <code>missingInterpolationHandler</code>, <code>saveMissing</code> and the 
missing key handler apply as for any other missing key. Getters defined on a 
class (<code>{{user.fullName}}</code> with <code>get fullName()</code>) still 
work. Nested lookups also no longer walk into the prototype via 
<code>__proto__</code>, so <code>{{user.__proto__.constructor}}</code> no 
longer prints the class source either. Thanks <a 
href="https://github.com/Pharex38";><code>@​Pharex38</code></a> (<a 
href="https://redirect.github.com/i18next/i18next/pull/2459";>#2459</a>).</li>
   </ul>
   <h2>26.5.8</h2>
   <ul>
   <li>fix: arrays returned with <code>joinArrays</code> now get the same 
resolved details as strings. The joined value was extended with 
<code>lastKey</code> in the place of the resolved lookup, so with 
<code>postProcessPassResolved</code> a post processor got no 
<code>usedLng</code>, <code>usedNS</code> or <code>exactUsedKey</code> 
(<code>t('steps', { joinArrays: ' / ' })</code> reported 
<code>undefined/undefined:undefined</code>). This affected the subliminal post 
processor used by the locize InContext editor, which could not map a joined 
array to its key. The nesting recursion guard did not get the parent key 
either, so arrays that nest each other (<code>listA: ['a', '$t(listB)']</code>, 
<code>listB: ['b', '$t(listA)']</code>) threw <code>Maximum call stack size 
exceeded</code>. They now stop at the guard, as strings do. An 
<code>i18nFormat</code> plugin with <code>handleAsObject</code> and 
<code>parse</code> also no longer throws <code>Cannot read properties of 
undefined (readin
 g 'usedNS')</code> on joined arrays. Thanks <a 
href="https://github.com/nk-batman21";><code>@​nk-batman21</code></a> (<a 
href="https://redirect.github.com/i18next/i18next/pull/2458";>#2458</a>).</li>
   </ul>
   <h2>26.5.7</h2>
   <ul>
   <li>fix: with the default <code>cacheInBuiltFormats: true</code>, built-in 
formats now also work when the <code>t()</code> options contain a BigInt or a 
circular object. The cache key was built with <code>JSON.stringify</code> over 
all options, including the interpolation values, which throws on those, so 
every built-in format in that call returned the raw value: <code>t('num', { 
val: 12345678901234567890n })</code> with <code>'Total: {{val, number}}'</code> 
returned <code>'Total: 12345678901234567890'</code> instead of <code>'Total: 
12,345,678,901,234,567,890'</code>, and passing an object with a back-reference 
(like an ORM entity) left all numbers, dates and lists of that call 
unformatted. When the key cannot be built, the value is now formatted without 
the cache, as with <code>cacheInBuiltFormats: false</code>. This also applies 
to formatters added with <code>addCached</code>. Other calls still use the 
cache as before. Thanks <a href="https://github.com/nk-batman21";><code>@​n
 k-batman21</code></a> (<a 
href="https://redirect.github.com/i18next/i18next/pull/2457";>#2457</a>).</li>
   </ul>
   <h2>26.5.6</h2>
   <ul>
   <li>fix: <code>cloneInstance({ forkResourceStore: true })</code> now copies 
the resources at every level. It copied them only down to the namespace 
objects, so nested keys and arrays stayed shared with the original instance: 
<code>addResource()</code> with a nested key (<code>fork.addResource('en', 
'translation', 'greeting.hello', 'Hi')</code>) or a deep 
<code>addResourceBundle()</code> on the fork also changed the original instance 
and every other fork. Flat keys were already isolated. Forking a large store 
takes a bit longer: with 300k keys in nested groups, about 11 ms instead of 3 
ms per fork. Clones without <code>forkResourceStore</code> still share the 
store as before. Thanks <a 
href="https://github.com/nk-batman21";><code>@​nk-batman21</code></a> (<a 
href="https://redirect.github.com/i18next/i18next/pull/2456";>#2456</a>, 
follow-up to <a 
href="https://redirect.github.com/i18next/i18next/issues/2270";>#2270</a>).</li>
   </ul>
   <h2>26.5.5</h2>
   <ul>
   <li>fix: with the default <code>skipOnVariables: true</code>, a 
<code>{{placeholder}}</code> inside a value inserted with an unescaped 
<code>{{- var}}</code> now stays literal, as it already did for 
<code>{{var}}</code>. The escape pass ran after the unescaped values were 
written and scanned them again, so <code>t('{{- a}}', { a: '{{b}}', b: 'c' 
})</code> returned <code>'c'</code> instead of <code>'{{b}}'</code>. With 
pre-built HTML that carries user text, like <code>t('You may contact {{name}} 
at {{- emailHTML}}.', { name, emailHTML })</code>, that text could pull another 
variable of the same <code>t()</code> call into the output. Results with 
<code>skipOnVariables: false</code>, and values without placeholders, are 
unchanged. Compatibility note: a <code>{{- var}}</code> value whose 
placeholders were meant to be filled from the same <code>t()</code> call now 
keeps them literally; <code>skipOnVariables: false</code> restores the old 
behavior. Thanks <a href="https://github.com/nk-
 batman21"><code>@​nk-batman21</code></a> (<a 
href="https://redirect.github.com/i18next/i18next/pull/2455";>#2455</a>, 
reported in <a 
href="https://redirect.github.com/i18next/i18next/issues/1595#issuecomment-814611747";>#1595</a>).</li>
   </ul>
   <h2>26.5.4</h2>
   <ul>
   <li>fix: with the default <code>skipOnVariables: true</code>, a 
<code>{{placeholder}}</code> inside an interpolated value now stays literal 
also when the same placeholder appears later in the translation. Each value was 
written with <code>String.replace</code>, which replaces the first copy of the 
placeholder text, and that could be the copy inside an earlier value: 
<code>t('{{name}} has {{count}} items', { name: '{{count}}', count: 5 })</code> 
returned <code>'5 has {{count}} items'</code> instead of <code>'{{count}} has 5 
items'</code>. The value is now written at the position of the matched 
placeholder. Results with <code>skipOnVariables: false</code> are unchanged. 
Thanks <a href="https://github.com/nk-batman21";><code>@​nk-batman21</code></a> 
(<a href="https://redirect.github.com/i18next/i18next/pull/2454";>#2454</a>, 
reported in <a 
href="https://redirect.github.com/i18next/i18next/issues/1595#issuecomment-814609503";>#1595</a>).</li>
   <li>fix: with <code>useRawValueToEscape: true</code>, a non-string value in 
an unescaped <code>{{- var}}</code> placeholder or with <code>escapeValue: 
false</code> no longer throws <code>val.replace is not a function</code>; it is 
converted to a string like any other value.</li>
   </ul>
   <h2>26.5.3</h2>
   <ul>
   <li>fix(types): with the selector API, a plural key now requires 
<code>count</code> also when the call passes an explicit <code>ns</code>. 
<code>t(($) =&gt; $.item)</code> already failed without <code>count</code>, but 
<code>t(($) =&gt; $.item, { ns: 'items' })</code> compiled, although at runtime 
it looks up <code>item</code> instead of <code>item_one</code> / 
<code>item_other</code> and returns the key. It now fails the same way, also 
with <code>ordinal: true</code>, <code>defaultValue</code>, an <code>ns</code> 
array, a key prefix and <code>i18n.t</code>. Calls with <code>count</code>, 
<code>context</code>, <code>returnObjects: true</code> and arrays of selectors, 
as well as return types, are unchanged. Thanks <a 
href="https://github.com/nyarthan";><code>@​nyarthan</code></a> (<a 
href="https://redirect.github.com/i18next/i18next/pull/2452";>#2452</a>).</li>
   </ul>
   <h2>26.5.2</h2>
   <ul>
   <li>fix(types): on TypeScript 7, a <code>t()</code> call with a missing, 
misspelled or wrongly typed option now reports that option again 
(<code>Property 'album' is missing</code>, <code>Type 'string' is not 
assignable to type 'number'</code>), as TypeScript 5 and 6 do. TypeScript 7 
elaborated the error against the default-value signature instead and ended in 
<code>'{ count: 3; albm: &quot;Summer&quot;; }' is not assignable to type 
'string'</code>: on a failed call TypeScript explains the last of the equally 
matching signatures, and TypeScript 7 sorts the 3-element <code>[key, 
defaultValue, options?]</code> last. It is now written as two signatures, 
<code>[key, defaultValue]</code> and <code>[key, defaultValue, options]</code>. 
This affects the default key checks with i18next <code>{{name}}</code> messages 
as well as <code>parseInt...
   
   _Description has been truncated_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to