Skip to content

fix(module-runner): handle non-ascii characters in base64 sourcemaps#21985

Merged
sapphi-red merged 10 commits intovitejs:mainfrom
WhiteKiwi:fix/utf8-decoding-issue
Mar 25, 2026
Merged

fix(module-runner): handle non-ascii characters in base64 sourcemaps#21985
sapphi-red merged 10 commits intovitejs:mainfrom
WhiteKiwi:fix/utf8-decoding-issue

Conversation

@WhiteKiwi
Copy link
Copy Markdown
Contributor

Fix UTF-8 decoding issue caused by using atob for base64 decoding.
Use Buffer.from(..., 'base64').toString('utf-8') when available to ensure correct decoding.

Closes #21984

@WhiteKiwi WhiteKiwi changed the title fix: Fix utf8 decoding issue fix: fix utf8 decoding issue Mar 23, 2026
@hi-ogawa
Copy link
Copy Markdown
Contributor

Is this somehow related to this? vitest-dev/vitest#9640

@WhiteKiwi
Copy link
Copy Markdown
Contributor Author

Is this somehow related to this? vitest-dev/vitest#9640

Yes, this seems to be the same issue.

@WhiteKiwi
Copy link
Copy Markdown
Contributor Author

I encountered this when updating snapshots after running tests. It seems to be the same issue.

@WhiteKiwi
Copy link
Copy Markdown
Contributor Author

Added browser support for base64 UTF-8 decoding
image

@WhiteKiwi
Copy link
Copy Markdown
Contributor Author

The bundle size limit was exceeded, so it was increased from 54 kB to 55 kB (53.87 kB → 54.10 kB).

@WhiteKiwi WhiteKiwi requested a review from themavik March 23, 2026 07:50
return new TextDecoder().decode(bytes)
}

return decodeURIComponent(escape(binary))
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yes, it’s deprecated. I used TextDecoder for modern environments, and escape as a fallback for older ones.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

It will be a bit slower in my experience. I think there’s more possible here.

Saw your change. Would hoist the textdecoder outside of the function to not reinstantiate all the time.

don’t know if this this function is used a lot in vite. If it’s the case I would probably try to optimize via conditional exports for each runtimes

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I've applied the feedback here
9e7202b

@WhiteKiwi WhiteKiwi requested a review from belgattitude March 23, 2026 10:37
@afurm
Copy link
Copy Markdown

afurm commented Mar 23, 2026

Good iterative approach. On the escape/decodeURIComponent fallback: Vite's minimum supported Node version is 18, and TextDecoder has been available in Node since v11 (global since v16) and in all modern browsers for years. The fallback to the deprecated escape is effectively dead code for any environment Vite realistically runs in.

Removing it entirely would simplify the function and avoid shipping a deprecated API call. If there's a specific runtime that matters where TextDecoder is absent, it's worth calling that out explicitly in a comment rather than silently falling back to escape.

@WhiteKiwi
Copy link
Copy Markdown
Contributor Author

Good iterative approach. On the escape/decodeURIComponent fallback: Vite's minimum supported Node version is 18, and TextDecoder has been available in Node since v11 (global since v16) and in all modern browsers for years. The fallback to the deprecated escape is effectively dead code for any environment Vite realistically runs in.

Removing it entirely would simplify the function and avoid shipping a deprecated API call. If there's a specific runtime that matters where TextDecoder is absent, it's worth calling that out explicitly in a comment rather than silently falling back to escape.

I've applied the feedback here
c35679d

Copy link
Copy Markdown
Member

@bluwy bluwy left a comment

Choose a reason for hiding this comment

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

Makes sense to me

@sapphi-red sapphi-red added feat: ssr p2-edge-case Bug, but has workaround or limited in scope (priority) labels Mar 25, 2026
@sapphi-red sapphi-red changed the title fix: fix utf8 decoding issue fix(module-runner): handle non-ascii characters in base64 sourcemaps Mar 25, 2026
@sapphi-red sapphi-red merged commit 77c95bf into vitejs:main Mar 25, 2026
18 of 19 checks passed
@hi-ogawa
Copy link
Copy Markdown
Contributor

Vitest CI got ReferenceError: TextDecoder is not defined https://github.com/vitest-dev/vitest/actions/runs/23629687860/job/68826224687?pr=9986#step:8:1908 Probably due to this change and Vitest side needs to do something.

@sapphi-red
Copy link
Copy Markdown
Member

Hmm, I've checked that TextDecoder is available in Node 11+ so I thought it won't cause problems.

@hi-ogawa
Copy link
Copy Markdown
Contributor

I think this is some node vm or vitest vm quirks. I couldn't reproduce with simple test case, so it's possible that Vitest CI quirk.

renovate bot added a commit to andrei-picus-tink/auto-renovate that referenced this pull request Mar 31, 2026
| datasource | package | from  | to    |
| ---------- | ------- | ----- | ----- |
| npm        | vite    | 7.3.1 | 8.0.3 |


## [v8.0.3](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small-803-2026-03-26-small)

##### Features

