Skip to content

chore: override re2 dependency for @metascraper/helpers - #21068

Merged
fasttime merged 1 commit into
v9.x-devfrom
v9.x-dependency-override
Jul 8, 2026
Merged

fasttime merged 1 commit into
v9.x-devfrom
v9.x-dependency-override

Conversation

@mdjermanovic

@mdjermanovic mdjermanovic commented Jul 8, 2026 •

Copy link
Copy Markdown
Member

Prerequisites checklist

AI acknowledgment

  • I did not use AI to generate this PR.
  • (If the above is not checked) I have reviewed the AI-generated content before submitting.

What is the purpose of this pull request? (put an "X" next to an item)

[ ] Documentation update
[ ] Bug fix (template)
[ ] New rule (template)
[ ] Changes an existing rule (template)
[ ] Add autofix to a rule
[ ] Add a CLI option
[ ] Add something to the core
[x] Other, please explain:

Attempts to fix CI failure on v9.x-dev branch, noticed on #21065 (https://github.com/eslint/eslint/actions/runs/28933060888/job/85836629491?pr=21065). Reason for the failure is explained in #21065 (comment).

What changes did you make? (Give an overview)

Overrides @metascraper/helpers to use "re2": "~1.24.1". I think this is a minimal safe change as we're not using metascraper much (only to fetch data locally when adding further reading links to rule docs) and the update of re2 in @metascraper/helpers (microlinkhq/metascraper@db863ad) didn't seem to use any new features.

Is there anything you'd like reviewers to focus on?

@mdjermanovic
mdjermanovic requested a review from a team as a code owner July 8, 2026 11:46
@github-project-automation github-project-automation Bot moved this to Needs Triage in Triage Jul 8, 2026
@eslint-github-bot eslint-github-bot Bot added the chore This change is not user-facing label Jul 8, 2026
@netlify

netlify Bot commented Jul 8, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for docs-eslint ready!

Name Link
🔨 Latest commit 5a50925
🔍 Latest deploy log https://app.netlify.com/projects/docs-eslint/deploys/6a4e389bdb3c75000826fdd7
😎 Deploy Preview https://deploy-preview-21068--docs-eslint.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@mdjermanovic mdjermanovic added the v9.x Issues/PRs related to the v9.x release line label Jul 8, 2026
@fasttime fasttime moved this from Needs Triage to Triaging in Triage Jul 8, 2026
@fasttime fasttime added the accepted There is consensus among the team that this change meets the criteria for inclusion label Jul 8, 2026
@fasttime fasttime moved this from Triaging to Implementing in Triage Jul 8, 2026

@fasttime fasttime left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

@fasttime
fasttime merged commit 7b431a7 into v9.x-dev Jul 8, 2026
33 checks passed
@github-project-automation github-project-automation Bot moved this from Implementing to Complete in Triage Jul 8, 2026
@fasttime
fasttime deleted the v9.x-dependency-override branch July 8, 2026 18:03
736-c41-2c1-e464fc974 added a commit to Swiss-Armed-Forces/Loom that referenced this pull request Sep 15, 2026
This MR contains the following updates:

