Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(plugin-vite): better logic #3583

Merged
merged 14 commits into from
Sep 20, 2024

Conversation

caoxiemeihao
Copy link
Member

@caoxiemeihao caoxiemeihao commented Apr 30, 2024

  • I have read the contribution documentation for this project.
  • I agree to follow the code of conduct that this project follows, as appropriate.
  • The changes are appropriately documented (if applicable).
  • The changes have sufficient test coverage (if applicable).
  • The testsuite passes successfully on my local machine (if applicable).

Up until v7.2.0, @electron-forge/plugin-vite was designed to minimize user boilerplate, with all required Vite configurations already integrated into the plugin itself. While this approach provided a good starting experience for users, it also had a few downsides:

  • Baking the configurations into the plugin made it difficult to implement additional features without breaking Forge's existing design principles.
  • Vite's rapid release cadence made it harder to keep the Forge plugin up to date with the latest version.

In #3468 (released in Forge v7.3.0), I shifted a lot of the configuration logic from @electron-forge/plugin-vite to @electron-forge/template-vite, which enabled useful features such as hot restart, hot reload, and improved ESM support (which is important for frameworks such as Svelte) to be implemented with slight tweaks to the template code.

However, the changes introduced in v7.3.0 broke builds for existing users of @electron-forge/plugin-vite (see #3506). Based on community feedback brought by users of both v7.2.0 and v7.3.0, I am trying to release a new version that will have the advantages of both iterations of the plugin and not introduce breaking changes between updates.

What changes did this PR make? First of all, let’s make it clear that the underlying Vite configs of v7.2.0 and v7.3.0 are almost identical, except that they are located in different places. So, if we keep the v7.3.0 config as-is and move it to @electron-forge/plugin-vite, we can solve the problem we are facing now. This is exactly what this PR does.

┏————————————————————————————————————————————————————┓
│      base.config.mjs, main, preload, renderer      │
┗————————————————————————————————————————————————————┛
                          ↓
                      🚚 🚚 🚚 🚚
                          ↓
┏————————————————————————————————————————————————————┓
│ @electron-forge/plugin-vite/config/base.config.mjs │
┗————————————————————————————————————————————————————┛

In addition, since v7.2.0 does not have Hot Restart and Hot Reload features,
this PR provides a { target?: 'main' | The 'preload' } option is used to enable them, but it is not required.

{
  name: '@electron-forge/plugin-vite',
  config: {
    build: [
      {
        entry: 'src/main.js',
        config: 'vite.main.config.js',
+       target: 'main',
      },
      {
        entry: 'src/preload.js',
        config: 'vite.preload.config.js',
+       target: 'preload',
      },
    ],
  },
}

The main purpose of this PR is to solve the two issues currently encountered without breaking changes.

  1. It will be compatible with versions <7.2.0 and >=7.3.0 of Forge. (Undocumented breaking change for Vite plugin in v7.3.0 #3506)
  2. Remove plugin-vite copy dependencies to node_modules of built App. (fix(plugin-vite): Don't copy node_modules on build #3579)

@caoxiemeihao caoxiemeihao requested a review from a team as a code owner April 30, 2024 06:06
@caoxiemeihao
Copy link
Member Author

This is not a mandatory PR to be merged, it's only for discussion.

@erickzhao erickzhao marked this pull request as draft April 30, 2024 17:08
@joeyballentine
Copy link

joeyballentine commented May 2, 2024

Users can configure packagerConfig.ignore to prevent plugin-vite from copying node_modules

I still fail to understand why the default behavior you want is to copy everything and ignore specific things rather than the other way around. Please, try to help me understand why this is preferable when only a few modules actually need to be copied (or perhaps none at all, like in my project). Vite's default behavior is to bundle everything together and tree shake. What is the point of using vite if you are going to ignore half of what it does?

Edit: if the answer is to avoid breaking changes, I would argue that we should make this breaking change, as it was done incorrectly to begin with. It would be better to right this wrong sooner rather than later, and save countless people in the future from bundling their app incorrectly.

@erickzhao
Copy link
Member

Regarding this implementation, I think I have two comments:

  • I agree with @joeyballentine that node_modules should by default and find a more elegant solution forward.
  • I think that we might want to add vite back as a direct dependency to the plugin (or at least in peerDependencies) to avoid confusing users since vite is notably not going to be present for people who used the template from v7.2.0 and are upgrading to a future version.

@caoxiemeihao
Copy link
Member Author

caoxiemeihao commented May 3, 2024

I still fail to understand why the default behavior you want is to copy everything and ignore specific things rather than the other way around. Please, try to help me understand why this is preferable when only a few modules actually need to be copied (or perhaps none at all, like in my project). Vite's default behavior is to bundle everything together and tree shake. What is the point of using vite if you are going to ignore half of what it does?

The first misconception is that not all node_modules are collected according to the dependencies rule.
The second misconception is that Tree Shake only works on esm format bundled(deps) code, and has no effect on cjs formatting(deps). All codes final minify(trim trees) depends on esbuild or terser.

If we exclude all dependencies to copy to node_modules, who can help users build C/C++ native modules?
By the way, I also hope not to collect dependencies. But this will have a certain impact on previous users. Is this acceptable?

@joeyballentine
Copy link

The first misconception is that not all node_modules are collected according to the dependencies rule.

Sorry, I keep saying "everything" when I mean "all dependencies". Dev dependencies will not be copied, of course.

The second misconception is that Tree Shake only works on esm format bundled code

Are you sure about this? My project is not configured to be an ES module and yet tree shaking works perfectly fine.

If we exclude all dependencies to copy to node_modules, who can help users build C/C++ native modules?

What exactly is the difference between a user knowing that they should ignore their dependencies and a user knowing they should specifically copy their native modules? Either way, a user has to know that they need extra configuration. Since native code is rarer, i do not think a default rule favoring it is preferrable, personally.

Side-note: I will admit that I was previously unaware that are legitimate projects that put all their dependencies in devDependencies. There's apparently a line of thinking that all dependencies for a non-library are dev dependencies since the user does not need to install them and they are only needed for the build. I had not personally encountered this and based on my (admittedly limited) nodejs experience this is different from the norm. However, that seems to be more common in vite land? So while I might disagree with it, it is probably what vite users expect.

I'm mostly just concerned about this due to the mismatch between the webpack plugin and the vite plugin. Maybe someone starting with the vite plugin would know to put all their dependencies into devDependencies because that's what vite people do, whereas a webpack user migrating to vite wouldn't. In that case, I would suggest a migration guide to help mitigate what I ran into, (which was wasting hours trying to figure out why it was bundling code i didn't want). At the very least, proper practice for ensuring your dependencies get processed properly should be documented.

Anyway, I don't wanna be one of those guys who just relentlessly argues on the internet about something. So, I will not make any more comments on this topic as a whole except for making replies.

I think whatever you decide to do is fine, and if it does not work for me and my project I can always just continue to patch the plugin.

@BurningEnlightenment
Copy link

What exactly is the difference between a user knowing that they should ignore their dependencies and a user knowing they should specifically copy their native modules? Either way, a user has to know that they need extra configuration. Since native code is rarer, i do not think a default rule favoring it is preferrable, personally.

The main problem are things like prebuild-install which is used by quite a few popular libraries e.g. sqlite3. It's main purpose is to download built native modules from the internet and locate them at runtime. Due to the last part you have to include the whole prebuild-install package in your distribution even though most of it is effectively dead code. And this goddamn package comes with a rather big dependency tree, i.e. it would be a PITA to manually whitelist. And yes, it's an incredibly stupid library design… 🤬

@joeyballentine
Copy link

it would be a PITA to manually whitelist

And it's less of a PITA to manually blacklist?

@BurningEnlightenment
Copy link

BurningEnlightenment commented May 17, 2024

And it's less of a PITA to manually blacklist?

I usually rely on @electron/packager's prune option to do the heavy lifting, i.e. I just have to maintain a list of problematic dependencies (=> package.json:dependencies) and the tooling tracks the transitive dependency graph required to run the app.

EDIT: It would perhaps be useful if @electron/forge and @electron/packager provided a transformPackageJson(value: object): object option for mangling the package.json. This would also easily allow for removing stuff like scripts and devDependencies during packaging.

@caoxiemeihao

This comment was marked as off-topic.

@caoxiemeihao caoxiemeihao changed the title WIP(refactor(plugin-vite): better logic) refactor(plugin-vite): better logic Jun 23, 2024
@caoxiemeihao caoxiemeihao force-pushed the feat/vite-builtin-config branch 2 times, most recently from 366fdb8 to 6774799 Compare June 28, 2024 07:33
@caoxiemeihao caoxiemeihao marked this pull request as ready for review June 29, 2024 05:29
@caoxiemeihao caoxiemeihao requested review from erickzhao, a team and BlackHole1 June 30, 2024 02:16
@caoxiemeihao caoxiemeihao linked an issue Jul 1, 2024 that may be closed by this pull request
3 tasks
packages/plugin/vite/package.json Outdated Show resolved Hide resolved
packages/plugin/vite/src/ViteConfig.ts Outdated Show resolved Hide resolved
packages/plugin/vite/src/ViteConfig.ts Outdated Show resolved Hide resolved
packages/plugin/vite/src/ViteConfig.ts Outdated Show resolved Hide resolved
packages/plugin/vite/src/ViteConfig.ts Outdated Show resolved Hide resolved
packages/plugin/vite/src/config/vite.main.config.ts Outdated Show resolved Hide resolved
packages/plugin/vite/src/config/vite.main.config.ts Outdated Show resolved Hide resolved
packages/template/vite/tmpl/forge.config.js Outdated Show resolved Hide resolved
@caoxiemeihao caoxiemeihao force-pushed the feat/vite-builtin-config branch 3 times, most recently from 2c00b69 to 660b192 Compare July 8, 2024 06:05
@jgresham
Copy link

@caoxiemeihao is there a way we could test the changes our for you? just excited for the updates and curious when it might be out? thanks!

and thank you for your work on this @caoxiemeihao and advocacy @joeyballentine

Copy link
Member

@BlackHole1 BlackHole1 left a comment

Choose a reason for hiding this comment

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

LGTM

@BlackHole1
Copy link
Member

PTAL @electron/forgers

Comment on lines +34 to +44
const userConfig = (await loadConfigFromFile(configEnv, buildConfig.config))?.config ?? {};
switch (target) {
case 'main':
return mergeConfig(getMainViteConfig(configEnv as ConfigEnv<'build'>), userConfig);
case 'preload':
return mergeConfig(getPreloadViteConfig(configEnv as ConfigEnv<'build'>), userConfig);
case 'renderer':
return mergeConfig(getRendererViteConfig(configEnv as ConfigEnv<'renderer'>), userConfig);
default:
throw new Error(`Unknown target: ${target}, expected 'main', 'preload' or 'renderer'`);
}
Copy link

@BurningEnlightenment BurningEnlightenment Sep 18, 2024

Choose a reason for hiding this comment

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

Can we get a bypass? I started with 7.4.0 and have modified the vite.base.config.mjs. Mainly to provide a root if the config gets loaded by vitest and for vite-tsconfig-paths. Without a bypass this would be a breaking change.

EDIT: Has it been considered to provide the vite extensions and default configurations as a library? That would allow me to pluck things like root from the default config and I can call mergeConfig afterwards myself.

Copy link
Member Author

Choose a reason for hiding this comment

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

vite.base.config.mjs in your project will have higher priority than @electron-forge/plugin-vite, and your configuration will still be valid.

Choose a reason for hiding this comment

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

That is only true for things which I explicitly configure, e.g. if I use a different way to implement hot-restart, I'd have to override the plugin applied by default to do nothing… which also looks rather awkward. Therefore it would be nice, if I could just import the pieces I want from this plugin and apply them by myself.

Comment on lines -119 to -126
await fs.writeJson(path.resolve(buildPath, 'package.json'), pj, {
spaces: 2,
});

// Copy the dependencies in package.json
for (const dep of flatDependencies) {
await fs.copy(dep.src, path.resolve(buildPath, dep.dest));
}

Choose a reason for hiding this comment

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

Am I reading this correctly and this removes the functionality to copy dependencies listed in package.json? Is this supposed to land in a forge v8 package or will this breaking change land in a minor version?

Copy link
Member Author

@caoxiemeihao caoxiemeihao Sep 18, 2024

Choose a reason for hiding this comment

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

This should be released as a minor version, because Vite does not build some Node.js modules reliably.
However, most people still want Vite to handle the Node.js modules in dependencies, which can effectively reduce the size of the App build.
In any case, the current change is the choice of most people. If other problems are encountered during the upgrade process, we may need some community-provided Vite plugins to handle them instead of forge.

Choose a reason for hiding this comment

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

In any case, the current change is the choice of most people.

And how has this been measured?

If other problems are encountered during the upgrade process, we may need some community-provided Vite plugins to handle them instead of forge.

Do you mean a vite plugin to include the native binaries in the bundle?

In any case why is it necessary to break existing configuration now? AFAICT it would be possible to add an option to toggle this behavior.

Copy link
Member Author

Choose a reason for hiding this comment

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

In general, people who have used @electron-forge/plugin-webpack plugin hope that vite-plugin can have the same design as webpack-plugin, so that they can easily migrate from Webpack to Vite. But in fact, Vite and Webpack are not compatible in many places, and we can only work hard to make it more like Webpack. At least the current PR behavior is consistent with Webpack.
We may need to remove some hack behaviors from Forge, and they will be done by Vite plugin. For example, the copy behavior of dependencies looks very stupid in the eyes of Webpack users, but Vite often cannot solve such problems, especially C/C++ native packages.
Of course, I personally think that the current version of Vite plugin is the result of weighing many aspects, but it is not easy to be accepted by Webpack plugin users.

Copy link
Member Author

Choose a reason for hiding this comment

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

For users, the upgrade will bring some additional problems, which is not only a problem faced by Forge users, but more accurately, it should be a problem that Vite needs to face. I will try my best to provide some additional plugins to help users solve these problems, and also to provide Vite ecosystem with more Webpack-like capabilities.

Copy link
Member Author

Choose a reason for hiding this comment

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

In any case why is it necessary to break existing configuration now? AFAICT it would be possible to add an option to toggle this behavior.

Adding an option to let the user decide whether to copy dependencies would be necessary, as this PR is clearly a departure from previous behavior.
Please let me know if anyone agrees to add this option?

@VerteDinde VerteDinde changed the title refactor(plugin-vite): better logic feat(plugin-vite): better logic Sep 18, 2024
@VerteDinde
Copy link
Member

Updated the PR from a refactor to a feat, so that we have a minor bump. I think this is a large enough change that we should alert users with a minor

@georgexu99 georgexu99 added this pull request to the merge queue Sep 19, 2024
Merged via the queue into electron:main with commit 83fa9cf Sep 20, 2024
12 checks passed
Brooooooklyn referenced this pull request in toeverything/AFFiNE Sep 24, 2024
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type | Update |
|---|---|---|---|---|---|---|---|
| [@electron-forge/cli](https://redirect.github.com/electron/forge) | [`7.4.0` -> `7.5.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fcli/7.4.0/7.5.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fcli/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fcli/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fcli/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fcli/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/core](https://redirect.github.com/electron/forge) | [`7.4.0` -> `7.5.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fcore/7.4.0/7.5.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fcore/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fcore/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fcore/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fcore/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/core-utils](https://redirect.github.com/electron/forge) | [`7.4.0` -> `7.5.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fcore-utils/7.4.0/7.5.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fcore-utils/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fcore-utils/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fcore-utils/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fcore-utils/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/maker-base](https://redirect.github.com/electron/forge) | [`7.4.0` -> `7.5.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fmaker-base/7.4.0/7.5.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fmaker-base/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fmaker-base/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fmaker-base/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fmaker-base/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | resolutions | minor |
| [@electron-forge/maker-deb](https://redirect.github.com/electron/forge) | [`7.4.0` -> `7.5.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fmaker-deb/7.4.0/7.5.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fmaker-deb/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fmaker-deb/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fmaker-deb/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fmaker-deb/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/maker-dmg](https://redirect.github.com/electron/forge) | [`7.4.0` -> `7.5.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fmaker-dmg/7.4.0/7.5.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fmaker-dmg/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fmaker-dmg/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fmaker-dmg/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fmaker-dmg/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/maker-squirrel](https://redirect.github.com/electron/forge) | [`7.4.0` -> `7.5.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fmaker-squirrel/7.4.0/7.5.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fmaker-squirrel/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fmaker-squirrel/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fmaker-squirrel/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fmaker-squirrel/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/maker-zip](https://redirect.github.com/electron/forge) | [`7.4.0` -> `7.5.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fmaker-zip/7.4.0/7.5.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fmaker-zip/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fmaker-zip/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fmaker-zip/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fmaker-zip/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/plugin-auto-unpack-natives](https://redirect.github.com/electron/forge) | [`7.4.0` -> `7.5.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fplugin-auto-unpack-natives/7.4.0/7.5.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fplugin-auto-unpack-natives/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fplugin-auto-unpack-natives/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fplugin-auto-unpack-natives/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fplugin-auto-unpack-natives/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/shared-types](https://redirect.github.com/electron/forge) | [`7.4.0` -> `7.5.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fshared-types/7.4.0/7.5.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fshared-types/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fshared-types/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fshared-types/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fshared-types/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@fal-ai/serverless-client](https://redirect.github.com/fal-ai/fal-js) ([source](https://redirect.github.com/fal-ai/fal-js/tree/HEAD/libs/client)) | [`0.14.2` -> `0.14.3`](https://renovatebot.com/diffs/npm/@fal-ai%2fserverless-client/0.14.2/0.14.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@fal-ai%2fserverless-client/0.14.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@fal-ai%2fserverless-client/0.14.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@fal-ai%2fserverless-client/0.14.2/0.14.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@fal-ai%2fserverless-client/0.14.2/0.14.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [@playwright/test](https://playwright.dev) ([source](https://redirect.github.com/microsoft/playwright)) | [`=1.47.1` -> `=1.47.2`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.47.1/1.47.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.47.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.47.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.47.1/1.47.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.47.1/1.47.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@sentry/react](https://redirect.github.com/getsentry/sentry-javascript/tree/master/packages/react) ([source](https://redirect.github.com/getsentry/sentry-javascript)) | [`8.30.0` -> `8.31.0`](https://renovatebot.com/diffs/npm/@sentry%2freact/8.30.0/8.31.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@sentry%2freact/8.31.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@sentry%2freact/8.31.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@sentry%2freact/8.30.0/8.31.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sentry%2freact/8.30.0/8.31.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@sentry/react](https://redirect.github.com/getsentry/sentry-javascript/tree/master/packages/react) ([source](https://redirect.github.com/getsentry/sentry-javascript)) | [`8.30.0` -> `8.31.0`](https://renovatebot.com/diffs/npm/@sentry%2freact/8.30.0/8.31.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@sentry%2freact/8.31.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@sentry%2freact/8.31.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@sentry%2freact/8.30.0/8.31.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sentry%2freact/8.30.0/8.31.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@storybook/addon-essentials](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/essentials) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/essentials)) | [`8.3.1` -> `8.3.2`](https://renovatebot.com/diffs/npm/@storybook%2faddon-essentials/8.3.1/8.3.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-essentials/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-essentials/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-essentials/8.3.1/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-essentials/8.3.1/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@storybook/addon-interactions](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/interactions) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/interactions)) | [`8.3.1` -> `8.3.2`](https://renovatebot.com/diffs/npm/@storybook%2faddon-interactions/8.3.1/8.3.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-interactions/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-interactions/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-interactions/8.3.1/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-interactions/8.3.1/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@storybook/addon-links](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/links) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/links)) | [`8.3.1` -> `8.3.2`](https://renovatebot.com/diffs/npm/@storybook%2faddon-links/8.3.1/8.3.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-links/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-links/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-links/8.3.1/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-links/8.3.1/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@storybook/addon-mdx-gfm](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/gfm) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/gfm)) | [`8.3.1` -> `8.3.2`](https://renovatebot.com/diffs/npm/@storybook%2faddon-mdx-gfm/8.3.1/8.3.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-mdx-gfm/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-mdx-gfm/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-mdx-gfm/8.3.1/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-mdx-gfm/8.3.1/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@storybook/react](https://redirect.github.com/storybookjs/storybook/tree/next/code/renderers/react) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/renderers/react)) | [`8.3.1` -> `8.3.2`](https://renovatebot.com/diffs/npm/@storybook%2freact/8.3.1/8.3.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2freact/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2freact/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2freact/8.3.1/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2freact/8.3.1/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@storybook/react-vite](https://redirect.github.com/storybookjs/storybook/tree/next/code/frameworks/react-vite) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/frameworks/react-vite)) | [`8.3.1` -> `8.3.2`](https://renovatebot.com/diffs/npm/@storybook%2freact-vite/8.3.1/8.3.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2freact-vite/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2freact-vite/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2freact-vite/8.3.1/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2freact-vite/8.3.1/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@types/react](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react)) | [`18.3.7` -> `18.3.8`](https://renovatebot.com/diffs/npm/@types%2freact/18.3.7/18.3.8) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2freact/18.3.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2freact/18.3.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2freact/18.3.7/18.3.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2freact/18.3.7/18.3.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [electron](https://redirect.github.com/electron/electron) | [`32.1.1` -> `32.1.2`](https://renovatebot.com/diffs/npm/electron/32.1.1/32.1.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/electron/32.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/electron/32.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/electron/32.1.1/32.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/electron/32.1.1/32.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [esbuild](https://redirect.github.com/evanw/esbuild) | [`^0.23.0` -> `^0.24.0`](https://renovatebot.com/diffs/npm/esbuild/0.23.1/0.24.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/esbuild/0.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/esbuild/0.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/esbuild/0.23.1/0.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/esbuild/0.23.1/0.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [html-validate](https://html-validate.org) ([source](https://gitlab.com/html-validate/html-validate)) | [`8.22.0` -> `8.23.0`](https://renovatebot.com/diffs/npm/html-validate/8.22.0/8.23.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/html-validate/8.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/html-validate/8.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/html-validate/8.22.0/8.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/html-validate/8.22.0/8.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [jotai](https://redirect.github.com/pmndrs/jotai) | [`2.9.3` -> `2.10.0`](https://renovatebot.com/diffs/npm/jotai/2.9.3/2.10.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/jotai/2.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/jotai/2.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/jotai/2.9.3/2.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jotai/2.9.3/2.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [keyv](https://redirect.github.com/jaredwray/keyv) | [`5.0.1` -> `5.0.3`](https://renovatebot.com/diffs/npm/keyv/5.0.1/5.0.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/keyv/5.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/keyv/5.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/keyv/5.0.1/5.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/keyv/5.0.1/5.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [lucide-react](https://lucide.dev) ([source](https://redirect.github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react)) | [`^0.441.0` -> `^0.445.0`](https://renovatebot.com/diffs/npm/lucide-react/0.441.0/0.445.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/lucide-react/0.445.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/lucide-react/0.445.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/lucide-react/0.441.0/0.445.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lucide-react/0.441.0/0.445.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [msw](https://mswjs.io) ([source](https://redirect.github.com/mswjs/msw)) | [`2.4.8` -> `2.4.9`](https://renovatebot.com/diffs/npm/msw/2.4.8/2.4.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/msw/2.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/msw/2.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/msw/2.4.8/2.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/msw/2.4.8/2.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [napi](https://redirect.github.com/napi-rs/napi-rs) | `3.0.0-alpha.9` -> `3.0.0-alpha.11` | [![age](https://developer.mend.io/api/mc/badges/age/crate/napi/3.0.0-alpha.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/napi/3.0.0-alpha.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/napi/3.0.0-alpha.9/3.0.0-alpha.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/napi/3.0.0-alpha.9/3.0.0-alpha.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch |
| [napi-derive](https://redirect.github.com/napi-rs/napi-rs) | `3.0.0-alpha.8` -> `3.0.0-alpha.11` | [![age](https://developer.mend.io/api/mc/badges/age/crate/napi-derive/3.0.0-alpha.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/napi-derive/3.0.0-alpha.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/napi-derive/3.0.0-alpha.8/3.0.0-alpha.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/napi-derive/3.0.0-alpha.8/3.0.0-alpha.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch |
| [nodemon](https://nodemon.io) ([source](https://redirect.github.com/remy/nodemon)) | [`3.1.5` -> `3.1.7`](https://renovatebot.com/diffs/npm/nodemon/3.1.5/3.1.7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/nodemon/3.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nodemon/3.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nodemon/3.1.5/3.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nodemon/3.1.5/3.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [nx](https://nx.dev) ([source](https://redirect.github.com/nrwl/nx/tree/HEAD/packages/nx)) | [`19.7.4` -> `19.8.0`](https://renovatebot.com/diffs/npm/nx/19.7.4/19.8.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/nx/19.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nx/19.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nx/19.7.4/19.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nx/19.7.4/19.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [openai](https://redirect.github.com/openai/openai-node) | [`4.62.1` -> `4.63.0`](https://renovatebot.com/diffs/npm/openai/4.62.1/4.63.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/openai/4.63.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/openai/4.63.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/openai/4.62.1/4.63.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/openai/4.62.1/4.63.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [playwright](https://playwright.dev) ([source](https://redirect.github.com/microsoft/playwright)) | [`=1.47.1` -> `=1.47.2`](https://renovatebot.com/diffs/npm/playwright/1.47.1/1.47.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright/1.47.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright/1.47.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright/1.47.1/1.47.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright/1.47.1/1.47.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [react-day-picker](https://daypicker.dev) ([source](https://redirect.github.com/gpbl/react-day-picker)) | [`9.1.0` -> `9.1.2`](https://renovatebot.com/diffs/npm/react-day-picker/9.1.0/9.1.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-day-picker/9.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-day-picker/9.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-day-picker/9.1.0/9.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-day-picker/9.1.0/9.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [socket.io](https://redirect.github.com/socketio/socket.io/tree/main/packages/socket.io#readme) ([source](https://redirect.github.com/socketio/socket.io)) | [`4.7.5` -> `4.8.0`](https://renovatebot.com/diffs/npm/socket.io/4.7.5/4.8.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/socket.io/4.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/socket.io/4.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/socket.io/4.7.5/4.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/socket.io/4.7.5/4.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [socket.io-client](https://redirect.github.com/socketio/socket.io/tree/main/packages/socket.io-client#readme) ([source](https://redirect.github.com/socketio/socket.io)) | [`4.7.5` -> `4.8.0`](https://renovatebot.com/diffs/npm/socket.io-client/4.7.5/4.8.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/socket.io-client/4.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/socket.io-client/4.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/socket.io-client/4.7.5/4.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/socket.io-client/4.7.5/4.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [storybook](https://redirect.github.com/storybookjs/storybook/tree/next/code/lib/cli) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/lib/cli)) | [`8.3.1` -> `8.3.2`](https://renovatebot.com/diffs/npm/storybook/8.3.1/8.3.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/storybook/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/storybook/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/storybook/8.3.1/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/storybook/8.3.1/8.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [vite](https://vitejs.dev) ([source](https://redirect.github.com/vitejs/vite/tree/HEAD/packages/vite)) | [`5.4.6` -> `5.4.7`](https://renovatebot.com/diffs/npm/vite/5.4.6/5.4.7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vite/5.4.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite/5.4.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite/5.4.6/5.4.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite/5.4.6/5.4.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [wrangler](https://redirect.github.com/cloudflare/workers-sdk) ([source](https://redirect.github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler)) | [`3.78.5` -> `3.78.7`](https://renovatebot.com/diffs/npm/wrangler/3.78.5/3.78.7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/wrangler/3.78.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/wrangler/3.78.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/wrangler/3.78.5/3.78.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/wrangler/3.78.5/3.78.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |

---

### Release Notes

<details>
<summary>electron/forge (@&#8203;electron-forge/cli)</summary>

### [`v7.5.0`](https://redirect.github.com/electron/forge/releases/tag/v7.5.0)

[Compare Source](https://redirect.github.com/electron/forge/compare/v7.4.0...v7.5.0)

##### What's Changed

##### Improved ESM module support

Electron Forge v7.5.0 adds support for loading Forge modules (plugins, makers, publishers etc.) that use ESM for their module format. This change allows both official Forge modules and third-party modules to use ESM syntax.

##### Change in Vite support policy

v7.5.0 also makes refinements to our Vite plugin, fixing an issue that users identified as breaking between 7.2.0 and 7.3.0 ([https://github.com/electron/forge/issues/3506](https://redirect.github.com/electron/forge/issues/3506)). Users upgrading from any past version of Forge to 7.5.0 should now not experience breaking config changes.

After discussion with maintainers, we've decided to retroactively mark the Vite plugin as **experimental**, as the plugin is still under active development and cannot offer the same API stability guarantees as our other existing plugins. Minor versions may include breaking changes to improve developer ergonomics or to fix bugs (especially around native Node.js modules).

When these changes happen, we'll provide additional migration information in future release notes.

-   feat(plugin-vite): better logic by [@&#8203;caoxiemeihao](https://redirect.github.com/caoxiemeihao) in [https://github.com/electron/forge/pull/3583](https://redirect.github.com/electron/forge/pull/3583)
-   feat(core): support ESM Forge module loading by [@&#8203;SpacingBat3](https://redirect.github.com/SpacingBat3) in [https://github.com/electron/forge/pull/3582](https://redirect.github.com/electron/forge/pull/3582)
-   feat(core): adding register/unregisterForgeConfigForDirectory to utils by [@&#8203;IIIMADDINIII](https://redirect.github.com/IIIMADDINIII) in [https://github.com/electron/forge/pull/3626](https://redirect.github.com/electron/forge/pull/3626)
-   feat(publisher-gcs): only include provided upload options by [@&#8203;kochrt](https://redirect.github.com/kochrt) in [https://github.com/electron/forge/pull/3576](https://redirect.github.com/electron/forge/pull/3576)
-   feat: Adding optional metadata config to gcs publisher by [@&#8203;Tobiasartz](https://redirect.github.com/Tobiasartz) in [https://github.com/electron/forge/pull/3682](https://redirect.github.com/electron/forge/pull/3682)
-   feat(maker-wix): Expose the property associateExtensions by [@&#8203;fras2560](https://redirect.github.com/fras2560) in [https://github.com/electron/forge/pull/3674](https://redirect.github.com/electron/forge/pull/3674)
-   feat(plugin-webpack): support for dev server custom headers by [@&#8203;rahul-sachdeva22](https://redirect.github.com/rahul-sachdeva22) in [https://github.com/electron/forge/pull/3653](https://redirect.github.com/electron/forge/pull/3653)

##### Bug Fixes and Improvements

-   fix(cli): cli capitalisation by [@&#8203;DevanceJ](https://redirect.github.com/DevanceJ) in [https://github.com/electron/forge/pull/3539](https://redirect.github.com/electron/forge/pull/3539)
-   ci: don't use versionDocs option in API Documentation workflow by [@&#8203;dsanders11](https://redirect.github.com/dsanders11) in [https://github.com/electron/forge/pull/3571](https://redirect.github.com/electron/forge/pull/3571)
-   test(import): check if electron-quick-start packages by [@&#8203;erickzhao](https://redirect.github.com/erickzhao) in [https://github.com/electron/forge/pull/3580](https://redirect.github.com/electron/forge/pull/3580)
-   fix(maker-squirrel): only push `delta` artifacts if they exist on disk by [@&#8203;hipstersmoothie](https://redirect.github.com/hipstersmoothie) in [https://github.com/electron/forge/pull/3586](https://redirect.github.com/electron/forge/pull/3586)
-   docs: upgrade [email protected] by [@&#8203;erickzhao](https://redirect.github.com/erickzhao) in [https://github.com/electron/forge/pull/3636](https://redirect.github.com/electron/forge/pull/3636)
-   fix(plugin-webpack): protocol recognizes webpack's `devServer` setting by [@&#8203;Dogdriip](https://redirect.github.com/Dogdriip) in [https://github.com/electron/forge/pull/3650](https://redirect.github.com/electron/forge/pull/3650)
-   fix(hooks): allow mutating hooks to have a `void` return by [@&#8203;erickzhao](https://redirect.github.com/erickzhao) in [https://github.com/electron/forge/pull/3655](https://redirect.github.com/electron/forge/pull/3655)
-   fix: Bump [@&#8203;electron/packager](https://redirect.github.com/electron/packager) to ^18.3.5 by [@&#8203;felixrieseberg](https://redirect.github.com/felixrieseberg) in [https://github.com/electron/forge/pull/3692](https://redirect.github.com/electron/forge/pull/3692)
-   chore: bump electronjs/node to 2.3.0 (main) by [@&#8203;electron-roller](https://redirect.github.com/electron-roller) in [https://github.com/electron/forge/pull/3596](https://redirect.github.com/electron/forge/pull/3596)
-   chore(publisher-s3): update aws-sdk deps by [@&#8203;erickzhao](https://redirect.github.com/erickzhao) in [https://github.com/electron/forge/pull/3708](https://redirect.github.com/electron/forge/pull/3708)
-   chore: bump `asar` dep to latest by [@&#8203;erickzhao](https://redirect.github.com/erickzhao) in [https://github.com/electron/forge/pull/3592](https://redirect.github.com/electron/forge/pull/3592)
-   test: correctly make test-output.xml paths relative in windows by [@&#8203;yangannyx](https://redirect.github.com/yangannyx) in [https://github.com/electron/forge/pull/3620](https://redirect.github.com/electron/forge/pull/3620)
-   docs: mark plugin-vite as experimental by [@&#8203;VerteDinde](https://redirect.github.com/VerteDinde) in [https://github.com/electron/forge/pull/3710](https://redirect.github.com/electron/forge/pull/3710)

##### New Contributors

-   [@&#8203;DevanceJ](https://redirect.github.com/DevanceJ) made their first contribution in [https://github.com/electron/forge/pull/3539](https://redirect.github.com/electron/forge/pull/3539)
-   [@&#8203;hipstersmoothie](https://redirect.github.com/hipstersmoothie) made their first contribution in [https://github.com/electron/forge/pull/3586](https://redirect.github.com/electron/forge/pull/3586)
-   [@&#8203;Tobiasartz](https://redirect.github.com/Tobiasartz) made their first contribution in [https://github.com/electron/forge/pull/3682](https://redirect.github.com/electron/forge/pull/3682)
-   [@&#8203;rahul-sachdeva22](https://redirect.github.com/rahul-sachdeva22) made their first contribution in [https://github.com/electron/forge/pull/3653](https://redirect.github.com/electron/forge/pull/3653)
-   [@&#8203;fras2560](https://redirect.github.com/fras2560) made their first contribution in [https://github.com/electron/forge/pull/3674](https://redirect.github.com/electron/forge/pull/3674)
-   [@&#8203;IIIMADDINIII](https://redirect.github.com/IIIMADDINIII) made their first contribution in [https://github.com/electron/forge/pull/3626](https://redirect.github.com/electron/forge/pull/3626)
-   [@&#8203;SpacingBat3](https://redirect.github.com/SpacingBat3) made their first contribution in [https://github.com/electron/forge/pull/3582](https://redirect.github.com/electron/forge/pull/3582)
-   [@&#8203;kochrt](https://redirect.github.com/kochrt) made their first contribution in [https://github.com/electron/forge/pull/3576](https://redirect.github.com/electron/forge/pull/3576)

**Full Changelog**: https://github.com/electron/forge/compare/v7.4.0...v7.5.0

</details>

<details>
<summary>fal-ai/fal-js (@&#8203;fal-ai/serverless-client)</summary>

### [`v0.14.3`](https://redirect.github.com/fal-ai/fal-js/compare/b3ab5f0e15d70d83c439f6a77bb3a5cfa7fa3271...762f28918ded71b9569d6a0d028fd5a486b5b80f)

[Compare Source](https://redirect.github.com/fal-ai/fal-js/compare/b3ab5f0e15d70d83c439f6a77bb3a5cfa7fa3271...762f28918ded71b9569d6a0d028fd5a486b5b80f)

</details>

<details>
<summary>microsoft/playwright (@&#8203;playwright/test)</summary>

### [`v1.47.2`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.47.2)

[Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.47.1...v1.47.2)

##### Highlights

[https://github.com/microsoft/playwright/pull/32699](https://redirect.github.com/microsoft/playwright/pull/32699)- \[REGRESSION]: fix(codegen): use content_frame property in python/.NET[https://github.com/microsoft/playwright/issues/32706](https://redirect.github.com/microsoft/playwright/issues/32706)6- \[REGRESSION]: page.pause() does not pause test timeout after 1.4[https://github.com/microsoft/playwright/pull/32661](https://redirect.github.com/microsoft/playwright/pull/32661)61 - fix(trace-viewer): time delta between local and remote actions

#### Browser Versions

-   Chromium 129.0.6668.29
-   Mozilla Firefox 130.0
-   WebKit 18.0

This version was also tested against the following stable channels:

-   Google Chrome 128
-   Microsoft Edge 128

</details>

<details>
<summary>getsentry/sentry-javascript (@&#8203;sentry/react)</summary>

### [`v8.31.0`](https://redirect.github.com/getsentry/sentry-javascript/releases/tag/8.31.0)

[Compare Source](https://redirect.github.com/getsentry/sentry-javascript/compare/8.30.0...8.31.0)

##### Important Changes

-   **feat(node): Add `dataloader` integration ([#&#8203;13664](https://redirect.github.com/getsentry/sentry-javascript/issues/13664))**

This release adds a new integration for the [`dataloader` package](https://www.npmjs.com/package/dataloader). The Node
SDK (and all SDKs that depend on it) will now automatically instrument `dataloader` instances. You can also add it
manually:

```js
Sentry.init({
  integrations: [Sentry.dataloaderIntegration()],
});
```

##### Other Changes

-   feat(browser): Add navigation `activationStart` timestamp to pageload span ([#&#8203;13658](https://redirect.github.com/getsentry/sentry-javascript/issues/13658))
-   feat(gatsby): Add optional `deleteSourcemapsAfterUpload` ([#&#8203;13610](https://redirect.github.com/getsentry/sentry-javascript/issues/13610))
-   feat(nextjs): Give app router prefetch requests a `http.server.prefetch` op ([#&#8203;13600](https://redirect.github.com/getsentry/sentry-javascript/issues/13600))
-   feat(nextjs): Improve Next.js serverside span data quality ([#&#8203;13652](https://redirect.github.com/getsentry/sentry-javascript/issues/13652))
-   feat(node): Add `disableInstrumentationWarnings` option ([#&#8203;13693](https://redirect.github.com/getsentry/sentry-javascript/issues/13693))
-   feat(nuxt): Adding `experimental_basicServerTracing` option to Nuxt module ([#&#8203;13643](https://redirect.github.com/getsentry/sentry-javascript/issues/13643))
-   feat(nuxt): Improve logs about adding Node option 'import' ([#&#8203;13726](https://redirect.github.com/getsentry/sentry-javascript/issues/13726))
-   feat(replay): Add `onError` callback + other small improvements to debugging ([#&#8203;13721](https://redirect.github.com/getsentry/sentry-javascript/issues/13721))
-   feat(replay): Add experimental option to allow for a checkout every 6 minutes ([#&#8203;13069](https://redirect.github.com/getsentry/sentry-javascript/issues/13069))
-   feat(wasm): Unconditionally parse instruction addresses ([#&#8203;13655](https://redirect.github.com/getsentry/sentry-javascript/issues/13655))
-   fix: Ensure all logs are wrapped with `consoleSandbox` ([#&#8203;13690](https://redirect.github.com/getsentry/sentry-javascript/issues/13690))
-   fix(browser): Try multiple options for `lazyLoadIntegration` script parent element lookup ([#&#8203;13717](https://redirect.github.com/getsentry/sentry-javascript/issues/13717))
-   fix(feedback): Actor color applies to feedback icon ([#&#8203;13702](https://redirect.github.com/getsentry/sentry-javascript/issues/13702))
-   fix(feedback): Fix form width on mobile devices ([#&#8203;13068](https://redirect.github.com/getsentry/sentry-javascript/issues/13068))
-   fix(nestjs): Preserve original function name on `SentryTraced` functions ([#&#8203;13684](https://redirect.github.com/getsentry/sentry-javascript/issues/13684))
-   fix(node): Don't overwrite local variables for re-thrown errors ([#&#8203;13644](https://redirect.github.com/getsentry/sentry-javascript/issues/13644))
-   fix(normalize): Treat Infinity as NaN both are non-serializable numbers ([#&#8203;13406](https://redirect.github.com/getsentry/sentry-javascript/issues/13406))
-   fix(nuxt): Use correct server output file path ([#&#8203;13725](https://redirect.github.com/getsentry/sentry-javascript/issues/13725))
-   fix(opentelemetry): Always use active span in `Propagator.inject` ([#&#8203;13381](https://redirect.github.com/getsentry/sentry-javascript/issues/13381))
-   fix(replay): Fixes potential out-of-order segments ([#&#8203;13609](https://redirect.github.com/getsentry/sentry-javascript/issues/13609))

Work in this release was contributed by [@&#8203;KyGuy2002](https://redirect.github.com/KyGuy2002), [@&#8203;artzhookov](https://redirect.github.com/artzhookov), and [@&#8203;julianCast](https://redirect.github.com/julianCast). Thank you for your contributions!

</details>

<details>
<summary>storybookjs/storybook (@&#8203;storybook/addon-essentials)</summary>

### [`v8.3.2`](https://redirect.github.com/storybookjs/storybook/blob/HEAD/CHANGELOG.md#832)

[Compare Source](https://redirect.github.com/storybookjs/storybook/compare/v8.3.1...v8.3.2)

-   CLI: Fix skip-install for stable latest releases - [#&#8203;29133](https://redirect.github.com/storybookjs/storybook/pull/29133), thanks [@&#8203;valentinpalkovic](https://redirect.github.com/valentinpalkovic)!
-   Core: Do not add packageManager field to package.json during `storybook dev` - [#&#8203;29152](https://redirect.github.com/storybookjs/storybook/pull/29152), thanks [@&#8203;valentinpalkovic](https://redirect.github.com/valentinpalkovic)!

</details>

<details>
<summary>electron/electron (electron)</summary>

### [`v32.1.2`](https://redirect.github.com/electron/electron/releases/tag/v32.1.2): electron v32.1.2

[Compare Source](https://redirect.github.com/electron/electron/compare/v32.1.1...v32.1.2)

### Release Notes for v32.1.2

#### Fixes

-   Fixed an issue where clicking the eyedropper icon did nothing instead of opening an eyedropper for color selection as expected. [#&#8203;43786](https://redirect.github.com/electron/electron/pull/43786) <span style="font-size:small;">(Also in [33](https://redirect.github.com/electron/electron/pull/43700))</span>
-   Third time isn't always a charm. Fixed the native macOS Screen Share picker invocation triggering a test Chromium green screen. [#&#8203;43809](https://redirect.github.com/electron/electron/pull/43809) <span style="font-size:small;">(Also in [33](https://redirect.github.com/electron/electron/pull/43810))</span>

</details>

<details>
<summary>evanw/esbuild (esbuild)</summary>

### [`v0.24.0`](https://redirect.github.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0240)

[Compare Source](https://redirect.github.com/evanw/esbuild/compare/v0.23.1...v0.24.0)

***This release deliberately contains backwards-incompatible changes.*** To avoid automatically picking up releases like this, you should either be pinning the exact version of `esbuild` in your `package.json` file (recommended) or be using a version range syntax that only accepts patch upgrades such as `^0.23.0` or `~0.23.0`. See npm's documentation about [semver](https://docs.npmjs.com/cli/v6/using-npm/semver/) for more information.

-   Drop support for older platforms ([#&#8203;3902](https://redirect.github.com/evanw/esbuild/pull/3902))

    This release drops support for the following operating system:

    -   macOS 10.15 Catalina

    This is because the Go programming language dropped support for this operating system version in Go 1.23, and this release updates esbuild from Go 1.22 to Go 1.23. Go 1.23 now requires macOS 11 Big Sur or later.

    Note that this only affects the binary esbuild executables that are published to the esbuild npm package. It's still possible to compile esbuild's source code for these older operating systems. If you need to, you can compile esbuild for yourself using an older version of the Go compiler (before Go version 1.23). That might look something like this:

        git clone https://github.com/evanw/esbuild.git
        cd esbuild
        go build ./cmd/esbuild
        ./esbuild --version

-   Fix class field decorators in TypeScript if `useDefineForClassFields` is `false` ([#&#8203;3913](https://redirect.github.com/evanw/esbuild/issues/3913))

    Setting the `useDefineForClassFields` flag to `false` in `tsconfig.json` means class fields use the legacy TypeScript behavior instead of the standard JavaScript behavior. Specifically they use assign semantics instead of define semantics (e.g. setters are triggered) and fields without an initializer are not initialized at all. However, when this legacy behavior is combined with standard JavaScript decorators, TypeScript switches to always initializing all fields, even those without initializers. Previously esbuild incorrectly continued to omit field initializers for this edge case. These field initializers in this case should now be emitted starting with this release.

-   Avoid incorrect cycle warning with `tsconfig.json` multiple inheritance ([#&#8203;3898](https://redirect.github.com/evanw/esbuild/issues/3898))

    TypeScript 5.0 introduced multiple inheritance for `tsconfig.json` files where `extends` can be an array of file paths. Previously esbuild would incorrectly treat files encountered more than once when processing separate subtrees of the multiple inheritance hierarchy as an inheritance cycle. With this release, `tsconfig.json` files containing this edge case should work correctly without generating a warning.

-   Handle Yarn Plug'n'Play stack overflow with `tsconfig.json` ([#&#8203;3915](https://redirect.github.com/evanw/esbuild/issues/3915))

    Previously a `tsconfig.json` file that `extends` another file in a package with an `exports` map could cause a stack overflow when Yarn's Plug'n'Play resolution was active. This edge case should work now starting with this release.

-   Work around more issues with Deno 1.31+ ([#&#8203;3917](https://redirect.github.com/evanw/esbuild/pull/3917))

    This version of Deno broke the `stdin` and `stdout` properties on command objects for inherited streams, which matters when you run esbuild's Deno module as the entry point (i.e. when `import.meta.main` is `true`). Previously esbuild would crash in Deno 1.31+ if you ran esbuild like that. This should be fixed starting with this release.

    This fix was contributed by [@&#8203;Joshix-1](https://redirect.github.com/Joshix-1).

</details>

<details>
<summary>html-validate/html-validate (html-validate)</summary>

### [`v8.23.0`](https://gitlab.com/html-validate/html-validate/blob/HEAD/CHANGELOG.md#8230-2024-09-22)

[Compare Source](https://gitlab.com/html-validate/html-validate/compare/v8.22.0...v8.23.0)

##### Features

-   **deps:** support vitest v2 ([860b0c0](https://gitlab.com/html-validate/html-validate/commit/860b0c02510ef7e40cd2fd54b7f83143643b3718))

</details>

<details>
<summary>pmndrs/jotai (jotai)</summary>

### [`v2.10.0`](https://redirect.github.com/pmndrs/jotai/releases/tag/v2.10.0)

[Compare Source](https://redirect.github.com/pmndrs/jotai/compare/v2.9.3...v2.10.0)

It comes with another significant internal change to address some edge cases.

Since v2.9.0, we've been working on some internal refactors to support more edge cases and clean up the code.

Users are encouraged to update to the new versions eventually, but if you're satisfied with the current situation and prefer to avoid temporary instability, you can stick with v2.8.4 for now.

#### What's Changed

-   breaking(core): avoid continuable promise in store api by [@&#8203;dai-shi](https://redirect.github.com/dai-shi) in [https://github.com/pmndrs/jotai/pull/2695](https://redirect.github.com/pmndrs/jotai/pull/2695)

#### New Contributors

-   [@&#8203;sphinxrave](https://redirect.github.com/sphinxrave) made their first contribution in [https://github.com/pmndrs/jotai/pull/2653](https://redirect.github.com/pmndrs/jotai/pull/2653)
-   [@&#8203;mxthxngx](https://redirect.github.com/mxthxngx) made their first contribution in [https://github.com/pmndrs/jotai/pull/2712](https://redirect.github.com/pmndrs/jotai/pull/2712)
-   [@&#8203;hoangvu12](https://redirect.github.com/hoangvu12) made their first contribution in [https://github.com/pmndrs/jotai/pull/2716](https://redirect.github.com/pmndrs/jotai/pull/2716)
-   [@&#8203;YuHyeonWook](https://redirect.github.com/YuHyeonWook) made their first contribution in [https://github.com/pmndrs/jotai/pull/2734](https://redirect.github.com/pmndrs/jotai/pull/2734)

**Full Changelog**: https://github.com/pmndrs/jotai/compare/v2.9.3...v2.10.0

</details>

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

### [`v0.445.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.445.0): New icons 0.445.0

[Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.444.0...0.445.0)

#### New icons 🎨

-   `briefcase-conveyor-belt` ([#&#8203;2431](https://redirect.github.com/lucide-icons/lucide/issues/2431)) by [@&#8203;jguddas](https://redirect.github.com/jguddas)
-   `message-square-lock` ([#&#8203;2430](https://redirect.github.com/lucide-icons/lucide/issues/2430)) by [@&#8203;jguddas](https://redirect.github.com/jguddas)

### [`v0.444.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.444.0): New icons 0.444.0

[Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.443.0...0.444.0)

#### Modified Icons 🔨

-   `loader-pinwheel` ([#&#8203;2470](https://redirect.github.com/lucide-icons/lucide/issues/2470)) by [@&#8203;jguddas](https://redirect.github.com/jguddas)

### [`v0.443.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.443.0): New icons 0.443.0

[Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.442.0...0.443.0)

#### Modified Icons 🔨

-   `circle-stop` ([#&#8203;2479](https://redirect.github.com/lucide-icons/lucide/issues/2479)) by [@&#8203;jguddas](https://redirect.github.com/jguddas)

### [`v0.442.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.442.0): New icons 0.442.0

[Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.441.0...0.442.0)

#### Modified Icons 🔨

-   `messages-square` ([#&#8203;2429](https://redirect.github.com/lucide-icons/lucide/issues/2429)) by [@&#8203;jguddas](https://redirect.github.com/jguddas)
-   `octagon-pause` ([#&#8203;2485](https://redirect.github.com/lucide-icons/lucide/issues/2485)) by [@&#8203;jguddas](https://redirect.github.com/jguddas)

</details>

<details>
<summary>mswjs/msw (msw)</summary>

### [`v2.4.9`](https://redirect.github.com/mswjs/msw/releases/tag/v2.4.9)

[Compare Source](https://redirect.github.com/mswjs/msw/compare/v2.4.8...v2.4.9)

#### v2.4.9 (2024-09-20)

##### Bug Fixes

-   **ClientRequest:** support `Request` as init when recording raw headers ([#&#8203;2293](https://redirect.github.com/mswjs/msw/issues/2293)) ([`bf982ea`](https://redirect.github.com/mswjs/msw/commit/bf982eaa70ddd5d08706b8877ceb6c6c2517f660)) [@&#8203;kettanaito](https://redirect.github.com/kettanaito)

</details>

<details>
<summary>napi-rs/napi-rs (napi)</summary>

### [`v3.0.0-alpha.11`](https://redirect.github.com/napi-rs/napi-rs/releases/tag/napi%403.0.0-alpha.11)

[Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/[email protected]@3.0.0-alpha.11)

#### What's Changed

-   refactor(napi-derive): expand order by [@&#8203;Brooooooklyn](https://redirect.github.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/2265](https://redirect.github.com/napi-rs/napi-rs/pull/2265)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[email protected]@3.0.0-alpha.11

### [`v3.0.0-alpha.10`](https://redirect.github.com/napi-rs/napi-rs/releases/tag/napi%403.0.0-alpha.10)

[Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/[email protected]@3.0.0-alpha.10)

#### What's Changed

-   fix(napi): nullptr handling in `TypedArray`s by [@&#8203;Xanewok](https://redirect.github.com/Xanewok) in [https://github.com/napi-rs/napi-rs/pull/2258](https://redirect.github.com/napi-rs/napi-rs/pull/2258)
-   chore: enable corepack in Debian base Dockerfile by [@&#8203;stevefan1999-personal](https://redirect.github.com/stevefan1999-personal) in [https://github.com/napi-rs/napi-r

</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://redirect.github.com/renovatebot/renovate/discussions) if that's undesired.

---

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

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC44MC4wIiwidXBkYXRlZEluVmVyIjoiMzguODAuMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Undocumented breaking change for Vite plugin in v7.3.0
8 participants