- update rolldown to 1.0.0-rc.12 ([#22024](vitejs/vite#22024)) ([84164ef](vitejs/vite@84164ef))

##### Bug Fixes

- **html:** cache unfiltered CSS list to prevent missing styles across entries ([#22017](vitejs/vite#22017)) ([5464190](vitejs/vite@5464190))
- **module-runner:** handle non-ascii characters in base64 sourcemaps ([#21985](vitejs/vite#21985)) ([77c95bf](vitejs/vite@77c95bf))
- **module-runner:** skip re-import if the runner is closed ([#22020](vitejs/vite#22020)) ([ee2c2cd](vitejs/vite@ee2c2cd))
- **optimizer:** scan is not resolving sub path import if used in a glob import ([#22018](vitejs/vite#22018)) ([ddfe20d](vitejs/vite@ddfe20d))
- **ssr:** ssrTransform incorrectly rewrites `meta` identifier inside `import.meta` when a binding named `meta` exists ([#22019](vitejs/vite#22019)) ([cff5f0c](vitejs/vite@cff5f0c))

##### Miscellaneous Chores

- **deps:** bump picomatch from 4.0.3 to 4.0.4 ([#22027](vitejs/vite#22027)) ([7e56003](vitejs/vite@7e56003))

##### Tests

- **html:** add tests for `getCssFilesForChunk` ([#22016](vitejs/vite#22016)) ([43fbbf9](vitejs/vite@43fbbf9))


## [v8.0.2](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small-802-2026-03-23-small)

##### Features

- update rolldown to 1.0.0-rc.11 ([#21998](vitejs/vite#21998)) ([ff91c31](vitejs/vite@ff91c31))

##### Bug Fixes

- **deps:** update all non-major dependencies ([#21988](vitejs/vite#21988)) ([9b7d150](vitejs/vite@9b7d150))

##### Miscellaneous Chores

- **deps:** update dependency [@vitejs/devtools](https://github.com/vitejs/devtools) to ^0.1.5 ([#21992](vitejs/vite#21992)) ([b2dd65b](vitejs/vite@b2dd65b))


## [v8.0.1](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small-801-2026-03-19-small)

##### Features

- update rolldown to 1.0.0-rc.10 ([#21932](vitejs/vite#21932)) ([b3c067d](vitejs/vite@b3c067d))

##### Bug Fixes

- **bundled-dev:** properly disable `inlineConst` optimization ([#21865](vitejs/vite#21865)) ([6d97142](vitejs/vite@6d97142))
- **css:** lightningcss minify failed when `build.target: 'es6'` ([#21933](vitejs/vite#21933)) ([5fcce46](vitejs/vite@5fcce46))
- **deps:** update all non-major dependencies ([#21878](vitejs/vite#21878)) ([6dbbd7f](vitejs/vite@6dbbd7f))
- **dev:** always use ESM Oxc runtime ([#21829](vitejs/vite#21829)) ([d323ed7](vitejs/vite@d323ed7))
- **dev:** handle concurrent restarts in `_createServer` ([#21810](vitejs/vite#21810)) ([40bc729](vitejs/vite@40bc729))
- handle `+` symbol in package subpath exports during dep optimization ([#21886](vitejs/vite#21886)) ([86db93d](vitejs/vite@86db93d))
- improve `no-cors` request block error ([#21902](vitejs/vite#21902)) ([5ba688b](vitejs/vite@5ba688b))
- use precise regexes for transform filter to avoid backtracking ([#21800](vitejs/vite#21800)) ([dbe41bd](vitejs/vite@dbe41bd))
- **worker:** `require(json)` result should not be wrapped ([#21847](vitejs/vite#21847)) ([0672fd2](vitejs/vite@0672fd2))
- **worker:** make worker output consistent with client and SSR ([#21871](vitejs/vite#21871)) ([69454d7](vitejs/vite@69454d7))

##### Miscellaneous Chores

- add changelog rearrange script ([#21835](vitejs/vite#21835)) ([efef073](vitejs/vite@efef073))
- **deps:** bump required `@vitejs/devtools` version to 0.1+ ([#21925](vitejs/vite#21925)) ([12932f5](vitejs/vite@12932f5))
- **deps:** update rolldown-related dependencies ([#21787](vitejs/vite#21787)) ([1af1d3a](vitejs/vite@1af1d3a))
- rearrange 8.0 changelog ([8e05b61](vitejs/vite@8e05b61))
- rearrange 8.0 changelog ([#21834](vitejs/vite#21834)) ([86edeee](vitejs/vite@86edeee))


## [v8.0.0](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#800-2026-03-12)

##### Features

- update rolldown to 1.0.0-rc.9 ([#21813](vitejs/vite#21813)) ([f05be0e](vitejs/vite@f05be0e))
- warn when `vite-tsconfig-paths` plugin is detected ([#21781](vitejs/vite#21781)) ([ada493e](vitejs/vite@ada493e))

##### Bug Fixes

- **deps:** update all non-major dependencies ([#21786](vitejs/vite#21786)) ([eaa4352](vitejs/vite@eaa4352))
MrNaif2018 pushed a commit to bitcart/bitcart-frontend that referenced this pull request Apr 6, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@effect/language-service](https://github.com/Effect-TS/language-service) | [`0.81.0` → `0.84.2`](https://renovatebot.com/diffs/npm/@effect%2flanguage-service/0.81.0/0.84.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@effect%2flanguage-service/0.84.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@effect%2flanguage-service/0.81.0/0.84.2?slim=true) |
| [@lingui/babel-plugin-lingui-macro](https://lingui.dev) ([source](https://github.com/lingui/js-lingui/tree/HEAD/packages/babel-plugin-lingui-macro)) | [`5.9.3` → `5.9.4`](https://renovatebot.com/diffs/npm/@lingui%2fbabel-plugin-lingui-macro/5.9.3/5.9.4) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@lingui%2fbabel-plugin-lingui-macro/5.9.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@lingui%2fbabel-plugin-lingui-macro/5.9.3/5.9.4?slim=true) |
| [@lingui/cli](https://lingui.dev) ([source](https://github.com/lingui/js-lingui/tree/HEAD/packages/cli)) | [`5.9.3` → `5.9.4`](https://renovatebot.com/diffs/npm/@lingui%2fcli/5.9.3/5.9.4) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@lingui%2fcli/5.9.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@lingui%2fcli/5.9.3/5.9.4?slim=true) |
| [@lingui/conf](https://lingui.dev) ([source](https://github.com/lingui/js-lingui/tree/HEAD/packages/conf)) | [`5.9.3` → `5.9.4`](https://renovatebot.com/diffs/npm/@lingui%2fconf/5.9.3/5.9.4) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@lingui%2fconf/5.9.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@lingui%2fconf/5.9.3/5.9.4?slim=true) |
| [@lingui/core](https://lingui.dev) ([source](https://github.com/lingui/js-lingui/tree/HEAD/packages/core)) | [`5.9.3` → `5.9.4`](https://renovatebot.com/diffs/npm/@lingui%2fcore/5.9.3/5.9.4) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@lingui%2fcore/5.9.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@lingui%2fcore/5.9.3/5.9.4?slim=true) |
| [@lingui/react](https://lingui.dev) ([source](https://github.com/lingui/js-lingui/tree/HEAD/packages/react)) | [`5.9.3` → `5.9.4`](https://renovatebot.com/diffs/npm/@lingui%2freact/5.9.3/5.9.4) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@lingui%2freact/5.9.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@lingui%2freact/5.9.3/5.9.4?slim=true) |
| [@lingui/vite-plugin](https://lingui.dev) ([source](https://github.com/lingui/js-lingui/tree/HEAD/packages/vite-plugin)) | [`5.9.3` → `5.9.4`](https://renovatebot.com/diffs/npm/@lingui%2fvite-plugin/5.9.3/5.9.4) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@lingui%2fvite-plugin/5.9.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@lingui%2fvite-plugin/5.9.3/5.9.4?slim=true) |
| [@tanstack/react-query](https://tanstack.com/query) ([source](https://github.com/TanStack/query/tree/HEAD/packages/react-query)) | [`5.95.0` → `5.95.2`](https://renovatebot.com/diffs/npm/@tanstack%2freact-query/5.95.0/5.95.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@tanstack%2freact-query/5.95.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@tanstack%2freact-query/5.95.0/5.95.2?slim=true) |
| [dependency-cruiser](https://github.com/sverweij/dependency-cruiser) | [`17.3.9` → `17.3.10`](https://renovatebot.com/diffs/npm/dependency-cruiser/17.3.9/17.3.10) | ![age](https://developer.mend.io/api/mc/badges/age/npm/dependency-cruiser/17.3.10?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/dependency-cruiser/17.3.9/17.3.10?slim=true) |
| [lucide-react](https://lucide.dev) ([source](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react)) | [`1.6.0` → `1.7.0`](https://renovatebot.com/diffs/npm/lucide-react/1.6.0/1.7.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/lucide-react/1.7.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lucide-react/1.6.0/1.7.0?slim=true) |
| [nx](https://nx.dev) ([source](https://github.com/nrwl/nx/tree/HEAD/packages/nx)) | [`22.6.1` → `22.6.3`](https://renovatebot.com/diffs/npm/nx/22.6.1/22.6.3) | ![age](https://developer.mend.io/api/mc/badges/age/npm/nx/22.6.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nx/22.6.1/22.6.3?slim=true) |
| [pnpm](https://pnpm.io) ([source](https://github.com/pnpm/pnpm/tree/HEAD/pnpm)) | [`10.32.1+sha512.a706938f0e89ac1456b6563eab4edf1d1faf3368d1191fc5c59790e96dc918e4456ab2e67d613de1043d2e8c81f87303e6b40d4ffeca9df15ef1ad567348f2be` → `10.33.0`](https://renovatebot.com/diffs/npm/pnpm/10.32.1/10.33.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/pnpm/10.33.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pnpm/10.32.1/10.33.0?slim=true) |
| [tsdown](http://tsdown.dev/) ([source](https://github.com/rolldown/tsdown)) | [`0.21.5` → `0.21.7`](https://renovatebot.com/diffs/npm/tsdown/0.21.5/0.21.7) | ![age](https://developer.mend.io/api/mc/badges/age/npm/tsdown/0.21.7?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/tsdown/0.21.5/0.21.7?slim=true) |
| [vite](https://vite.dev) ([source](https://github.com/vitejs/vite/tree/HEAD/packages/vite)) | [`8.0.1` → `8.0.3`](https://renovatebot.com/diffs/npm/vite/8.0.1/8.0.3) | ![age](https://developer.mend.io/api/mc/badges/age/npm/vite/8.0.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite/8.0.1/8.0.3?slim=true) |

---

### Release Notes

<details>
<summary>Effect-TS/language-service (@&#8203;effect/language-service)</summary>

### [`v0.84.2`](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.2)

[Compare Source](https://github.com/Effect-TS/language-service/compare/@effect/language-service@0.84.1...@effect/language-service@0.84.2)

##### Patch Changes

- [#&#8203;706](Effect-TS/language-service#706) [`3c0bea6`](Effect-TS/language-service@3c0bea6) Thanks [@&#8203;mattiamanzati](https://github.com/mattiamanzati)! - Fix `getTypeAtLocation` to ignore type-only heritage expressions like `interface X extends Effect.Effect<...>` so the language service no longer triggers bogus TS2689 diagnostics.

### [`v0.84.1`](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.1)

[Compare Source](https://github.com/Effect-TS/language-service/compare/@effect/language-service@0.84.0...@effect/language-service@0.84.1)

##### Patch Changes

- [#&#8203;703](Effect-TS/language-service#703) [`dea43b8`](Effect-TS/language-service@dea43b8) Thanks [@&#8203;mattiamanzati](https://github.com/mattiamanzati)! - Fix `effectFnImplicitAny` so it does not report false positives when an `Effect.fn` or `Effect.fnUntraced` callback gets its contextual function type from a union member.

  For example, nested `HttpRouter.add(...)` handlers now correctly recognize the inferred `request` type and produce no diagnostics when the parameter is not actually implicit `any`.

- [#&#8203;702](Effect-TS/language-service#702) [`0af9b98`](Effect-TS/language-service@0af9b98) Thanks [@&#8203;mattiamanzati](https://github.com/mattiamanzati)! - Add Effect v4 support for the `runEffectInsideEffect` diagnostic so it suggests and fixes `Effect.run*With` usage based on `Effect.services`.

  Update the generated metadata, schema, README entry, and v4 harness examples/snapshots to document and verify the new behavior.

### [`v0.84.0`](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.84.0)

[Compare Source](https://github.com/Effect-TS/language-service/compare/@effect/language-service@0.83.1...@effect/language-service@0.84.0)

##### Minor Changes

- [#&#8203;696](Effect-TS/language-service#696) [`78e78d5`](Effect-TS/language-service@78e78d5) Thanks [@&#8203;cevr](https://github.com/cevr)! - Add paired globalDate/globalDateInEffect, globalConsole/globalConsoleInEffect, globalFetch/globalFetchInEffect, globalRandom/globalRandomInEffect, and globalTimers/globalTimersInEffect diagnostics

  Ten new opt-in diagnostics that flag global/DOM APIs both outside and inside Effect generators:

  - `globalFetch` / `globalFetchInEffect` — `fetch()` → HttpClient
  - `globalDate` / `globalDateInEffect` — `Date.now()`, `new Date()` → Clock/DateTime
  - `globalConsole` / `globalConsoleInEffect` — `console.log/warn/error/info/debug/trace` → Effect.log/Logger
  - `globalRandom` / `globalRandomInEffect` — `Math.random()` → Random service
  - `globalTimers` / `globalTimersInEffect` — `setTimeout/setInterval` → Effect.sleep/Schedule

  All default to `off`. Enable both variants for full coverage inside and outside Effect generators. Shadow-safe (e.g. `const console = yield* Console` won't false-positive).

### [`v0.83.1`](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.83.1)

[Compare Source](https://github.com/Effect-TS/language-service/compare/@effect/language-service@0.83.0...@effect/language-service@0.83.1)

##### Patch Changes

- [#&#8203;698](Effect-TS/language-service#698) [`b11c184`](Effect-TS/language-service@b11c184) Thanks [@&#8203;mattiamanzati](https://github.com/mattiamanzati)! - Update the Effect v4 workspace dependencies to `4.0.0-beta.38`.

### [`v0.83.0`](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.83.0)

[Compare Source](https://github.com/Effect-TS/language-service/compare/@effect/language-service@0.82.0...@effect/language-service@0.83.0)

##### Minor Changes

- [#&#8203;695](Effect-TS/language-service#695) [`f057090`](Effect-TS/language-service@f057090) Thanks [@&#8203;mattiamanzati](https://github.com/mattiamanzati)! - Add a `config` CLI command for updating diagnostic rule severities without rerunning the full setup flow.

- [#&#8203;693](Effect-TS/language-service#693) [`b5054e3`](Effect-TS/language-service@b5054e3) Thanks [@&#8203;mattiamanzati](https://github.com/mattiamanzati)! - Add setup CLI preset management for diagnostic severities, including preset metadata, preset-aware customization, and a dedicated `config` command for adjusting rule severities without rerunning full setup.

### [`v0.82.0`](https://github.com/Effect-TS/language-service/releases/tag/%40effect/language-service%400.82.0)

[Compare Source](https://github.com/Effect-TS/language-service/compare/@effect/language-service@0.81.0...@effect/language-service@0.82.0)

##### Minor Changes

- [#&#8203;689](Effect-TS/language-service#689) [`aed2074`](Effect-TS/language-service@aed2074) Thanks [@&#8203;f15u](https://github.com/f15u)! - Adds ability to reference `$schema` from local installation

- [#&#8203;692](Effect-TS/language-service#692) [`57fcf35`](Effect-TS/language-service@57fcf35) Thanks [@&#8203;mattiamanzati](https://github.com/mattiamanzati)! - Add the `effectFnImplicitAny` diagnostic to mirror `noImplicitAny` for unannotated `Effect.fn` and `Effect.fnUntraced` callback parameters, and support `// @&#8203;strict` in diagnostic example files so test fixtures can enable strict compiler options.

##### Patch Changes

- [#&#8203;687](Effect-TS/language-service#687) [`72827c0`](Effect-TS/language-service@72827c0) Thanks [@&#8203;mattiamanzati](https://github.com/mattiamanzati)! - Allow the leaking requirements diagnostic to suppress specific leaked services with `@effect-expect-leaking` comments on the enclosing declaration.

- [#&#8203;690](Effect-TS/language-service#690) [`77906a9`](Effect-TS/language-service@77906a9) Thanks [@&#8203;mattiamanzati](https://github.com/mattiamanzati)! - Fix the class self mismatch diagnostic so it also reports invalid `ServiceMap.Service` self type parameters.

- [#&#8203;691](Effect-TS/language-service#691) [`0e16db0`](Effect-TS/language-service@0e16db0) Thanks [@&#8203;mattiamanzati](https://github.com/mattiamanzati)! - Include start and end in json diagnostics command

</details>

<details>
<summary>lingui/js-lingui (@&#8203;lingui/babel-plugin-lingui-macro)</summary>

### [`v5.9.4`](https://github.com/lingui/js-lingui/blob/HEAD/packages/babel-plugin-lingui-macro/CHANGELOG.md#594-2026-03-27)

[Compare Source](lingui/js-lingui@v5.9.3...v5.9.4)

**Note:** Version bump only for package [@&#8203;lingui/babel-plugin-lingui-macro](https://github.com/lingui/babel-plugin-lingui-macro)

</details>

<details>
<summary>lingui/js-lingui (@&#8203;lingui/cli)</summary>

### [`v5.9.4`](https://github.com/lingui/js-lingui/blob/HEAD/packages/cli/CHANGELOG.md#594-2026-03-27)

[Compare Source](lingui/js-lingui@v5.9.3...v5.9.4)

##### Bug Fixes

- really keep catalog extra from previous catalog ([#&#8203;2479](lingui/js-lingui#2479)) ([c939113](lingui/js-lingui@c939113))

</details>

<details>
<summary>lingui/js-lingui (@&#8203;lingui/conf)</summary>

### [`v5.9.4`](https://github.com/lingui/js-lingui/blob/HEAD/packages/conf/CHANGELOG.md#594-2026-03-27)

[Compare Source](lingui/js-lingui@v5.9.3...v5.9.4)

**Note:** Version bump only for package [@&#8203;lingui/conf](https://github.com/lingui/conf)

</details>

<details>
<summary>lingui/js-lingui (@&#8203;lingui/core)</summary>

### [`v5.9.4`](https://github.com/lingui/js-lingui/blob/HEAD/packages/core/CHANGELOG.md#594-2026-03-27)

[Compare Source](lingui/js-lingui@v5.9.3...v5.9.4)

**Note:** Version bump only for package [@&#8203;lingui/core](https://github.com/lingui/core)

</details>

<details>
<summary>lingui/js-lingui (@&#8203;lingui/react)</summary>

### [`v5.9.4`](https://github.com/lingui/js-lingui/blob/HEAD/packages/react/CHANGELOG.md#594-2026-03-27)

[Compare Source](lingui/js-lingui@v5.9.3...v5.9.4)

**Note:** Version bump only for package [@&#8203;lingui/react](https://github.com/lingui/react)

</details>

<details>
<summary>lingui/js-lingui (@&#8203;lingui/vite-plugin)</summary>

### [`v5.9.4`](https://github.com/lingui/js-lingui/blob/HEAD/packages/vite-plugin/CHANGELOG.md#594-2026-03-27)

[Compare Source](lingui/js-lingui@v5.9.3...v5.9.4)

**Note:** Version bump only for package [@&#8203;lingui/vite-plugin](https://github.com/lingui/vite-plugin)

</details>

<details>
<summary>TanStack/query (@&#8203;tanstack/react-query)</summary>

### [`v5.95.2`](https://github.com/TanStack/query/blob/HEAD/packages/react-query/CHANGELOG.md#5952)

[Compare Source](https://github.com/TanStack/query/compare/@tanstack/react-query@5.95.1...@tanstack/react-query@5.95.2)

##### Patch Changes

- Updated dependencies \[[`cd5a35b`](TanStack/query@cd5a35b)]:
  - [@&#8203;tanstack/query-core](https://github.com/tanstack/query-core)@&#8203;5.95.2

### [`v5.95.1`](https://github.com/TanStack/query/blob/HEAD/packages/react-query/CHANGELOG.md#5951)

[Compare Source](https://github.com/TanStack/query/compare/@tanstack/react-query@5.95.0...@tanstack/react-query@5.95.1)

##### Patch Changes

- Updated dependencies \[[`1f1775c`](TanStack/query@1f1775c)]:
  - [@&#8203;tanstack/query-core](https://github.com/tanstack/query-core)@&#8203;5.95.1

</details>

<details>
<summary>sverweij/dependency-cruiser (dependency-cruiser)</summary>

### [`v17.3.10`](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.3.10)

[Compare Source](sverweij/dependency-cruiser@v17.3.9...v17.3.10)

#### 👷 maintenance

- [`e401673`](sverweij/dependency-cruiser@e401673d) chore(npm): updates external dependencies
  Includes a bump of picomatch that has a vulnerability that is irrelevant for dependency-cruiser's context, but that nonetheless might trigger security scanners.

</details>

<details>
<summary>lucide-icons/lucide (lucide-react)</summary>

### [`v1.7.0`](https://github.com/lucide-icons/lucide/releases/tag/1.7.0): Version 1.7.0

[Compare Source](lucide-icons/lucide@1.6.0...1.7.0)

#### What's Changed

- fix(lucide-react): Fix dynamic imports by [@&#8203;ericfennis](https://github.com/ericfennis) in [#&#8203;4210](lucide-icons/lucide#4210)
- feat(icons): added `map-pin-search` icon by [@&#8203;TonySullivan](https://github.com/TonySullivan) in [#&#8203;4125](lucide-icons/lucide#4125)

#### New Contributors

- [@&#8203;TonySullivan](https://github.com/TonySullivan) made their first contribution in [#&#8203;4125](lucide-icons/lucide#4125)

**Full Changelog**: <lucide-icons/lucide@1.6.0...1.7.0>

</details>

<details>
<summary>nrwl/nx (nx)</summary>

### [`v22.6.3`](https://github.com/nrwl/nx/releases/tag/22.6.3)

[Compare Source](nrwl/nx@22.6.2...22.6.3)

#### 22.6.3 (2026-03-27)

##### 🚀 Features

- **misc:** a/b test cloud prompt copy in create-nx-workspace ([#&#8203;35039](nrwl/nx#35039))

##### 🩹 Fixes

- **js:** add {projectRoot} prefix to d.ts fileset in typescript plugin ([#&#8203;35037](nrwl/nx#35037))
- **misc:** use namespace import for chalk v4 compatibility ([7c9f873bd1](nrwl/nx@7c9f873bd1))
- **misc:** handle non-interactive mode and add template shorthand names for CNW ([#&#8203;35045](nrwl/nx#35045))

##### ❤️ Thank You

- FrozenPandaz [@&#8203;FrozenPandaz](https://github.com/FrozenPandaz)
- Jack Hsu [@&#8203;jaysoo](https://github.com/jaysoo)
- Jason Jean [@&#8203;FrozenPandaz](https://github.com/FrozenPandaz)

### [`v22.6.2`](https://github.com/nrwl/nx/releases/tag/22.6.2)

[Compare Source](nrwl/nx@22.6.1...22.6.2)

#### 22.6.2 (2026-03-26)

##### 🚀 Features

- **core:** auto-open browser for Cloud setup URL during create-nx-workspace ([#&#8203;35014](nrwl/nx#35014))
- **repo:** add nx-labs repo target and use glob pattern for update-all-repos ([#&#8203;34999](nrwl/nx#34999))

##### 🩹 Fixes

- **angular:** update duplicate migration keys ([#&#8203;34961](nrwl/nx#34961))
- **angular-rspack:** ensure rebuild chunks emitted summary accurate ([#&#8203;34979](nrwl/nx#34979), [#&#8203;34936](nrwl/nx#34936))
- **bundling:** disable swc input source map resolution ([#&#8203;35010](nrwl/nx#35010), [#&#8203;32671](nrwl/nx#32671))
- **core:** split-target should handle projects with colons in name better ([#&#8203;34725](nrwl/nx#34725))
- **core:** prevent TUI crash when task output arrives after completion ([#&#8203;34785](nrwl/nx#34785), [#&#8203;34677](nrwl/nx#34677))
- **core:** respect --parallel limit for discrete task concurrency ([#&#8203;34721](nrwl/nx#34721), [#&#8203;34117](nrwl/nx#34117), [#&#8203;31494](nrwl/nx#31494))
- **core:** use scroll-offset-based scrollbar positioning in TUI ([#&#8203;34689](nrwl/nx#34689))
- **core:** skip import-equals namespace aliases in native scanner ([#&#8203;34947](nrwl/nx#34947), [#&#8203;34644](nrwl/nx#34644))
- **core:** include command name on all telemetry events ([#&#8203;34949](nrwl/nx#34949))
- **core:** skip workspace context setup when global bin hands off to local ([#&#8203;34953](nrwl/nx#34953), [#&#8203;34914](nrwl/nx#34914))
- **core:** use upsert to prevent FK constraint violations in task DB ([#&#8203;34977](nrwl/nx#34977))
- **core:** runtime inputs shouldn't be cached at task\_hasher layer and filesets should be in the hash\_plans layer ([#&#8203;34971](nrwl/nx#34971), [#&#8203;30170](nrwl/nx#30170))
- **core:** show better log message when isolated plugin shuts down after hook completion ([#&#8203;34922](nrwl/nx#34922))
- **core:** handle owners and conformance project refs on move/remove ([#&#8203;34815](nrwl/nx#34815))
- **core:** resolve published nx migrate package resolution ([#&#8203;35013](nrwl/nx#35013), [#&#8203;34111](nrwl/nx#34111))
- **core:** prevent batch executor error on prematurely completed tasks ([#&#8203;35015](nrwl/nx#35015))
- **core:** add timeouts to GitHub push flow to prevent CLI hangs ([#&#8203;35011](nrwl/nx#35011), [#&#8203;34482](nrwl/nx#34482))
- **devkit:** prevent double install in generators for TS solution workspaces ([#&#8203;34891](nrwl/nx#34891))
- **devkit:** add startTime and endTime to TaskResult interface ([#&#8203;34996](nrwl/nx#34996))
- **gradle:** ignore test enums when atomizing ([#&#8203;34974](nrwl/nx#34974))
- **js:** pass configName to typecheck command in TS plugin ([#&#8203;34989](nrwl/nx#34989), [#&#8203;34274](nrwl/nx#34274))
- **js:** add input on .d.ts files within dependency projects ([#&#8203;34968](nrwl/nx#34968))
- **linter:** prepend framework configs before baseConfig in flat config generation ([#&#8203;34898](nrwl/nx#34898), [#&#8203;28381](nrwl/nx#28381), [#&#8203;32923](nrwl/nx#32923))
- **misc:** make webinar banner theme-aware with light mode support ([#&#8203;35029](nrwl/nx#35029))
- **module-federation:** enable ESM output for Angular rspack MF plugin ([#&#8203;34839](nrwl/nx#34839), [#&#8203;34584](nrwl/nx#34584), [#&#8203;33992](nrwl/nx#33992))
- **nx-cloud:** remove invalid images ([#&#8203;34997](nrwl/nx#34997), [#&#8203;34970](nrwl/nx#34970))
- **nx-dev:** build nx-dev in-place to fix ai package resolution ([#&#8203;34730](nrwl/nx#34730), [#&#8203;34669](nrwl/nx#34669))
- **nx-dev:** improve docs search ranking and metrics ([#&#8203;34992](nrwl/nx#34992))
- **release:** fall back to gh user search for author usernames ([#&#8203;34904](nrwl/nx#34904))
- **repo:** skip flaky Cypress HMR e2e tests ([#&#8203;34969](nrwl/nx#34969))
- **repo:** resolve FreeBSD build disk space issue ([#&#8203;35030](nrwl/nx#35030))
- **vite:** add support for Vite 8 ([#&#8203;34850](nrwl/nx#34850), [#&#8203;34849](nrwl/nx#34849))
- **vitest:** resolve addPlugin default in init generator ([#&#8203;34990](nrwl/nx#34990))

##### ❤️ Thank You

- AgentEnder [@&#8203;AgentEnder](https://github.com/AgentEnder)
- AI-JamesHenry [@&#8203;AI-JamesHenry](https://github.com/AI-JamesHenry)
- Amp
- barbados-clemens [@&#8203;barbados-clemens](https://github.com/barbados-clemens)
- Caleb Ukle
- Charlie Croom
- Claude Opus 4.6
- Colum Ferry [@&#8203;Coly010](https://github.com/Coly010)
- Craigory Coppola [@&#8203;AgentEnder](https://github.com/AgentEnder)
- FrozenPandaz [@&#8203;FrozenPandaz](https://github.com/FrozenPandaz)
- Jack Baker
- Jack Hsu [@&#8203;jaysoo](https://github.com/jaysoo)
- Jason Jean [@&#8203;FrozenPandaz](https://github.com/FrozenPandaz)
- jaysoo [@&#8203;jaysoo](https://github.com/jaysoo)
- Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://github.com/leosvelperez)
- Louie Weng [@&#8203;lourw](https://github.com/lourw)
- Robert Sidzinka
- Steven Nance

</details>

<details>
<summary>pnpm/pnpm (pnpm)</summary>

### [`v10.33.0`](https://github.com/pnpm/pnpm/releases/tag/v10.33.0): pnpm 10.33

[Compare Source](pnpm/pnpm@v10.32.1...v10.33.0)

#### Minor Changes

- Added a new `dedupePeers` setting that reduces peer dependency duplication. When enabled, peer dependency suffixes use version-only identifiers (`name@version`) instead of full dep paths, eliminating nested suffixes like `(foo@1.0.0(bar@2.0.0))`. This dramatically reduces the number of package instances in projects with many recursive peer dependencies [#&#8203;11070](pnpm/pnpm#11070).

#### Patch Changes

- Fail on incompatible lockfiles in CI when frozen lockfile mode is enabled, while preserving non-frozen CI fallback behavior.

- When package metadata is malformed or can't be fetched, the error thrown will now show the originating error.

- Fixed intermittent failures when multiple `pnpm dlx` calls run concurrently for the same package. When the global virtual store is enabled, the importer now verifies file content before skipping a rename, avoiding destructive swap-renames that break concurrent processes. Also tolerates EPERM during bin creation on Windows and properly propagates `enableGlobalVirtualStore` through the install pipeline.

- Fixed handling of non-string version selectors in `hoistPeers`, preventing invalid peer dependency specifiers.

- Improve the non-interactive modules purge error hint to include the `confirmModulesPurge=false` workaround.

  When pnpm needs to recreate `node_modules` but no TTY is available, the error now suggests either setting `CI=true` or disabling the purge confirmation prompt via `confirmModulesPurge=false`.

  Adds a regression test for the non-TTY flow.

- Fixed false "Command not found" errors on Windows when a command exists in PATH but exits with a non-zero code. Also fixed path resolution for `--filter` contexts where the command runs in a different package directory.

- When a pnpm-lock.yaml contains two documents, ignore the first one. pnpm v11 will write two lockfile documents into pnpm-lock.yaml in order to store pnpm version integrities and config dependency resolutions.

- Fixed a bug preventing the `clearCache` function returned by `createNpmResolver` from properly clearing metadata cache.

<!-- sponsors -->

#### Platinum Sponsors

<table>
  <tbody>
    <tr>
      <td align="center" valign="middle">
        <a href="https://bit.cloud/?utm_source=pnpm&utm_medium=release_notes" target="_blank"><img src="https://pnpm.io/img/users/bit.svg" width="80" alt="Bit"></a>
      </td>
    </tr>
  </tbody>
</table>

#### Gold Sponsors

<table>
  <tbody>
    <tr>
      <td align="center" valign="middle">
        <a href="https://sanity.io/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/sanity.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/sanity_light.svg" />
            <img src="https://pnpm.io/img/users/sanity.svg" width="120" alt="Sanity" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://discord.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/discord.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/discord_light.svg" />
            <img src="https://pnpm.io/img/users/discord.svg" width="220" alt="Discord" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://vite.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank"><img src="https://pnpm.io/img/users/vitejs.svg" width="42" alt="Vite"></a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://serpapi.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/serpapi_dark.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/serpapi_light.svg" />
            <img src="https://pnpm.io/img/users/serpapi_dark.svg" width="160" alt="SerpApi" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://coderabbit.ai/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/coderabbit.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/coderabbit_light.svg" />
            <img src="https://pnpm.io/img/users/coderabbit.svg" width="220" alt="CodeRabbit" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://stackblitz.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/stackblitz.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/stackblitz_light.svg" />
            <img src="https://pnpm.io/img/users/stackblitz.svg" width="190" alt="Stackblitz" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://workleap.com/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/workleap.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/workleap_light.svg" />
            <img src="https://pnpm.io/img/users/workleap.svg" width="190" alt="Workleap" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://nx.dev/?utm_source=pnpm&utm_medium=release_notes" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/nx.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/nx_light.svg" />
            <img src="https://pnpm.io/img/users/nx.svg" width="50" alt="Nx" />
          </picture>
        </a>
      </td>
    </tr>
  </tbody>
</table>

<!-- sponsors end -->

</details>

<details>
<summary>rolldown/tsdown (tsdown)</summary>

### [`v0.21.7`](https://github.com/rolldown/tsdown/releases/tag/v0.21.7)

[Compare Source](rolldown/tsdown@v0.21.6...v0.21.7)

#####    🚀 Features

- Add `module` option for attw and publint to allow passing imported modules directly  -  by [@&#8203;sxzz](https://github.com/sxzz) [<samp>(31e90)</samp>](rolldown/tsdown@31e90c1)

#####    🐞 Bug Fixes

- **deps**: Add skipNodeModulesBundle dep subpath e2e tests and fix docs  -  by [@&#8203;sxzz](https://github.com/sxzz) [<samp>(deff7)</samp>](rolldown/tsdown@deff72c)

#####     [View changes on GitHub](rolldown/tsdown@v0.21.6...v0.21.7)

### [`v0.21.6`](https://github.com/rolldown/tsdown/releases/tag/v0.21.6)

[Compare Source](rolldown/tsdown@v0.21.5...v0.21.6)

#####    🚀 Features

- Upgrade rolldown to v1.0.0-rc.12  -  by [@&#8203;sxzz](https://github.com/sxzz) [<samp>(51292)</samp>](rolldown/tsdown@512926d)
- **config**:
  - Pass root config to workspace config functions  -  by [@&#8203;sxzz](https://github.com/sxzz) [<samp>(76169)</samp>](rolldown/tsdown@7616960)
  - Use mergeConfig for workspace config merging and support variadic overrides  -  by [@&#8203;sxzz](https://github.com/sxzz) [<samp>(148aa)</samp>](rolldown/tsdown@148aaaa)
- **dts**:
  - Add `cjsReexport` option to eliminate dual module type hazard  -  by [@&#8203;mandarini](https://github.com/mandarini) and [@&#8203;sxzz](https://github.com/sxzz) in [#&#8203;856](rolldown/tsdown#856) [<samp>(875c1)</samp>](rolldown/tsdown@875c1b3)
- **exports**:
  - Add `bin` option to auto-generate package.json bin field  -  by [@&#8203;sxzz](https://github.com/sxzz) in [#&#8203;869](rolldown/tsdown#869) [<samp>(7ebd6)</samp>](rolldown/tsdown@7ebd62d)

#####    🐞 Bug Fixes

- **css**:
  - Compile preprocessor langs in virtual CSS modules  -  by [@&#8203;sxzz](https://github.com/sxzz) in [#&#8203;865](rolldown/tsdown#865) [<samp>(7b2e0)</samp>](rolldown/tsdown@7b2e0f9)
  - Strip `.module` from CSS output filenames  -  by [@&#8203;sxzz](https://github.com/sxzz) in [#&#8203;866](rolldown/tsdown#866) [<samp>(03ade)</samp>](rolldown/tsdown@03ade19)
  - Default splitting to true in unbundle mode for CSS inject  -  by [@&#8203;sxzz](https://github.com/sxzz) in [#&#8203;867](rolldown/tsdown#867) [<samp>(a4da6)</samp>](rolldown/tsdown@a4da6af)
  - Split CSS plugin into pre/post phases for scoped CSS support  -  by [@&#8203;sxzz](https://github.com/sxzz) in [#&#8203;870](rolldown/tsdown#870) [<samp>(ff0c4)</samp>](rolldown/tsdown@ff0c45a)
- **entry**:
  - Correctly output relative paths in logger output  -  by [@&#8203;sxzz](https://github.com/sxzz) [<samp>(00050)</samp>](rolldown/tsdown@0005096)

#####     [View changes on GitHub](rolldown/tsdown@v0.21.5...v0.21.6)

</details>

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

### [`v8.0.3`](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small-803-2026-03-26-small)

[Compare Source](vitejs/vite@v8.0.2...v8.0.3)

##### Features

- update rolldown to 1.0.0-rc.12 ([#&#8203;22024](vitejs/vite#22024)) ([84164ef](vitejs/vite@84164ef))

##### Bug Fixes

- **html:** cache unfiltered CSS list to prevent missing styles across entries ([#&#8203;22017](vitejs/vite#22017)) ([5464190](vitejs/vite@5464190))
- **module-runner:** handle non-ascii characters in base64 sourcemaps ([#&#8203;21985](vitejs/vite#21985)) ([77c95bf](vitejs/vite@77c95bf))
- **module-runner:** skip re-import if the runner is closed ([#&#8203;22020](vitejs/vite#22020)) ([ee2c2cd](vitejs/vite@ee2c2cd))
- **optimizer:** scan is not resolving sub path import if used in a glob import ([#&#8203;22018](vitejs/vite#22018)) ([ddfe20d](vitejs/vite@ddfe20d))
- **ssr:** ssrTransform incorrectly rewrites `meta` identifier inside `import.meta` when a binding named `meta` exists ([#&#8203;22019](vitejs/vite#22019)) ([cff5f0c](vitejs/vite@cff5f0c))

##### Miscellaneous Chores

- **deps:** bump picomatch from 4.0.3 to 4.0.4 ([#&#8203;22027](vitejs/vite#22027)) ([7e56003](vitejs/vite@7e56003))

##### Tests

- **html:** add tests for `getCssFilesForChunk` ([#&#8203;22016](vitejs/vite#22016)) ([43fbbf9](vitejs/vite@43fbbf9))

### [`v8.0.2`](https://github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small-802-2026-03-23-small)

[Compare Source](vitejs/vite@v8.0.1...v8.0.2)

##### Features

- update rolldown to 1.0.0-rc.11 ([#&#8203;21998](vitejs/vite#21998)) ([ff91c31](vitejs/vite@ff91c31))

##### Bug Fixes

- **deps:** update all non-major dependencies ([#&#8203;21988](vitejs/vite#21988)) ([9b7d150](vitejs/vite@9b7d150))

##### Miscellaneous Chores

- **deps:** update dependency [@&#8203;vitejs/devtools](https://github.com/vitejs/devtools) to ^0.1.5 ([#&#8203;21992](vitejs/vite#21992)) ([b2dd65b](vitejs/vite@b2dd65b))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) in timezone UTC, 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.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiIwLjAuMC1zZW1hbnRpYy1yZWxlYXNlIiwidXBkYXRlZEluVmVyIjoiMC4wLjAtc2VtYW50aWMtcmVsZWFzZSIsInRhcmdldEJyYW5jaCI6Im1hc3RlciIsImxhYmVscyI6W119-->

Reviewed-on: https://git.bitcart.ai/bitcart/bitcart-frontend/pulls/181
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feat: ssr p2-edge-case Bug, but has workaround or limited in scope (priority)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect UTF-8 decoding when using atob in Node.js

6 participants