| Package | Type | Update | Change | OpenSSF |
|---|---|---|---|---|
| [@ag-ui/client](https://github.com/ag-ui-protocol/ag-ui) | dependencies | patch | [`^0.0.57` → `^0.0.59`](https://renovatebot.com/diffs/npm/@ag-ui%2fclient/0.0.57/0.0.59) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/ag-ui-protocol/ag-ui/badge)](https://securityscorecards.dev/viewer/?uri=github.com/ag-ui-protocol/ag-ui) |
| [@ag-ui/core](https://github.com/ag-ui-protocol/ag-ui) | dependencies | patch | [`^0.0.57` → `^0.0.59`](https://renovatebot.com/diffs/npm/@ag-ui%2fcore/0.0.57/0.0.59) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/ag-ui-protocol/ag-ui/badge)](https://securityscorecards.dev/viewer/?uri=github.com/ag-ui-protocol/ag-ui) |
| [@eslint/js](https://eslint.org) ([source](https://github.com/eslint/eslint/tree/HEAD/packages/js)) | devDependencies | patch | [`9.39.4` → `9.39.5`](https://renovatebot.com/diffs/npm/@eslint%2fjs/9.39.4/9.39.5) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/eslint/eslint/badge)](https://securityscorecards.dev/viewer/?uri=github.com/eslint/eslint) |
| [@testing-library/react](https://github.com/testing-library/react-testing-library) | devDependencies | patch | [`16.3.2` → `16.3.3`](https://renovatebot.com/diffs/npm/@testing-library%2freact/16.3.2/16.3.3) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/testing-library/react-testing-library/badge)](https://securityscorecards.dev/viewer/?uri=github.com/testing-library/react-testing-library) |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | devDependencies | patch | [`25.9.5` → `25.9.6`](https://renovatebot.com/diffs/npm/@types%2fnode/25.9.5/25.9.6) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/DefinitelyTyped/DefinitelyTyped/badge)](https://securityscorecards.dev/viewer/?uri=github.com/DefinitelyTyped/DefinitelyTyped) |
| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react)) | devDependencies | patch | [`19.2.14` → `19.2.18`](https://renovatebot.com/diffs/npm/@types%2freact/19.2.14/19.2.18) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/DefinitelyTyped/DefinitelyTyped/badge)](https://securityscorecards.dev/viewer/?uri=github.com/DefinitelyTyped/DefinitelyTyped) |
| [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react-dom) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom)) | devDependencies | patch | [`19.2.3` → `19.2.7`](https://renovatebot.com/diffs/npm/@types%2freact-dom/19.2.3/19.2.7) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/DefinitelyTyped/DefinitelyTyped/badge)](https://securityscorecards.dev/viewer/?uri=github.com/DefinitelyTyped/DefinitelyTyped) |
| [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react#readme) ([source](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react)) | devDependencies | patch | [`6.0.1` → `6.0.5`](https://renovatebot.com/diffs/npm/@vitejs%2fplugin-react/6.0.1/6.0.5) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/vitejs/vite-plugin-react/badge)](https://securityscorecards.dev/viewer/?uri=github.com/vitejs/vite-plugin-react) |
| [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | devDependencies | patch | [`9.39.4` → `9.39.5`](https://renovatebot.com/diffs/npm/eslint/9.39.4/9.39.5) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/eslint/eslint/badge)](https://securityscorecards.dev/viewer/?uri=github.com/eslint/eslint) |
| [eslint-import-resolver-typescript](https://github.com/import-js/eslint-import-resolver-typescript) | devDependencies | patch | [`4.4.4` → `4.4.5`](https://renovatebot.com/diffs/npm/eslint-import-resolver-typescript/4.4.4/4.4.5) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/import-js/eslint-import-resolver-typescript/badge)](https://securityscorecards.dev/viewer/?uri=github.com/import-js/eslint-import-resolver-typescript) |
| [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) | devDependencies | patch | [`5.5.5` → `5.5.6`](https://renovatebot.com/diffs/npm/eslint-plugin-prettier/5.5.5/5.5.6) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/prettier/eslint-plugin-prettier/badge)](https://securityscorecards.dev/viewer/?uri=github.com/prettier/eslint-plugin-prettier) |
| [eslint-plugin-react-refresh](https://github.com/ArnaudBarre/eslint-plugin-react-refresh) | devDependencies | patch | [`0.5.2` → `0.5.7`](https://renovatebot.com/diffs/npm/eslint-plugin-react-refresh/0.5.2/0.5.7) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/ArnaudBarre/eslint-plugin-react-refresh/badge)](https://securityscorecards.dev/viewer/?uri=github.com/ArnaudBarre/eslint-plugin-react-refresh) |
| [i18next-http-backend](https://github.com/i18next/i18next-http-backend) | dependencies | patch | [`3.0.5` → `3.0.6`](https://renovatebot.com/diffs/npm/i18next-http-backend/3.0.5/3.0.6) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/i18next/i18next-http-backend/badge)](https://securityscorecards.dev/viewer/?uri=github.com/i18next/i18next-http-backend) |
| [license-report](https://github.com/bepo65/license-report) | devDependencies | patch | [`6.8.2` → `6.8.5`](https://renovatebot.com/diffs/npm/license-report/6.8.2/6.8.5) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/bepo65/license-report/badge)](https://securityscorecards.dev/viewer/?uri=github.com/bepo65/license-report) |
| [react](https://react.dev/) ([source](https://github.com/react/react/tree/HEAD/packages/react)) | dependencies | patch | [`19.2.5` → `19.2.8`](https://renovatebot.com/diffs/npm/react/19.2.5/19.2.8) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/react/react/badge)](https://securityscorecards.dev/viewer/?uri=github.com/react/react) |
| [react-dom](https://react.dev/) ([source](https://github.com/react/react/tree/HEAD/packages/react-dom)) | dependencies | patch | [`19.2.5` → `19.2.8`](https://renovatebot.com/diffs/npm/react-dom/19.2.5/19.2.8) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/react/react/badge)](https://securityscorecards.dev/viewer/?uri=github.com/react/react) |
| [react-i18next](https://github.com/i18next/react-i18next) | dependencies | patch | [`17.0.4` → `17.0.14`](https://renovatebot.com/diffs/npm/react-i18next/17.0.4/17.0.14) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/i18next/react-i18next/badge)](https://securityscorecards.dev/viewer/?uri=github.com/i18next/react-i18next) |
| [react-router-dom](https://github.com/remix-run/react-router) ([source](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom)) | dependencies | patch | [`7.18.2` → `7.18.3`](https://renovatebot.com/diffs/npm/react-router-dom/7.18.2/7.18.3) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/remix-run/react-router/badge)](https://securityscorecards.dev/viewer/?uri=github.com/remix-run/react-router) |
| [uuid](https://github.com/uuidjs/uuid) | dependencies | patch | [`14.0.0` → `14.0.2`](https://renovatebot.com/diffs/npm/uuid/14.0.0/14.0.2) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/uuidjs/uuid/badge)](https://securityscorecards.dev/viewer/?uri=github.com/uuidjs/uuid) |
| [vite](https://vite.dev) ([source](https://github.com/vitejs/vite/tree/HEAD/packages/vite)) | devDependencies | patch | [`8.2.1` → `8.2.2`](https://renovatebot.com/diffs/npm/vite/8.2.1/8.2.2) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/vitejs/vite/badge)](https://securityscorecards.dev/viewer/?uri=github.com/vitejs/vite) |
| [vitest](https://vitest.dev) ([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | devDependencies | patch | [`4.1.4` → `4.1.11`](https://renovatebot.com/diffs/npm/vitest/4.1.4/4.1.11) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/vitest-dev/vitest/badge)](https://securityscorecards.dev/viewer/?uri=github.com/vitest-dev/vitest) |

---

### Release Notes

<details>
<summary>eslint/eslint (@&#8203;eslint/js)</summary>

### [`v9.39.5`](https://github.com/eslint/eslint/releases/tag/v9.39.5)

[Compare Source](https://github.com/eslint/eslint/compare/v9.39.4...v9.39.5)

##### Bug Fixes

- [`253be16`](https://github.com/eslint/eslint/commit/253be16a79a4c78eec4e0eb461b574d60dbf6b11) fix: handle unavailable require cache (backport of [#&#8203;20812](https://github.com/eslint/eslint/issues/20812) to v9.x) ([#&#8203;21065](https://github.com/eslint/eslint/issues/21065)) (Eric)

##### Documentation

- [`74930ed`](https://github.com/eslint/eslint/commit/74930edd1ce0d246819edc72705101ec271da50b) docs: switch build to Node.js 24 ([#&#8203;20894](https://github.com/eslint/eslint/issues/20894)) (Milos Djermanovic)
- [`eaec8bb`](https://github.com/eslint/eslint/commit/eaec8bb6b1ca4b36985ee0222c457d4730d47a20) docs: Add ESLint v9.x EOL notice ([#&#8203;20828](https://github.com/eslint/eslint/issues/20828)) (Milos Djermanovic)

##### Chores

- [`458205f`](https://github.com/eslint/eslint/commit/458205f7d7a4769f32bec006eecc45c6a71be16a) chore: update `@eslint/eslintrc` and `@eslint/js` for v9.39.5 ([#&#8203;21077](https://github.com/eslint/eslint/issues/21077)) (Francesco Trotta)
- [`202117b`](https://github.com/eslint/eslint/commit/202117be549534715d687f988e17f29e1dcd0622) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins)
- [`d9eb6ed`](https://github.com/eslint/eslint/commit/d9eb6edcc93c1319ff1d2bb9aeb6d7d47bd73a79) test: disable warning for `vm.constants.USE_MAIN_CONTEXT_DEFAULT_LOADER` ([#&#8203;21074](https://github.com/eslint/eslint/issues/21074)) (Francesco Trotta)
- [`7b431a7`](https://github.com/eslint/eslint/commit/7b431a7b19c345b8db56040b1888a3b531c3e64c) chore: override `re2` dependency for `@metascraper/helpers` ([#&#8203;21068](https://github.com/eslint/eslint/issues/21068)) (Milos Djermanovic)
- [`daf7791`](https://github.com/eslint/eslint/commit/daf77911de33be163503c6568ccb159741f4b018) chore: pin fflate\@&#8203;0.8.2 ([#&#8203;20895](https://github.com/eslint/eslint/issues/20895)) (Milos Djermanovic)
- [`daee8ba`](https://github.com/eslint/eslint/commit/daee8ba3082afbc94d3b69ddc129d4dc664716f2) ci: use pnpm in `eslint-flat-config-utils` type integration test ([#&#8203;20829](https://github.com/eslint/eslint/issues/20829)) (Milos Djermanovic)
- [`116d4be`](https://github.com/eslint/eslint/commit/116d4bec7c0ddaeaa75f92fb1271a4ab70d24ce3) ci: unpin Node.js 25.x in CI ([#&#8203;20619](https://github.com/eslint/eslint/issues/20619)) (Copilot)

</details>

<details>
<summary>testing-library/react-testing-library (@&#8203;testing-library/react)</summary>

### [`v16.3.3`](https://github.com/testing-library/react-testing-library/releases/tag/v16.3.3)

[Compare Source](https://github.com/testing-library/react-testing-library/compare/v16.3.2...v16.3.3)

##### Bug Fixes

- Avoid act() re-entrant when dispatching events ([#&#8203;1468](https://github.com/testing-library/react-testing-library/issues/1468)) ([20ce75f](https://github.com/testing-library/react-testing-library/commit/20ce75f2907ca0e5c5a8ae595c0e9a4e368c7800))

</details>

<details>
<summary>vitejs/vite-plugin-react (@&#8203;vitejs/plugin-react)</summary>

### [`v6.0.5`](https://github.com/vitejs/vite-plugin-react/blob/HEAD/packages/plugin-react/CHANGELOG.md#605-2026-07-30)

[Compare Source](https://github.com/vitejs/vite-plugin-react/compare/f4b549822ec239799d746c030abb0b9a7d8f0a04...68c0cb8796ce18bd049c3d05c5210eaf0617eac0)

##### Fixed the react compiler preset filter to be linear ([#&#8203;1353](https://github.com/vitejs/vite-plugin-react/pull/1353))

The improved filter in v6.0.3 was non-linear and caused a performance regression ([#&#8203;1349](https://github.com/vitejs/vite-plugin-react/issues/1349)). The filter was changed to be linear to avoid that.

### [`v6.0.4`](https://github.com/vitejs/vite-plugin-react/blob/HEAD/packages/plugin-react/CHANGELOG.md#604-2026-07-22)

[Compare Source](https://github.com/vitejs/vite-plugin-react/compare/640fd358a0e82393acfce4e92e19a6ac6e1641a7...f4b549822ec239799d746c030abb0b9a7d8f0a04)

##### Fixed `$RefreshSig$ is not defined` error when running `vite dev` with `NODE_ENV=production`

When running `vite dev` with `NODE_ENV=production`, the app errored with `$RefreshSig$ is not defined`.
This error is now fixed.

### [`v6.0.3`](https://github.com/vitejs/vite-plugin-react/blob/HEAD/packages/plugin-react/CHANGELOG.md#603-2026-06-23)

[Compare Source](https://github.com/vitejs/vite-plugin-react/compare/6535b55e956b425e6650ffc2cc98fd23cca1d231...640fd358a0e82393acfce4e92e19a6ac6e1641a7)

##### Improve the react compiler preset filter to reduce false-positives ([#&#8203;1138](https://github.com/vitejs/vite-plugin-react/pull/1138))

Improved the filter in the react compiler babel preset to reduce the false-positives so that less modules are processed by the react compiler.

### [`v6.0.2`](https://github.com/vitejs/vite-plugin-react/blob/HEAD/packages/plugin-react/CHANGELOG.md#602-2026-05-14)

[Compare Source](https://github.com/vitejs/vite-plugin-react/compare/1e94c06995c2afe2d1fee5aea2ef9720d35a7e02...6535b55e956b425e6650ffc2cc98fd23cca1d231)

##### Allow all options in reactCompilerPreset ([#&#8203;1189](https://github.com/vitejs/vite-plugin-react/pull/1189))

This is a type only change. Only `compilationMode` and `target` options were available for `reactCompilerPreset`.

</details>

<details>
<summary>import-js/eslint-import-resolver-typescript (eslint-import-resolver-typescript)</summary>

### [`v4.4.5`](https://github.com/import-js/eslint-import-resolver-typescript/blob/HEAD/CHANGELOG.md#445)

[Compare Source](https://github.com/import-js/eslint-import-resolver-typescript/compare/v4.4.4...v4.4.5)

##### Patch Changes

- [#&#8203;473](https://github.com/import-js/eslint-import-resolver-typescript/pull/473) [`32c61ab`](https://github.com/import-js/eslint-import-resolver-typescript/commit/32c61abccf26bd2a2267f2e0e67d82e6f88d149a) Thanks [@&#8203;leey0818](https://github.com/leey0818)! - fix: check tsconfig matching before using resolver

</details>

<details>
<summary>prettier/eslint-plugin-prettier (eslint-plugin-prettier)</summary>

### [`v5.5.6`](https://github.com/prettier/eslint-plugin-prettier/blob/HEAD/CHANGELOG.md#556)

[Compare Source](https://github.com/prettier/eslint-plugin-prettier/compare/v5.5.5...v5.5.6)

##### Patch Changes

- [#&#8203;791](https://github.com/prettier/eslint-plugin-prettier/pull/791) [`b5c96a3`](https://github.com/prettier/eslint-plugin-prettier/commit/b5c96a30d3e292a379d6e8ac030c29fd7acbc90b) Thanks [@&#8203;JounQin](https://github.com/JounQin)! - chore: bump all (dev)Dependencies

</details>

<details>
<summary>ArnaudBarre/eslint-plugin-react-refresh (eslint-plugin-react-refresh)</summary>

### [`v0.5.7`](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/blob/HEAD/CHANGELOG.md#057)

[Compare Source](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/compare/v0.5.6...v0.5.7)

##### Add `allowCompoundComponents` option ([#&#8203;117](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/pull/117))

> Default: `false` (`true` in `vite` config)

Don't warn when components are exported as an object gathering them. Every member of the object must be a component, and a member holding an anonymous function requires a component name as key.

This should be enabled if the fast refresh implementation correctly handles this case. Vite supports it since `@vitejs/plugin-react` 4.7.0, `@vitejs/plugin-react-swc` 3.11.0.

```json
{
  "react-refresh/only-export-components": [
    "error",
    { "allowCompoundComponents": true }
  ]
}
```

Enabling this option allows code such as the following:

```jsx
const Root = () => <></>;
const Label = () => <></>;
export const Tag = { Root, Label };
```

### [`v0.5.6`](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/blob/HEAD/CHANGELOG.md#056)

[Compare Source](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/compare/v0.5.5...v0.5.6)

- Support re-exporting namespace components (fixes [#&#8203;116](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/issues/116))

### [`v0.5.5`](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/blob/HEAD/CHANGELOG.md#055)

[Compare Source](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/compare/v0.5.4...v0.5.5)

- Fix SCREAMING\_SNAKE\_CASE constant exported via `export { Name }` incorrectly treated as React component [#&#8203;114](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/pull/114) (fixes [#&#8203;113](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/issues/113))
- Add `contentType` and `size` to `allowExportNames` in Next config [#&#8203;115](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/pull/115)

### [`v0.5.4`](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/blob/HEAD/CHANGELOG.md#054)

[Compare Source](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/compare/v0.5.3...v0.5.4)

- Add `instant` to `allowExportNames` in Next config [#&#8203;112](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/pull/112)

### [`v0.5.3`](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/blob/HEAD/CHANGELOG.md#053)

[Compare Source](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/compare/v0.5.2...v0.5.3)

- Fix check for non component class exported via `export { }` [#&#8203;110](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/pull/110) (fixes [#&#8203;109](https://github.com/ArnaudBarre/eslint-plugin-react-refresh/issues/109))

</details>

<details>
<summary>i18next/i18next-http-backend (i18next-http-backend)</summary>

### [`v3.0.6`](https://github.com/i18next/i18next-http-backend/blob/HEAD/CHANGELOG.md#306)

[Compare Source](https://github.com/i18next/i18next-http-backend/compare/v3.0.5...v3.0.6)

- fix: allow forward slashes in `ns` values so nested namespace names (mapping to URL layouts such as `/locales/en/a/b.json`) fetch correctly again. 3.0.5's security fix applied the same strict URL-segment check to both `lng` and `ns`, which was correct for `lng` (no BCP-47 shape contains `/`) but over-strict for `ns` — nested namespaces containing `/` were never officially supported, but the behaviour fell out of the implicit string-substitution semantics of `loadPath` and is common enough in the wild to be worth accommodating. `isSafeUrlSegment` is now split into `isSafeLangUrlSegment` (strict — still rejects `/`) and `isSafeNsUrlSegment` (loose — allows `/` but still rejects `..`, `\`, URL-structure characters, control chars, prototype keys, and oversized inputs). `isSafeUrlSegment` is kept as a backwards-compatible alias for the strict check. The 3.0.5 security fix remains in force for every concrete attack pattern from the original advisory.

</details>

<details>
<summary>bepo65/license-report (license-report)</summary>

### [`v6.8.5`](https://github.com/bepo65/license-report/blob/HEAD/CHANGELOG.md#685-2026-05-28)

[Compare Source](https://github.com/bepo65/license-report/compare/v6.8.2...v6.8.5)

</details>

<details>
<summary>react/react (react)</summary>

### [`v19.2.8`](https://github.com/react/react/releases/tag/v19.2.8): 19.2.8 (July 21st, 2026)

[Compare Source](https://github.com/react/react/compare/v19.2.7...v19.2.8)

##### React Server Components

- Performance improvements when decoding
  ([#&#8203;37087](https://github.com/facebook/react/pull/37087) by [@&#8203;eps1lon](https://github.com/eps1lon))

### [`v19.2.7`](https://github.com/react/react/blob/HEAD/CHANGELOG.md#1927-June-1-2026)

[Compare Source](https://github.com/react/react/compare/v19.2.6...v19.2.7)

##### React Server Components

- Fixed missing `FormData` entries in Server Actions which regressed in 19.2.6 ([@&#8203;unstubbable](https://github.com/unstubbable) [#&#8203;36566](https://github.com/facebook/react/pull/36566))

### [`v19.2.6`](https://github.com/react/react/blob/HEAD/CHANGELOG.md#1926-May-6-2026)

[Compare Source](https://github.com/react/react/compare/v19.2.5...v19.2.6)

##### React Server Components

- Type hardening and performance improvements ([@&#8203;eps1lon](https://github.com/eps1lon), [@&#8203;unstubbable](https://github.com/unstubbable) [#&#8203;36425](https://github.com/facebook/react/pull/36425))

</details>

<details>
<summary>i18next/react-i18next (react-i18next)</summary>

### [`v17.0.14`](https://github.com/i18next/react-i18next/blob/HEAD/CHANGELOG.md#17014)

[Compare Source](https://github.com/i18next/react-i18next/compare/v17.0.13...v17.0.14)

- fix: the `i18n` object returned by `useTranslation` was only refreshed when `i18n.language` changed, so a `resolvedLanguage` (or `languages`) change of its own kept handing components the previous snapshot. That happens whenever the translations for the current language arrive after the switch — i18next resolves to the fallback until its store has them — and components reading `i18n.resolvedLanguage` (language switchers, for example) then stayed one switch behind. The cached wrapper is now keyed on all three language fields, which are exactly the ones the surrounding `useMemo` already depends on; wrapper identity still only changes when the language state does, so the caching from [#&#8203;1885](https://github.com/i18next/react-i18next/issues/1885) is unaffected. Reported via [next-i18next#2348](https://github.com/i18next/next-i18next/issues/2348).

### [`v17.0.13`](https://github.com/i18next/react-i18next/blob/HEAD/CHANGELOG.md#17013)

[Compare Source](https://github.com/i18next/react-i18next/compare/v17.0.12...v17.0.13)

- fix(types): the selector-form `keyPrefix` overload of `useTranslation()` is now available under `enableSelector: 'strict'`. `useTranslation` was gated on `true | 'optimize'` only, so under `'strict'` it resolved to the legacy signature and the selector overload disappeared entirely (`keyPrefix: ($) => $.ns.foo` failed with `Type '($: any) => any' is not assignable to type 'undefined'`). `Trans` already handled all three modes. Companion to the same fix for `getFixedT` in [i18next#2446](https://github.com/i18next/i18next/pull/2446). Thanks [@&#8203;hovelopin](https://github.com/hovelopin) ([#&#8203;1930](https://github.com/i18next/react-i18next/pull/1930)).

### [`v17.0.12`](https://github.com/i18next/react-i18next/blob/HEAD/CHANGELOG.md#17012)

[Compare Source](https://github.com/i18next/react-i18next/compare/v17.0.11...v17.0.12)

- fix(IcuTrans): key-less `icu.macro` nodes (`<Trans>Welcome, {name}!</Trans>`, `<Select>`, `<Plural>` without `i18nKey`) rendered an empty string since 17.0.0. The macro now emits `<IcuTrans defaultTranslation="…">` without a key and `IcuTrans` passed `undefined` to `t()`, which returns `''`. Like `Trans`, `IcuTrans` now uses `defaultTranslation` as the key when `i18nKey` is not provided.

### [`v17.0.11`](https://github.com/i18next/react-i18next/blob/HEAD/CHANGELOG.md#17011)

[Compare Source](https://github.com/i18next/react-i18next/compare/v17.0.10...v17.0.11)

- chore: `html-parse-stringify` updated to `^4.0.1`. The parser powering `<Trans>` is now actively maintained under the i18next org ([i18next/html-parse-stringify](https://github.com/i18next/html-parse-stringify)) after years without upstream releases. 4.x brings modern dual ESM/CJS packaging with an `exports` map, zero runtime dependencies, reworked TypeScript types and a long list of parser fixes (literal `<` in text, multiline/CRLF attribute values, comments containing `>`, doctype handling, quote-aware bracket handling).
- refactor(Trans): the internal `escapeLiteralLessThan` scanner (\~80 lines) is replaced by the parser's new `allowedTags` option with identical semantics: only numbered tags, kept basic HTML tags and known component names are parsed as markup, any other tag-shaped sequence in the translation stays literal text. Rendered output is unchanged (all 493 tests pass, including the [#&#8203;1880](https://github.com/i18next/react-i18next/issues/1880) and [#&#8203;1893](https://github.com/i18next/react-i18next/issues/1893) escaping cases).

### [`v17.0.10`](https://github.com/i18next/react-i18next/blob/HEAD/CHANGELOG.md#17010)

[Compare Source](https://github.com/i18next/react-i18next/compare/v17.0.9...v17.0.10)

- fix(warnings): the `useTranslation` and `Trans` "You will need to pass in an i18next instance" warnings now match the `useSSR` wording, mentioning the props/context alternatives and the most common unexplained cause at scale: duplicate react-i18next copies in monorepo setups. The `Trans` variant also referenced the internal `i18nextReactModule` name; it now points to the public `initReactI18next` API.
- feat(warnings): development-only warning (`SUSPENDED_WHILE_LOADING`, logged once) right before `useTranslation` suspends while translations are loading. With the default `useSuspense: true` and no `<Suspense>` boundary this previously surfaced as a blank screen or a cryptic React error; the warning now names both fixes (add a `<Suspense>` boundary or set `react.useSuspense: false`). No-op in production builds; the `process.env.NODE_ENV` check is wrapped so runtimes without a `process` global (raw ESM in the browser, some edge runtimes) stay silent instead of throwing.
- ci: weekly workflow typechecking the test suite against `@types/react@next` / `@types/react-dom@next`, so the next React major's type changes (like the React 18 `TFunctionResult`/children wave) surface before user reports.

### [`v17.0.9`](https://github.com/i18next/react-i18next/blob/HEAD/CHANGELOG.md#1709)

[Compare Source](https://github.com/i18next/react-i18next/compare/v17.0.8...v17.0.9)

- fix: allow TypeScript 7 in the optional `typescript` peer dependency range (`^5 || ^6 || ^7`). With `typescript@7.0.2` in a project, `npm install` failed with an `ERESOLVE` peer conflict. Fixes [#&#8203;1927](https://github.com/i18next/react-i18next/issues/1927), thanks [@&#8203;andikapradanaarif](https://github.com/andikapradanaarif).
- fix(types): `<Trans t={t} ns="ns" …>` with a `t` from `useTranslation(['ns'])` now typechecks under TypeScript 7. TS7 intersects the `Ns` inference candidates coming from the `t` prop (`readonly ['ns']`) and the `ns` prop (`'ns'`) into an unsatisfiable `'ns' & readonly ['ns']`, where TS6 resolved them. The `ns` prop on `TransProps`, `TransSelectorProps` and `IcuTransWithoutContextProps` now also accepts a single namespace out of an array-typed `Ns` (`Ns | (Ns extends readonly (infer S extends string)[] ? S : never)`) — which matches runtime behavior and is unchanged under TS5/TS6.

### [`v17.0.8`](https://github.com/i18next/react-i18next/blob/HEAD/CHANGELOG.md#1708)

[Compare Source](https://github.com/i18next/react-i18next/compare/v17.0.7...v17.0.8)

- fix(types): `<Trans i18nKey={$ => ...}>` now typechecks under `enableSelector: 'strict'`. The `Trans` component's conditional type was gated on `_EnableSelector extends true | 'optimize'`, excluding `'strict'` and falling back to the legacy string-key signature. Runtime was already correct (it calls `keyFromSelector(i18nKey)` whenever `typeof i18nKey === 'function'`); this is a type-only fix that widens the conditional to include `'strict'`. Thanks [@&#8203;Faithfinder](https://github.com/Faithfinder) ([#&#8203;1921](https://github.com/i18next/react-i18next/pull/1921))

### [`v17.0.7`](https://github.com/i18next/react-i18next/blob/HEAD/CHANGELOG.md#1707)

[Compare Source](https://github.com/i18next/react-i18next/compare/v17.0.6...v17.0.7)

- feat: `useTranslation([nsA, nsB, ...])` now passes its full namespace list to `getFixedT` via the new `scopeNs` opt (requires `i18next` ≥ v26.0.10). This makes selector calls with a secondary-namespace prefix resolve correctly under default `nsMode`: `t($ => $.nsB.foo)` previously missed silently because the bound `ns` was the primary string only and i18next's selector rewrite needed an array. Resolution semantics are unchanged — plain `t('key')` lookups still stay isolated to the primary namespace by default; use `nsMode: 'fallback'` to opt into multi-ns fallback resolution as before. Fixes [i18next#2429](https://github.com/i18next/i18next/issues/2429) for `useTranslation`-based callers.

### [`v17.0.6`](https://github.com/i18next/react-i18next/blob/HEAD/CHANGELOG.md#1706)

[Compare Source](https://github.com/i18next/react-i18next/compare/v17.0.5...v17.0.6)

- fix: restore the v17 `nodesToString` output format consumed by `i18next-cli`'s extractor while still rendering [1919](https://github.com/i18next/react-i18next/issues/1919) correctly
  - 17.0.5 fixed [1919](https://github.com/i18next/react-i18next/issues/1919) by changing what `nodesToString` produced, which inadvertently changed the extracted translation strings for keep-tags wrapping non-keep React elements
  - The fix now lives in the renderer: indexed `<N>` placeholders nested inside a keep-tag are scoped to that tag's own original React children (matching kept tags by name and positional occurrence at each level), so the translation string format produced by `nodesToString` is unchanged

### [`v17.0.5`](https://github.com/i18next/react-i18next/blob/HEAD/CHANGELOG.md#1705)

[Compare Source](https://github.com/i18next/react-i18next/compare/v17.0.4...v17.0.5)

- fix: `<Trans />` no longer breaks child rendering when a kept HTML node (`transKeepBasicHtmlNodesFor`) wraps a non-keep React element [1919](https://github.com/i18next/react-i18next/issues/1919) — superseded by 17.0.6, which keeps the same runtime fix without changing the `nodesToString` output

</details>

<details>
<summary>remix-run/react-router (react-router-dom)</summary>

### [`v7.18.3`](https://github.com/remix-run/react-router/compare/react-router-dom@7.18.2...react-router-dom@7.18.3)

[Compare Source](https://github.com/remix-run/react-router/compare/react-router-dom@7.18.2...react-router-dom@7.18.3)

</details>

<details>
<summary>uuidjs/uuid (uuid)</summary>

### [`v14.0.2`](https://github.com/uuidjs/uuid/blob/HEAD/CHANGELOG.md#1402-2026-08-18)

[Compare Source](https://github.com/uuidjs/uuid/compare/v14.0.1...v14.0.2)

##### Bug Fixes

- **v1:** carry nsecs overflow into the timestamp's high bits ([#&#8203;972](https://github.com/uuidjs/uuid/issues/972)) ([6adcc1d](https://github.com/uuidjs/uuid/commit/6adcc1d81bfaeb653c49d9b7ca7b0579244ae60c))
- **v1:** set the multicast bit on v1Bytes's own randomly-generated node ([#&#8203;973](https://github.com/uuidjs/uuid/issues/973)) ([b1da338](https://github.com/uuidjs/uuid/commit/b1da338815af4d919295eacb33aae340e372232a))
- **v7:** align default seq formula in v7Bytes with updateV7State ([#&#8203;965](https://github.com/uuidjs/uuid/issues/965)) ([a67db57](https://github.com/uuidjs/uuid/commit/a67db57f7ae169e97c2573fd9d852b8364f89bf8))

### [`v14.0.1`](https://github.com/uuidjs/uuid/blob/HEAD/CHANGELOG.md#1401-2026-06-20)

[Compare Source](https://github.com/uuidjs/uuid/compare/v14.0.0...v14.0.1)

##### Bug Fixes

- add types condition to node export for moduleResolution bundler ([#&#8203;961](https://github.com/uuidjs/uuid/issues/961)) ([27ffae5](https://github.com/uuidjs/uuid/commit/27ffae5e867823b8c7db255975d65358fbdb1a7e))

</details>

<details>
<summary>vitejs/vite (vite)</summary>

### [`v8.2.2`](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#830-2026-09-10)

[Compare Source](https://github.com/vitejs/vite/compare/v8.2.1...v8.2.2)

##### Features

- **build:** avoid settling seen preload dependencies for performance ([#&#8203;23446](https://github.com/vitejs/vite/issues/23446)) ([e6f6b3e](https://github.com/vitejs/vite/commit/e6f6b3e3119256daa837b2dc399058c8aa45b470))
- **devtools:** enable dev server integration ([#&#8203;23333](https://github.com/vitejs/vite/issues/23333)) ([68aeb8a](https://github.com/vitejs/vite/commit/68aeb8a3b5a5a2ccd505288999bae1a5e6942ee1))
- accept Rolldown watch options in `server.watch` ([#&#8203;23133](https://github.com/vitejs/vite/issues/23133)) ([1b5cfe3](https://github.com/vitejs/vite/commit/1b5cfe3d3777d4ceb7f35fcee9d3c4279316a084))
- add closeServer and closePreviewServer hooks ([#&#8203;23110](https://github.com/vitejs/vite/issues/23110)) ([e17d2d5](https://github.com/vitejs/vite/commit/e17d2d565b0288f169c7995adb2b192f917548e7))
- add top-level `tsconfig` option ([#&#8203;23310](https://github.com/vitejs/vite/issues/23310)) ([93164c3](https://github.com/vitejs/vite/commit/93164c3530a7b4fc7bbedfb986d6afa9546cdef3))
- add warning for unsupported hooks in plugin returned from `applyToEnvironment` hook ([#&#8203;23191](https://github.com/vitejs/vite/issues/23191)) ([fdef04f](https://github.com/vitejs/vite/commit/fdef04f112aadfea40ad3c448d96a49a04c168bd))
- **cli:** support naming the CPU profile via --profile \[name] ([#&#8203;23042](https://github.com/vitejs/vite/issues/23042)) ([a500dee](https://github.com/vitejs/vite/commit/a500deeb6f52d93ca501a0fc612a5392b939f2f5))
- **config:** warn on named imports from JSON modules ([#&#8203;23378](https://github.com/vitejs/vite/issues/23378)) ([472385e](https://github.com/vitejs/vite/commit/472385e6ec4b21e3167c7abf9769883d1c9675f8))
- **css:** minify style tag ([#&#8203;23183](https://github.com/vitejs/vite/issues/23183)) ([8156684](https://github.com/vitejs/vite/commit/8156684572bdcf73e9d8568ed67971f0467fab60))
- searched params attached to workers are now preserved ([#&#8203;22280](https://github.com/vitejs/vite/issues/22280)) ([517b97f](https://github.com/vitejs/vite/commit/517b97f57ab9473e7417da856eb641d76870a56e))
- support subpath imports in dynamic import statements ([#&#8203;23185](https://github.com/vitejs/vite/issues/23185)) ([b78e2f1](https://github.com/vitejs/vite/commit/b78e2f1bc1cba404c4bd9faf518d26ec85e89fc7))
- use `import.meta.ROLLDOWN_FILE_URL_*` for assets in JS ([#&#8203;22888](https://github.com/vitejs/vite/issues/22888)) ([4366ac4](https://github.com/vitejs/vite/commit/4366ac468343252df6d5706361a6348afa66f9cc))
- use `import.meta.ROLLDOWN_FILE_URL_*` for other plugins ([#&#8203;22894](https://github.com/vitejs/vite/issues/22894)) ([e38f29e](https://github.com/vitejs/vite/commit/e38f29ee48bea5ea3178faec5b78708e86f38afb))
- **worker:** remove worker chunk if it's detected that it's not referenced ([#&#8203;22473](https://github.com/vitejs/vite/issues/22473)) ([924997a](https://github.com/vitejs/vite/commit/924997a4bdda9115faee9bdb622fcec4fc8357f0))

##### Bug Fixes

- handle CRLF line endings in code frame positions ([#&#8203;23219](https://github.com/vitejs/vite/issues/23219)) ([9913672](https://github.com/vitejs/vite/commit/9913672bee9c34a2df7fff4c2538783cd4f43b4e))
- only treat whole `node_modules` path segments as dependencies (fix [#&#8203;17467](https://github.com/vitejs/vite/issues/17467)) ([#&#8203;23437](https://github.com/vitejs/vite/issues/23437)) ([ef0dc17](https://github.com/vitejs/vite/commit/ef0dc17ada53d1169ae5a89cb8f6482831466755))
- **build:** keep hash placeholders as-is in `resolveFileUrl` hook ([#&#8203;23422](https://github.com/vitejs/vite/issues/23422)) ([e8d6a4d](https://github.com/vitejs/vite/commit/e8d6a4d3399c739772080d70c7f3c4d548a637c9))
- **bundled-dev:** mark payload delivered on client report ([#&#8203;23373](https://github.com/vitejs/vite/issues/23373)) ([a6d43bc](https://github.com/vitejs/vite/commit/a6d43bc9e3464faa4d49f090e75e1ab334ffb7b0))
- **deps:** update all non-major dependencies ([#&#8203;23445](https://github.com/vitejs/vite/issues/23445)) ([fc7c104](https://github.com/vitejs/vite/commit/fc7c104e74d35a97fa313d5dd6f1b5e7d5b26159))
- **html:** don't inline preload link targets (fix [#&#8203;13355](https://github.com/vitejs/vite/issues/13355)) ([#&#8203;23387](https://github.com/vitejs/vite/issues/23387)) ([12e709c](https://github.com/vitejs/vite/commit/12e709ca4df1059747db1cb7c5d1cd71aba79a24))
- resolve the actual package root in findNearestMainPackageData for nested package.json ([#&#8203;23356](https://github.com/vitejs/vite/issues/23356)) ([8492422](https://github.com/vitejs/vite/commit/8492422b8f110625a90c702f42f30784e8cf19dc))
- shortcuts extend error ([#&#8203;23447](https://github.com/vitejs/vite/issues/23447)) ([4ec58d1](https://github.com/vitejs/vite/commit/4ec58d159df4a1b4799356a1fda62db88ed14752))
- **config:** close bundles when generation fails ([#&#8203;23256](https://github.com/vitejs/vite/issues/23256)) ([6bacc95](https://github.com/vitejs/vite/commit/6bacc956df5a76cc5653b9de4493453b953439fd))
- **css:** keep newline-separated srcset candidates intact ([#&#8203;23265](https://github.com/vitejs/vite/issues/23265)) ([4f9d2f4](https://github.com/vitejs/vite/commit/4f9d2f4dadc83191200de7d2154c957a711e8c3d))
- **deps:** update all non-major dependencies ([#&#8203;23337](https://github.com/vitejs/vite/issues/23337)) ([d550815](https://github.com/vitejs/vite/commit/d55081581ddd4d55667fef38e85d02ab7f879f15))
- **deps:** update all non-major dependencies ([#&#8203;23404](https://github.com/vitejs/vite/issues/23404)) ([238ad81](https://github.com/vitejs/vite/commit/238ad811c7fb9e4730cbd317d0657867ed3447b3))
- **deps:** update rolldown-related dependencies ([#&#8203;23338](https://github.com/vitejs/vite/issues/23338)) ([76e8082](https://github.com/vitejs/vite/commit/76e8082c56a2872dc8017c5672bc36cba8dcf75d))
- **deps:** update rolldown-related dependencies ([#&#8203;23405](https://github.com/vitejs/vite/issues/23405)) ([b882566](https://github.com/vitejs/vite/commit/b88256607e3a051b7bcb0b338b3c4665926b55a8))
- **dev:** run closeBundle after buildEnd failure ([#&#8203;23165](https://github.com/vitejs/vite/issues/23165)) ([8cb872e](https://github.com/vitejs/vite/commit/8cb872e7fb65b03f6068923c6aa7fcf3e71baf21))
- **hmr:** handle `import.meta.hot.invalidate` in virtual module ([#&#8203;23171](https://github.com/vitejs/vite/issues/23171)) ([6162968](https://github.com/vitejs/vite/commit/616296895bd135386d35069a479a5f188c7de298))
- **utils:** handle dot in srcset density descriptor ([#&#8203;23346](https://github.com/vitejs/vite/issues/23346)) ([b50e1b4](https://github.com/vitejs/vite/commit/b50e1b4a3d66128a4076e19769b2e29657985516))
- **utils:** match timestamp query parameter with proper delimiters ([#&#8203;23364](https://github.com/vitejs/vite/issues/23364)) ([41f3c6f](https://github.com/vitejs/vite/commit/41f3c6fff88ade015669cac5c42db946e0b6f5c9))

##### Performance Improvements

- **proxy:** pre-compile context matchers at server creation ([#&#8203;23263](https://github.com/vitejs/vite/issues/23263)) ([8abf700](https://github.com/vitejs/vite/commit/8abf700eeb2411d8402d08f8e2696effafdbe774))

##### Miscellaneous Chores

- introducing `@e18e/eslint-plugin` ([#&#8203;23357](https://github.com/vitejs/vite/issues/23357)) ([f794133](https://github.com/vitejs/vite/commit/f79413353995a2344879014410a9128b1b9f8e9a))
- remove unnecessary comment ([#&#8203;23448](https://github.com/vitejs/vite/issues/23448)) ([b919a1a](https://github.com/vitejs/vite/commit/b919a1a8b5a7c694667f993d677973f42d349458))
- delete unused `PluginContainerOptions` ([#&#8203;23382](https://github.com/vitejs/vite/issues/23382)) ([ee64401](https://github.com/vitejs/vite/commit/ee644014aab61e546742b862a7d7b0d6c7d67a7b))
- use oxfmt `sortImports` ([#&#8203;23319](https://github.com/vitejs/vite/issues/23319)) ([97ad042](https://github.com/vitejs/vite/commit/97ad042170f4c71b518239723b733dd98e8e3e76))

##### Code Refactoring

- delete unused `esbuildPlugin` ([#&#8203;23381](https://github.com/vitejs/vite/issues/23381)) ([f40efef](https://github.com/vitejs/vite/commit/f40efefbb3630cdb7235286bc2b51673d9fbfc27))
- exclude postfix from `__VITE_ASSET__` ([#&#8203;22886](https://github.com/vitejs/vite/issues/22886)) ([a6c08e1](https://github.com/vitejs/vite/commit/a6c08e10a624bd89b78683ff1b0e8cfa1d89aa45))
- remove HmrUrl concept ([#&#8203;23172](https://github.com/vitejs/vite/issues/23172)) ([67a6807](https://github.com/vitejs/vite/commit/67a680767317f8e2cb28b6b0500192f993a567cf))
- use `urlId` of `import.meta.ROLLDOWN_FILE_URL` in wasm plugin ([#&#8203;22962](https://github.com/vitejs/vite/issues/22962)) ([92bd2a7](https://github.com/vitejs/vite/commit/92bd2a7f325ed102349cdc6c1ad4b5cd25e1d72f))

##### Tests

- add `renderBuiltUrl` change changes hash ([#&#8203;23118](https://github.com/vitejs/vite/issues/23118)) ([0291408](https://github.com/vitejs/vite/commit/0291408b8443129ce6f6d1d440be8facabe9683b))

##### Beta Changelogs

##### [8.3.0-beta.1](https://github.com/vitejs/vite/compare/v8.3.0-beta.0...v8.3.0-beta.1) (2026-09-07)

See [8.3.0-beta.1 changelog](https://github.com/vitejs/vite/blob/v8.3.0-beta.1/packages/vite/CHANGELOG.md)

##### [8.3.0-beta.0](https://github.com/vitejs/vite/compare/v8.2.2...v8.3.0-beta.0) (2026-09-02)

See [8.3.0-beta.0 changelog](https://github.com/vitejs/vite/blob/v8.3.0-beta.0/packages/vite/CHANGELOG.md)

</details>

<details>
<summary>vitest-dev/vitest (vitest)</summary>

### [`v4.1.11`](https://github.com/vitest-dev/vitest/releases/tag/v4.1.11)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.1.10...v4.1.11)

#####    🐞 Bug Fixes

- Revive global concurrency limit for test lifecycle \[backport to v4]  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10992](https://github.com/vitest-dev/vitest/issues/10992) [<samp>(5146d)</samp>](https://github.com/vitest-dev/vitest/commit/5146df80b)
- **browser**:
  - Encode iframeId in tester iframe URL \[backport to v4]  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va), **Pduhard** and **Claude Opus 4.8** in [#&#8203;10955](https://github.com/vitest-dev/vitest/issues/10955) [<samp>(10b2c)</samp>](https://github.com/vitest-dev/vitest/commit/10b2cd201)
  - Trigger playwright/chromium gc on lower disk availability \[backport to v4]  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode** in [#&#8203;10951](https://github.com/vitest-dev/vitest/issues/10951) [<samp>(9851d)</samp>](https://github.com/vitest-dev/vitest/commit/9851dbc41)
- **mocker**:
  - Restrict redirect mocks to the fs allowlist \[backport to v4]  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10974](https://github.com/vitest-dev/vitest/issues/10974) [<samp>(fe5a1)</samp>](https://github.com/vitest-dev/vitest/commit/fe5a11d3c)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.1.10...v4.1.11)

### [`v4.1.10`](https://github.com/vitest-dev/vitest/releases/tag/v4.1.10)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.1.9...v4.1.10)

#####    🐞 Bug Fixes

- **browser**: Check fs access in builtin commands \[backport to v4]  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (claude-opus-4-8)** in [#&#8203;10680](https://github.com/vitest-dev/vitest/issues/10680) [<samp>(5c18d)</samp>](https://github.com/vitest-dev/vitest/commit/5c18dd267)
- **vm**: Fix external module resolve error with deps optimizer query for encoded URI \[backport to v4]  -  by [@&#8203;SveLil](https://github.com/SveLil) and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10661](https://github.com/vitest-dev/vitest/issues/10661) [<samp>(bae52)</samp>](https://github.com/vitest-dev/vitest/commit/bae52b511)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.1.9...v4.1.10)

### [`v4.1.9`](https://github.com/vitest-dev/vitest/releases/tag/v4.1.9)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.1.8...v4.1.9)

##### 🐞 Bug Fixes

- Fix `importOriginal` with optimizer and query import \[backport to v4] - by **Hiroshi Ogawa**, **David Harris**, **Codex**and **Vladimir** in [#&#8203;10546](https://github.com/vitest-dev/vitest/issues/10546) [<samp>(a5180)</samp>](https://github.com/vitest-dev/vitest/commit/a5180190c)
- **browser**:
  - Wait for orchestrator readiness before resolving browser sessions \[backport to v4] - by **Vladimir** and **Séamus O'Connor** in [#&#8203;10555](https://github.com/vitest-dev/vitest/issues/10555) [<samp>(7fb29)</samp>](https://github.com/vitest-dev/vitest/commit/7fb29651a)
  - Wait for iframe tester readiness before preparing  \[backport to v4] - by **Vladimir** and **Séamus O'Connor** in [#&#8203;10497](https://github.com/vitest-dev/vitest/issues/10497) and [#&#8203;10556](https://github.com/vitest-dev/vitest/issues/10556) [<samp>(fbc62)</samp>](https://github.com/vitest-dev/vitest/commit/fbc626c40)
- **mocker**:
  - Hoist vi.mock() for vite-plus/test imports \[backport to v4] - by **Hiroshi Ogawa**, **LongYinan**, **Claude Opus 4.8** and **Vladimir** in [#&#8203;10548](https://github.com/vitest-dev/vitest/issues/10548) [<samp>(2c955)</samp>](https://github.com/vitest-dev/vitest/commit/2c9559c02)
- **pool**:
  - Prevent test run hang on worker crash  \[backport to v4] - by **Ari Perkkiö** and **Jattioui Ismail** in [#&#8203;10543](https://github.com/vitest-dev/vitest/issues/10543) and [#&#8203;10564](https://github.com/vitest-dev/vitest/issues/10564) [<samp>(934b0)</samp>](https://github.com/vitest-dev/vitest/commit/934b0f587)

##### [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.1.8...v4.1.9)

### [`v4.1.8`](https://github.com/vitest-dev/vitest/releases/tag/v4.1.8)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.1.7...v4.1.8)

#####    🐞 Bug Fixes

- **browser**:
  - Disable client `cdp` API when `allowWrite/allowExec: false` \[backport to v4]  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **Codex** in [#&#8203;10450](https://github.com/vitest-dev/vitest/issues/10450) [<samp>(e4067)</samp>](https://github.com/vitest-dev/vitest/commit/e4067b3b1)
  - Remove orphaned Playwright route when same module is mocked via multiple ids \[backport to v4]  -  by [@&#8203;toxik](https://github.com/toxik) and [@&#8203;Zelys-DFKH](https://github.com/Zelys-DFKH) in [#&#8203;10474](https://github.com/vitest-dev/vitest/issues/10474) [<samp>(675b4)</samp>](https://github.com/vitest-dev/vitest/commit/675b4343f)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.1.7...v4.1.8)

### [`v4.1.7`](https://github.com/vitest-dev/vitest/releases/tag/v4.1.7)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.1.6...v4.1.7)

#####    🐞 Bug Fixes

- **runner**: Limit concurrency per task branch in addition to per leaf callbacks (backport)  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10384](https://github.com/vitest-dev/vitest/issues/10384) [<samp>(4f0f2)</samp>](https://github.com/vitest-dev/vitest/commit/4f0f2a1ee)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.1.6...v4.1.7)

### [`v4.1.6`](https://github.com/vitest-dev/vitest/releases/tag/v4.1.6)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.1.5...v4.1.6)

#####    🐞 Bug Fixes

- **browser**: Provide project reference in `ToMatchScreenshotResolvePath`  -  by [@&#8203;macarie](https://github.com/macarie) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10138](https://github.com/vitest-dev/vitest/issues/10138) [<samp>(31882)</samp>](https://github.com/vitest-dev/vitest/commit/31882607c)
- Global `sequence.concurrent: true` with top-level `test(..., { concurrent: false })` + depreacte `sequential` test API and options  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Codex** and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10196](https://github.com/vitest-dev/vitest/issues/10196) [<samp>(2847d)</samp>](https://github.com/vitest-dev/vitest/commit/2847dfa2a)
- **browser**: Simplify orchestrator otel carrier  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10285](https://github.com/vitest-dev/vitest/issues/10285) [<samp>(18af9)</samp>](https://github.com/vitest-dev/vitest/commit/18af98cee)

#####    🏎 Performance

- Stringify diff objects only once  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10276](https://github.com/vitest-dev/vitest/issues/10276) [<samp>(9f7b1)</samp>](https://github.com/vitest-dev/vitest/commit/9f7b1528c)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.1.5...v4.1.6)

### [`v4.1.5`](https://github.com/vitest-dev/vitest/releases/tag/v4.1.5)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.1.4...v4.1.5)

#####    🚀 Experimental Features

- **coverage**: Istanbul to support `instrumenter` option  -  by [@&#8203;BartWaardenburg](https://github.com/BartWaardenburg) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10119](https://github.com/vitest-dev/vitest/issues/10119) [<samp>(0e0ff)</samp>](https://github.com/vitest-dev/vitest/commit/0e0ff41c7)

#####    🐞 Bug Fixes

- \--project negation excludes browser instances  -  by [@&#8203;felamaslen](https://github.com/felamaslen) in [#&#8203;10131](https://github.com/vitest-dev/vitest/issues/10131) [<samp>(9423d)</samp>](https://github.com/vitest-dev/vitest/commit/9423dc084)
- Project color label on html reporter  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10142](https://github.com/vitest-dev/vitest/issues/10142) [<samp>(596f7)</samp>](https://github.com/vitest-dev/vitest/commit/596f73986)
- Fix `vi.defineHelper` called as object method  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10163](https://github.com/vitest-dev/vitest/issues/10163) [<samp>(122c2)</samp>](https://github.com/vitest-dev/vitest/commit/122c25b5b)
- Alias `agent` reporter to `minimal`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10157](https://github.com/vitest-dev/vitest/issues/10157) [<samp>(663b9)</samp>](https://github.com/vitest-dev/vitest/commit/663b99fe3)
- Respect diff config options in soft assertions  -  by [@&#8203;Copilot](https://github.com/Copilot), **sheremet-va** and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8696](https://github.com/vitest-dev/vitest/issues/8696) [<samp>(9787d)</samp>](https://github.com/vitest-dev/vitest/commit/9787dedad)
- Respect diff config options in soft assertions "  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8696](https://github.com/vitest-dev/vitest/issues/8696) [<samp>(7dc6d)</samp>](https://github.com/vitest-dev/vitest/commit/7dc6d54fd)
- **ast-collect**: Recognize \_*vi\_import* prefix in static test discovery  -  by [@&#8203;Yejneshwar](https://github.com/Yejneshwar) in [#&#8203;10129](https://github.com/vitest-dev/vitest/issues/10129) [<samp>(32546)</samp>](https://github.com/vitest-dev/vitest/commit/325463ab2)
- **coverage**: Descriptive error message when reports directory is removed during test run  -  by [@&#8203;DaveT1991](https://github.com/DaveT1991) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;10117](https://github.com/vitest-dev/vitest/issues/10117) [<samp>(14133)</samp>](https://github.com/vitest-dev/vitest/commit/1413382e1)
- **snapshot**: Increase default snapshot max output length  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and **Codex** in [#&#8203;10150](https://github.com/vitest-dev/vitest/issues/10150) [<samp>(21e66)</samp>](https://github.com/vitest-dev/vitest/commit/21e66ff63)
- **ui**: Fix jsx/tsx syntax highlight  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10152](https://github.com/vitest-dev/vitest/issues/10152) [<samp>(f1b1f)</samp>](https://github.com/vitest-dev/vitest/commit/f1b1f6c7b)
- **web-worker**: Support MessagePort objects referenced inside postMessage data  -  by [@&#8203;whitphx](https://github.com/whitphx) and **Claude Opus 4.6 (1M context)** in [#&#8203;9927](https://github.com/vitest-dev/vitest/issues/9927) and [#&#8203;10124](https://github.com/vitest-dev/vitest/issues/10124) [<samp>(7ad7d)</samp>](https://github.com/vitest-dev/vitest/commit/7ad7d39af)
- **api**: Make test-specification options writable  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10154](https://github.com/vitest-dev/vitest/issues/10154) [<samp>(6abd5)</samp>](https://github.com/vitest-dev/vitest/commit/6abd557b7)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.1.4...v4.1.5)

</details>

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMTAuMTYiLCJ1cGRhdGVkSW5WZXIiOiI0NC45MC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiLCJyZW5vdmF0ZSJdfQ==-->

See merge request swiss-armed-forces/cyber-command/cea/loom!459

Co-authored-by: Loom MR Pipeline Trigger <group_103951964_bot_9504bb8dead6d4e406ad817a607f24be@noreply.gitlab.com>
Co-authored-by: shrewd-laidback palace <shrewd-laidback-palace-736-c41-2c1-e464fc974@swiss-armed-forces-open-source.ch>
robbevp pushed a commit to robbevp/website-robbevanpetegem that referenced this pull request Oct 16, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | devDependencies | patch | [`9.39.4` -> `9.39.5`](https://renovatebot.com/diffs/npm/eslint/9.39.4/9.39.5) |
| [prettier](https://prettier.io) ([source](https://github.com/prettier/prettier)) | devDependencies | minor | [`3.8.3` -> `3.9.10`](https://renovatebot.com/diffs/npm/prettier/3.8.3/3.9.10) |
| [stylelint](https://stylelint.io) ([source](https://github.com/stylelint/stylelint)) | devDependencies | minor | [`17.12.0` -> `17.16.0`](https://renovatebot.com/diffs/npm/stylelint/17.12.0/17.16.0) |

---

### Release Notes

<details>
<summary>eslint/eslint (eslint)</summary>

### [`v9.39.5`](https://github.com/eslint/eslint/releases/tag/v9.39.5)

[Compare Source](eslint/eslint@v9.39.4...v9.39.5)

#### Bug Fixes

- [`253be16`](eslint/eslint@253be16) fix: handle unavailable require cache (backport of [#&#8203;20812](eslint/eslint#20812) to v9.x) ([#&#8203;21065](eslint/eslint#21065)) (Eric)

#### Documentation

- [`74930ed`](eslint/eslint@74930ed) docs: switch build to Node.js 24 ([#&#8203;20894](eslint/eslint#20894)) (Milos Djermanovic)
- [`eaec8bb`](eslint/eslint@eaec8bb) docs: Add ESLint v9.x EOL notice ([#&#8203;20828](eslint/eslint#20828)) (Milos Djermanovic)

#### Chores

- [`458205f`](eslint/eslint@458205f) chore: update `@eslint/eslintrc` and `@eslint/js` for v9.39.5 ([#&#8203;21077](eslint/eslint#21077)) (Francesco Trotta)
- [`202117b`](eslint/eslint@202117b) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins)
- [`d9eb6ed`](eslint/eslint@d9eb6ed) test: disable warning for `vm.constants.USE_MAIN_CONTEXT_DEFAULT_LOADER` ([#&#8203;21074](eslint/eslint#21074)) (Francesco Trotta)
- [`7b431a7`](eslint/eslint@7b431a7) chore: override `re2` dependency for `@metascraper/helpers` ([#&#8203;21068](eslint/eslint#21068)) (Milos Djermanovic)
- [`daf7791`](eslint/eslint@daf7791) chore: pin fflate@0.8.2 ([#&#8203;20895](eslint/eslint#20895)) (Milos Djermanovic)
- [`daee8ba`](eslint/eslint@daee8ba) ci: use pnpm in `eslint-flat-config-utils` type integration test ([#&#8203;20829](eslint/eslint#20829)) (Milos Djermanovic)
- [`116d4be`](eslint/eslint@116d4be) ci: unpin Node.js 25.x in CI ([#&#8203;20619](eslint/eslint#20619)) (Copilot)

</details>

<details>
<summary>prettier/prettier (prettier)</summary>

### [`v3.9.10`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#3910)

[Compare Source](prettier/prettier@3.9.9...3.9.10)

[diff](prettier/prettier@3.9.9...3.9.10)

##### Markdown: Update `micromark-extension-gfm-table` to fix the table parse issue on performance ([#&#8203;20266](prettier/prettier#20266) by [@&#8203;fisker](https://github.com/fisker))

See micromark/micromark-extension-gfm-table@4f43ead for details.

### [`v3.9.9`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#399)

[Compare Source](prettier/prettier@3.9.8...3.9.9)

[diff](prettier/prettier@3.9.8...3.9.9)

##### Markdown: Fix text with `$` been incorrectly parsed as math syntax ([#&#8203;20140](prettier/prettier#20140) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```md
<!-- Input -->
**Uses $FOO** from `a.sh` and `b.sh`, plus `$BAR` from `c.sh`, before anything else runs here.

<!-- Prettier 3.9.8 -->
**Uses $FOO** from `a.sh` and `b.sh`, plus `$BAR`from`c.sh`, before anything else runs here.

<!-- Prettier 3.9.9 -->
**Uses $FOO** from `a.sh` and `b.sh`, plus `$BAR` from `c.sh`, before anything else runs here.
```

### [`v3.9.8`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#398)

[Compare Source](prettier/prettier@3.9.7...3.9.8)

[diff](prettier/prettier@3.9.7...3.9.8)

##### Markdown: Don't let Liquid objects interrupt paragraphs ([#&#8203;20087](prettier/prettier#20087) by [@&#8203;seiyab](https://github.com/seiyab))

<!-- prettier-ignore -->

```markdown
<!-- Input -->
If `module` is not a [`WebAssembly.Module`](/en-US/docs/WebAssembly/Reference/JavaScript_interface/Module) object instance, a
{{jsxref("TypeError")}} is thrown.

<!-- Prettier 3.9.7 -->
If `module` is not a [`WebAssembly.Module`](/en-US/docs/WebAssembly/Reference/JavaScript_interface/Module) object instance, a

{{jsxref("TypeError")}} is thrown.

<!-- Prettier 3.9.8 -->
If `module` is not a [`WebAssembly.Module`](/en-US/docs/WebAssembly/Reference/JavaScript_interface/Module) object instance, a
{{jsxref("TypeError")}} is thrown.
```

### [`v3.9.7`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#397)

[Compare Source](prettier/prettier@3.9.6...3.9.7)

[diff](prettier/prettier@3.9.6...3.9.7)

##### Markdown: Prevent indentation drift in list-item code blocks ([#&#8203;19647](prettier/prettier#19647), [#&#8203;19990](prettier/prettier#19990) by [@&#8203;Austin1serb](https://github.com/Austin1serb), [@&#8203;giaBaoJS](https://github.com/giaBaoJS))

<!-- prettier-ignore -->

```markdown
<!-- Input -->
- [x] short first line.

      second paragraph at six spaces that wraps
      onto another line here.

<!-- Prettier 3.9.6 -->
- [x] short first line.

      second paragraph at six spaces that wraps
          onto another line here.

<!-- Prettier 3.9.7 -->
- [x] short first line.

      second paragraph at six spaces that wraps
      onto another line here.
```

##### JavaScript: Fix embedded template literal idempotency ([#&#8203;19725](prettier/prettier#19725) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```jsx
// Input
const foo = html`
            <div>${getText({
            value,
            })}</div>
`;

// Prettier 3.9.6 (first format)
const foo = html`
  <div>
    ${getText({
              value,
            })}
  </div>
`;

// Prettier 3.9.6 (second format)
const foo = html`
  <div>
    ${getText({
      value,
    })}
  </div>
`;

// Prettier 3.9.7
const foo = html`
  <div>
    ${getText({
      value,
    })}
  </div>
`;
```

##### Markdown: Preserve Liquid blocks after Markdown tables ([#&#8203;19730](prettier/prettier#19730) by [@&#8203;wanxiankai](https://github.com/wanxiankai), [@&#8203;seiyab](https://github.com/seiyab))

<!-- prettier-ignore -->

```markdown
<!-- Input -->
| Argument | Type |
| -------- | ---- |
{% set default_params = {
    "model": ["str"],
} %}

<!-- Prettier 3.9.6 -->
| Argument                  | Type |
| ------------------------- | ---- |
| {% set default_params = { |

    "model": ["str"],

} %}

<!-- Prettier 3.9.7 -->
| Argument | Type |
| -------- | ---- |
{% set default_params = {
    "model": ["str"],
} %}
```

##### Markdown: Preserve single tildes in Markdown ([#&#8203;19739](prettier/prettier#19739) by [@&#8203;lazerg](https://github.com/lazerg))

Since 3.9.0, single-tilde spans like `H~2~O` were rewritten to double tildes, turning subscript syntax into strike-through. Only double tildes are treated that way now, matching GitHub.

<!-- prettier-ignore -->

```markdown
<!-- Input -->
H~2~O

<!-- Prettier 3.9.6 -->
H~~2~~O

<!-- Prettier 3.9.7 -->
H~2~O
```

##### Markdown: Fix Markdown blockquote containing `>` characters ([#&#8203;19802](prettier/prettier#19802) by [@&#8203;seiyab](https://github.com/seiyab))

<!-- prettier-ignore -->

```md
<!-- Input -->
> **test**\>

<!-- Prettier 3.9.6 -->
> **test**>\>

<!-- Prettier 3.9.7 -->
> **test**\>
```

##### Markdown: Strip blockquote markers from a setext heading's continuation lines ([#&#8203;19878](prettier/prettier#19878) by [@&#8203;Kjubikstronk](https://github.com/Kjubikstronk))

A setext heading spanning multiple lines inside a blockquote kept the `>` marker of its continuation lines as literal text.

<!-- prettier-ignore -->

```md
<!-- Input -->
> Multi
> Line
> ===

<!-- Prettier 3.9.6 -->
> Multi > Line
> ===

<!-- Prettier 3.9.7 -->
> Multi
> Line
> ===
```

##### Markdown: Fix HTML block indentation drift in markdown list items ([#&#8203;19987](prettier/prettier#19987) by [@&#8203;lazerg](https://github.com/lazerg))

<!-- prettier-ignore -->

```markdown
<!-- Input -->
1. Enable images:

    <p align="center">
      <img alt="example">
    </p>

<!-- Prettier 3.9.6 (--tab-width=4) -->
1. Enable images:

     <p align="center">
       <img alt="example">
     </p>

<!-- Prettier 3.9.7 (--tab-width=4) -->
1. Enable images:

    <p align="center">
      <img alt="example">
    </p>
```

##### Angular: Support `@boundary` error boundaries ([#&#8203;20014](prettier/prettier#20014) by [@&#8203;Yahiro025](https://github.com/Yahiro025))

<!-- prettier-ignore -->

```html
<!-- Input -->
@&#8203;boundary {
<complex-chart [data]="data"/>
}
@&#8203;error (let err) {
<p>{{err.message}}</p>
}

<!-- Prettier 3.9.6 -->
SyntaxError: Unexpected character "EOF" (Do you have an unescaped "{" in your template? Use "{{ '{' }}") to escape it.) (6:1)

<!-- Prettier 3.9.7 -->
@&#8203;boundary {
  <complex-chart [data]="data" />
} @&#8203;error (let err) {
  <p>{{ err.message }}</p>
}
```

### [`v3.9.6`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#396)

[Compare Source](prettier/prettier@3.9.5...3.9.6)

[diff](prettier/prettier@3.9.5...3.9.6)

##### TypeScript: Preserve quotes for methods named `new` ([#&#8203;19621](prettier/prettier#19621) by [@&#8203;kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

```tsx
// Input
interface Container {
  "new"(id: string): number;
}

// Prettier 3.9.5
interface Container {
  new(id: string): number;
}

// Prettier 3.9.6
interface Container {
  "new"(id: string): number;
}
```

##### TypeScript: Support `import defer` ([#&#8203;19624](prettier/prettier#19624), [#&#8203;19675](prettier/prettier#19675) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```tsx
// Input
import defer * as foo from "foo";

// Prettier 3.9.5
import * as foo from "foo";

// Prettier 3.9.6
import defer * as foo from "foo";
```

##### JavaScript: Added a new official plugin `@prettier/plugin-yuku` ([#&#8203;19628](prettier/prettier#19628), [#&#8203;19629](prettier/prettier#19629) by [@&#8203;fisker](https://github.com/fisker))

`@prettier/plugin-yuku` is powered by [Yuku](https://yuku.fyi/) (A high-performance JavaScript/TypeScript compiler toolchain written in Zig).

This plugin includes two new parsers: `yuku` (JavaScript syntax) and `yuku-ts` (TypeScript syntax).

**To use this plugin:**

1. Install the plugin:

   ```bash
   yarn add --dev prettier @&#8203;prettier/plugin-yuku
   ```

2. Add it to your `.prettierrc`:

   ```yaml
   plugins:
     - "@&#8203;prettier/plugin-yuku"
   ```

Due to package size limitations, this plugin is not bundled with the main prettier package and must be installed separately.

For more information, check [the package homepage](https://github.com/prettier/prettier/tree/main/packages/plugin-yuku).

Big thanks to [@&#8203;arshad-yaseen](https://github.com/arshad-yaseen) for his excellent work.

### [`v3.9.5`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#395)

[Compare Source](prettier/prettier@3.9.4...3.9.5)

[diff](prettier/prettier@3.9.4...3.9.5)

##### Markdown: Cap ordered list mark at 999,999,999 ([#&#8203;19351](prettier/prettier#19351) by [@&#8203;tats-u](https://github.com/tats-u))

CommonMark parsers only support ordered list item numbers up to 999,999,999.

With this change, Prettier now caps the ordered list item number at 999,999,999 to ensure that the output is correctly parsed as an ordered list by CommonMark parsers. Numbers larger than 999,999,999 are not parsed as list item numbers and are left unchanged in the output:

<!-- prettier-ignore -->

```markdown
<!-- Input -->
999999998. text
999999998. text
999999998. text
999999998. text

1234567890123456789012) text

<!-- Prettier 3.9.4 -->
999999998. text
999999999. text
1000000000. text
1000000001. text

1234567890123456789012) text

<!-- Prettier 3.9.5 -->
999999998. text
999999999. text
999999999. text
999999999. text

1234567890123456789012) text
```

##### Markdown: Avoid corrupting empty link with title ([#&#8203;19487](prettier/prettier#19487) by [@&#8203;andersk](https://github.com/andersk))

Do not remove `<>` from an inline link or image with an empty URL and a title, as this removal would change its interpretation.

<!-- prettier-ignore -->

```md
<!-- Input -->
[link](<> "title")

<!-- Prettier 3.9.4 -->
[link]( "title")

<!-- Prettier 3.9.5 -->
[link](<> "title")
```

##### Less: Remove extra spaces after `[` in map lookups ([#&#8203;19503](prettier/prettier#19503) by [@&#8203;kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

```less
// Input
.foo {
  color: #theme[ primary];
  color: #theme[@&#8203;name];
  color: #theme[@&#8203;@&#8203;name];
}

// Prettier 3.9.4
.foo {
  color: #theme[ primary];
  color: #theme[ @&#8203;name];
  color: #theme[ @&#8203;@&#8203;name];
}

// Prettier 3.9.5
.foo {
  color: #theme[primary];
  color: #theme[@&#8203;name];
  color: #theme[@&#8203;@&#8203;name];
}
```

##### CSS: Prevent addition space in `type()` with `+` ([#&#8203;19516](prettier/prettier#19516) by [@&#8203;bigandy](https://github.com/bigandy))

This fixes the addition space before `+` in CSS `type()` declaration. For example `type(<number>+)` was being converted into `type(<number> +)` which is invalid CSS and does not work.

<!-- prettier-ignore -->

```css
/* Input */
div {
  border-radius: attr(br type(<length>+));
}

/* Prettier 3.9.4 */
div {
  border-radius: attr(br type(<length> +));
}

/* Prettier 3.9.5 */
div {
  border-radius: attr(br type(<length>+));
}
```

##### Less: Remove spaces between merge markers and colons ([#&#8203;19517](prettier/prettier#19517) by [@&#8203;kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

```less
// Input
a {
  box-shadow  +  : 0 0 1px #&#8203;000;
}

// Prettier 3.9.4
a {
  box-shadow+  : 0 0 1px #&#8203;000;
}

// Prettier 3.9.5
a {
  box-shadow+: 0 0 1px #&#8203;000;
}
```

##### Markdown: Preserve wiki links with aliases ([#&#8203;19527](prettier/prettier#19527) by [@&#8203;kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

```markdown
<!-- Input -->
[[Foo:Bar]]

<!-- Prettier 3.9.4 -->
[[Foo]]

<!-- Prettier 3.9.5 -->
[[Foo:Bar]]
```

##### TypeScript: Fix comments being dropped on shorthand `type` import/export specifiers ([#&#8203;19565](prettier/prettier#19565) by [@&#8203;kirkwaiblinger](https://github.com/kirkwaiblinger))

<!-- prettier-ignore -->

```tsx
// Input
export { type /* comment */ T } from "foo";
import { type /* comment */ T } from "foo";

// Prettier 3.9.4
Error: Comment "comment" was not printed. Please report this error!

// Prettier 3.9.5
export { type /* comment */ T } from "foo";
import { type /* comment */ T } from "foo";
```

##### Miscellaneous: Preserving comments' `placement` property ([#&#8203;19567](prettier/prettier#19567) by [@&#8203;Janther](https://github.com/Janther))

Prettier@3.9.0 deleted an undocumented property on comments, which was already used by plugins, `comment.placement` is now available again after comment attach.

##### Flow: Stop enforcing empty module declaration to break ([#&#8203;19568](prettier/prettier#19568) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```flow
// Input
declare module "foo" {}

// Prettier 3.9.4
declare module "foo" {
}

// Prettier 3.9.5
declare module "foo" {}
```

##### Angular: Support expression for exhaustive typechecking ([#&#8203;19571](prettier/prettier#19571) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```html
<!-- Input -->
@&#8203;switch (state.mode) {
  @&#8203;default never(state);
}

<!-- Prettier 3.9.4 -->
@&#8203;switch (state.mode) {
  @&#8203;default never;
}

<!-- Prettier 3.9.5 -->
@&#8203;switch (state.mode) {
  @&#8203;default never(state);
}
```

##### TypeScript: Ignore comments inside mapped type when checking type parameter comments ([#&#8203;19572](prettier/prettier#19572) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```tsx
// Input
foo<{
  // comment
  [key in keyof Foo]: number
}>();

// Prettier 3.9.4
foo<
  {
    // comment
    [key in keyof Foo]: number;
  }
>();

// Prettier 3.9.5
foo<{
  // comment
  [key in keyof Foo]: number;
}>();
```

##### Less: Fix adjacent block comments being corrupted ([#&#8203;19574](prettier/prettier#19574) by [@&#8203;kovsu](https://github.com/kovsu))

<!-- prettier-ignore -->

```less
// Input
/* a *//* b */
/* a */* {
  color: red;
}

// Prettier 3.9.4
/* a */
/* b */
/* a * {
  color: red;
}

// Prettier 3.9.5
/* a */ /* b */
/* a */
* {
  color: red;
}
```

##### JavaScript: Handle dangling comments in `SwitchStatement` ([#&#8203;19581](prettier/prettier#19581) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```jsx
// Input
switch (foo) {
 // comment
}

// Prettier 3.9.4
switch (
  foo
  // comment
) {
}

// Prettier 3.9.5
switch (foo) {
  // comment
}
```

##### TypeScript: Remove space in comment-only object type ([#&#8203;19583](prettier/prettier#19583) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```tsx
// Input
var foo = {
  /* comment */
};
type Foo = {
  /* comment */
};

// Prettier 3.9.4
var foo = {/* comment */};
type Foo = { /* comment */ };

// Prettier 3.9.5
var foo = {/* comment */};
type Foo = {/* comment */};
```

### [`v3.9.4`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#394)

[Compare Source](prettier/prettier@3.9.3...3.9.4)

[diff](prettier/prettier@3.9.3...3.9.4)

##### Angular: Format `@content(name)` -> `@content (name)` to align with other block syntax ([#&#8203;19499](prettier/prettier#19499) by [@&#8203;fisker](https://github.com/fisker))

<!-- prettier-ignore -->

```html
<!-- Input -->
<FancyButton [label]="title">
  @&#8203;content (icon) {
    <span>Icon!</span>
  }
  @&#8203;content (description) {
    <span>Description text</span>
  }
  <span>Other children</span>
</FancyButton>

<!-- Prettier 3.9.3 -->
<FancyButton [label]="title">
  @&#8203;content(icon) {
    <span>Icon!</span>
  }
  @&#8203;content(description) {
    <span>Description text</span>
  }
  <span>Other children</span>
</FancyButton>

<!-- Prettier 3.9.4 -->
<FancyButton [label]="title">
  @&#8203;content (icon) {
    <span>Icon!</span>
  }
  @&#8203;content (description) {
    <span>Description text</span>
  }
  <span>Other children</span>
</FancyButton>
```

### [`v3.9.3`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#393)

[Compare Source](prettier/prettier@3.9.2...3.9.3)

[diff](prettier/prettier@3.9.1...3.9.3)

##### Markdown: Fix unexpected removal of characters in liquid syntax ([#&#8203;19489](prettier/prettier#19489) by [@&#8203;seiyab](https://github.com/seiyab))

<!-- prettier-ignore -->

```md
// Input
<!-- Input -->
{{ page.title
}} text

<!-- Prettier 3.9.1 -->
{{ page.title
 text

<!-- Prettier 3.9.3 -->
{{ page.title
}} text
```

##### TypeScript: Allow decorators to be used with declare on class fields ([#&#8203;19492](prettier/prettier#19492) by [@&#8203;evoactivity](https://github.com/evoactivity))

Extensively used within the Ember ecosystem, decorators with `declare` on class fields will ignore the babel parser error and allow Prettier to format the code without breaking it.

<!-- prettier-ignore -->

```ts
// Input
export default class ProjectStatusComponent extends Component<ProjectStatusSig> {
  @&#8203;service declare server: ServerService;
}

// Prettier 3.9.1
// SyntaxError: Decorators can't be used with a declare field. (2:3)
//  1 | export default class ProjectStatusComponent extends Component<ProjectStatusSig> {
//> 2 |   @&#8203;service declare server: ServerService;
//    |   ^
//  3 | }

// Prettier 3.9.3
export default class ProjectStatusComponent extends Component<ProjectStatusSig> {
  @&#8203;service declare server: ServerService;
}
```

### [`v3.9.2`](prettier/prettier@3.9.1...3.9.2)

[Compare Source](prettier/prettier@3.9.1...3.9.2)

### [`v3.9.1`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#3910)

[Compare Source](prettier/prettier@3.9.0...3.9.1)

[diff](prettier/prettier@3.9.9...3.9.10)

##### Markdown: Update `micromark-extension-gfm-table` to fix the table parse issue on performance ([#&#8203;20266](prettier/prettier#20266) by [@&#8203;fisker](https://github.com/fisker))

See micromark/micromark-extension-gfm-table@4f43ead for details.

### [`v3.9.0`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#390)

[Compare Source](prettier/prettier@3.8.5...3.9.0)

[diff](prettier/prettier@3.8.5...3.9.0)

🔗 [Release Notes](https://prettier.io/blog/2026/06/27/3.9.0)

### [`v3.8.5`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#385)

[Compare Source](prettier/prettier@3.8.4...3.8.5)

[diff](prettier/prettier@3.8.4...3.8.5)

##### Flow: Support `readonly` as a variance annotation ([#&#8203;19022](prettier/prettier#19022) by [@&#8203;marcoww6](https://github.com/marcoww6))

Flow now accepts `readonly` as a property variance annotation, equivalent to `+` (covariant/read-only).

<!-- prettier-ignore -->

```jsx
// Input
type T = {
  readonly foo: string,
};

// Prettier 3.8.4
SyntaxError

// Prettier 3.8.5
type T = {
  readonly foo: string,
};
```

### [`v3.8.4`](https://github.com/prettier/prettier/blob/HEAD/CHANGELOG.md#384)

[Compare Source](prettier/prettier@3.8.3...3.8.4)

[diff](prettier/prettier@3.8.3...3.8.4)

##### Markdown: Fix blank lines between list items and nested sub-lists being removed in Markdown/MDX ([#&#8203;17746](prettier/prettier#17746) by [@&#8203;byplayer](https://github.com/byplayer))

Prettier was removing blank lines between list items and their nested sub-lists, converting loose lists into tight lists and changing their semantic meaning.

<!-- prettier-ignore -->

```markdown
<!-- Input -->
- a

  - b

- c

  - d

<!-- Prettier 3.8.3 -->
- a
  - b
- c
  - d

<!-- Prettier 3.8.4 -->
- a

  - b

- c

  - d
```

</details>

<details>
<summary>stylelint/stylelint (stylelint)</summary>

### [`v17.16.0`](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#17160---2026-10-01)

[Compare Source](stylelint/stylelint@17.15.0...17.16.0)

It fixes 2 bugs in the `layout-mappings` rules. This will likely be the last `17.x` release, as we prepare for `18.0.0`.

- Fixed: `property-layout-mappings` and `unit-layout-mappings` false negatives for uppercase property names and units ([#&#8203;9485](stylelint/stylelint#9485)) ([@&#8203;giaBaoJS](https://github.com/giaBaoJS)).
- Fixed: `value-keyword-layout-mappings` false positives for `caption-side` ([#&#8203;9483](stylelint/stylelint#9483)) ([@&#8203;giaBaoJS](https://github.com/giaBaoJS)).

### [`v17.15.0`](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#17150---2026-09-04)

[Compare Source](stylelint/stylelint@17.14.1...17.15.0)

It adds 1 new rule and 2 new rule options, and fixes 4 bugs.

- Added: `selector-no-unmatchable` rule ([#&#8203;9451](stylelint/stylelint#9451)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Added: `ignoreFunctions: []` to `color-named` and `color-no-hex` ([#&#8203;9463](stylelint/stylelint#9463)) ([@&#8203;jsmitty12](https://github.com/jsmitty12)).
- Fixed: `custom-property-no-missing-var-function` false positives for anchor positioning ([#&#8203;9466](stylelint/stylelint#9466)) ([@&#8203;giaBaoJS](https://github.com/giaBaoJS)).
- Fixed: `declaration-block-no-redundant-longhand-properties` autofix for `font` shorthand ([#&#8203;9402](stylelint/stylelint#9402)) ([@&#8203;sarathfrancis90](https://github.com/sarathfrancis90)).
- Fixed: `declaration-property-max-values` false positives for interpolated inline expressions ([#&#8203;9437](stylelint/stylelint#9437)) ([@&#8203;alexchen-sys](https://github.com/alexchen-sys)).
- Fixed: `selector-no-invalid` false negatives for pseudo-elements, combinators and nested `:has()` ([#&#8203;9452](stylelint/stylelint#9452)) ([@&#8203;jeddy3](https://github.com/jeddy3)).

### [`v17.14.1`](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#17141---2026-07-20)

[Compare Source](stylelint/stylelint@17.14.0...17.14.1)

It fixes 4 bugs.

- Fixed: `quiet` option suppresses `report*` warning reports ([#&#8203;9387](stylelint/stylelint#9387)) ([@&#8203;ychampion](https://github.com/ychampion)).
- Fixed: reported range of unknown rules ([#&#8203;9385](stylelint/stylelint#9385)) ([@&#8203;ybiquitous](https://github.com/ybiquitous)).
- Fixed: `declaration-block-no-redundant-longhand-properties` autofix producing invalid `background` shorthand when `background-size` is present ([#&#8203;9364](stylelint/stylelint#9364)) ([@&#8203;sarathfrancis90](https://github.com/sarathfrancis90)).
- Fixed: `rule-empty-line-before` false positives for shared-line comments with `except: ["after-single-line-comment"]` ([#&#8203;9394](stylelint/stylelint#9394)) ([@&#8203;sarathfrancis90](https://github.com/sarathfrancis90)).

### [`v17.14.0`](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#17140---2026-06-25)

[Compare Source](stylelint/stylelint@17.13.0...17.14.0)

It fixes 3 bugs, including a false negative one.

- Fixed: performance of getting module paths ([#&#8203;9354](stylelint/stylelint#9354)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: performance by dynamically importing `TIMING` only on use ([#&#8203;9356](stylelint/stylelint#9356)) ([@&#8203;jeddy3](https://github.com/jeddy3)).
- Fixed: `function-calc-no-unspaced-operator` false negatives for unspaced `+` and `-` operators following a `*` or `/` operator ([#&#8203;9357](stylelint/stylelint#9357)) ([@&#8203;sarathfrancis90](https://github.com/sarathfrancis90)).

### [`v17.13.0`](https://github.com/stylelint/stylelint/blob/HEAD/CHANGELOG.md#17130---2026-06-06)

[Compare Source](stylelint/stylelint@17.12.0...17.13.0)

It fixes 3 bugs, including a false negative one.

- Fixed: `declaration-block-no-duplicate-properties` false negatives for interleaved non-consecutive duplicates with `ignore: ["consecutive-duplicates(-*)"]` ([#&#8203;9324](stylelint/stylelint#9324)) ([@&#8203;sarathfrancis90](https://github.com/sarathfrancis90)).
- Fixed: `selector-max-type` false positives for nested selectors ([#&#8203;9319](stylelint/stylelint#9319)) ([@&#8203;romainmenke](https://github.com/romainmenke)).
- Fixed: `selector-type-no-unknown` false positives for `install` ([#&#8203;9308](stylelint/stylelint#9308)) ([@&#8203;Mouvedia](https://github.com/Mouvedia)).

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS42MS4wIiwidXBkYXRlZEluVmVyIjoiNDEuNjEuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: https://git.robbevp.be/robbevp/website-robbevanpetegem/pulls/511
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

accepted There is consensus among the team that this change meets the criteria for inclusion chore This change is not user-facing v9.x Issues/PRs related to the v9.x release line

Projects

Status: Complete

Development

Successfully merging this pull request may close these issues.

2 participants