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

Undocumented breaking change for Vite plugin in v7.3.0 #3506

Closed
3 tasks done
erickzhao opened this issue Feb 23, 2024 · 33 comments · Fixed by #3583
Closed
3 tasks done

Undocumented breaking change for Vite plugin in v7.3.0 #3506

erickzhao opened this issue Feb 23, 2024 · 33 comments · Fixed by #3583

Comments

@erickzhao
Copy link
Member

Pre-flight checklist

  • I have read the contribution documentation for this project.
  • I agree to follow the code of conduct that this project uses.
  • I have searched the issue tracker for a bug that matches the one I want to file, without success.

Electron Forge version

7.3.0

Electron version

N/A

Operating system

All

Last known working Electron Forge version

7.2.0

Expected behavior

Upgrading your Vite plugin app from Electron Forge v7.2.0 to v7.3.0 is seamless.

Actual behavior

Changes in the build system during the upgrade to Vite 5 have produced an API-incompatible change, requiring users to upgrade.

Steps to reproduce

N/A

Additional information

To fix this issue, see the @electron-forge/template-vite template config files: https://github.com/electron/forge/tree/main/packages/template/vite/tmpl

@phlegmaticprogrammer

This comment has been minimized.

@OmegaRogue

This comment has been minimized.

@will-stone
Copy link

Do you mind pointing to the change that fixed the issue? There seems to be a lot going on there. Here’s my files: https://github.com/will-stone/browserosaurus

@sparecycles
Copy link

sparecycles commented Mar 25, 2024

Chiming in here... I've been using configs based on modified 7.2.0 templates (vite + electron + svelte! 😉 ).

Upgrading to 7.3.0 causes my existing configs to ... just not produce any output! (.vite/build/... empty: no main.js found).

I think I might be able to get things to work if I rebuild the changes in my templates on top of the new ones, but that seems involved for a minor release.

Note: I don't think it's the vite@5 update that's causing my issue, as my package.json already specified "vite": "^5.2.6"

@Ben-Avrahami

This comment was marked as duplicate.

@sparecycles
Copy link

sparecycles commented Mar 28, 2024

The only insight I didn't mention is that the main PR description ( #3468 ) admits

... this PR change is very significant. Moving most of the logic form [sic] plugin/vite to template/vite ...

So, I think the expectation here is we recreate our build configs on the new base templates?

@boldt
Copy link

boldt commented Apr 16, 2024

Can you provide a migration guide, to fix this issue?

@Ben-Avrahami
Copy link

Can you provide a migration guide, to fix this issue?

+1 !

markspolakovs added a commit to badger-media/badger that referenced this issue Apr 17, 2024
@caoxiemeihao
Copy link
Member

caoxiemeihao commented Apr 20, 2024

Migrate to 7.3.0+

Updated on 2024-04-25 ([email protected])


vite.main.config.ts

  import { defineConfig } from 'vite';
+ import { forgeViteConfig } from 'electron-forge-plugin-vite/migration';

  // https://vitejs.dev/config
- export default defineConfig({
+ export default defineConfig(forgeViteConfig.main({
    resolve: {
      // Some libs that can run in both Web and Node.js, such as `axios`, we need to tell Vite to build them in Node.js.
      browserField: false,
      conditions: ['node'],
      mainFields: ['module', 'jsnext:main', 'jsnext'],
    },
- });
+ }));

vite.renderer.config.ts

  import { defineConfig } from 'vite';
+ import { forgeViteConfig } from 'electron-forge-plugin-vite/migration';

  // https://vitejs.dev/config
- export default defineConfig({});
+ export default defineConfig(forgeViteConfig.renderer({}));

vite.preload.config.ts

  import { defineConfig } from 'vite';
+ import { forgeViteConfig } from 'electron-forge-plugin-vite/migration';

  // https://vitejs.dev/config
- export default defineConfig({});
+ export default defineConfig(forgeViteConfig.preload({}));

@sparecycles
Copy link

I'm a little concerned that this migration guide is implying the de-facto official path uses electron-forge-plugin-vite, which is maintained in a repo under @caoxiemeihao's personal control.

Ideally any migration utility should be contributed and maintained under electron/forge

@caoxiemeihao
Copy link
Member

caoxiemeihao commented Apr 21, 2024

I'm a little concerned that this migration guide is implying the de-facto official path uses electron-forge-plugin-vite, which is maintained in a repo under @caoxiemeihao's personal control.

Ideally any migration utility should be contributed and maintained under electron/forge

v7.3.0 just migrates the previous config in forge/plugin-vite to forge/template-vite. The purpose of this is to upgrade vite, making it very easy to fix some errors.
I even think that plugin-vite/migration itself is not necessary to be released as npm, it is just made for some talents who have difficulty upgrading.
plugin-vite/migration just copies the forge/template-vite config of v7.3.0. Is there any necessity for it to appear in the electron org?

@sparecycles
Copy link

sparecycles commented Apr 21, 2024

Well, migrating any code from forge/plugin-vite to forge/template-vite requires clients to back-port what was migrated into their own templates, and this needs to be documented.

It would be nice if you would explain what was moved, and if possible, please describe the reasons that these were moved (rather than claiming in general "to make it easy to fix some errors" or "very fast release pace of Vite").

Adding another dependency which makes the system an interaction of the versions of forge, vite, the client template, and your migration base doesn't seem like a good idea for anyone involved!

BTW, you've also claimed that these changes enable esm support but as others have pointed out, how these changes enable esm support is not clear. Do you have an example to share with them?

@phlegmaticprogrammer
Copy link

Personally, the way this "migration" is being handled makes me want to run for the hills. I don't think it is acceptable that an upgrade from 7.2 to 7.3 breaks my code, without any warning. The reason I am using something like forge in the first place is because I don't want to look below the abstraction that covers all the messy details.

@GitMurf
Copy link

GitMurf commented Apr 21, 2024

So, I think the expectation here is we recreate our build configs on the new base templates?

@sparecycles in reviewing several of the related gh issues, it seems as if you and I have come to a similar conclusion and have tried similar “workarounds” to get things working for esm/type:module.

Specifically to your quote above, I have been coming to a similar conclusion. It’s a bit of a shame because I have been building and fine tuning our vite-ts-forge config the last year or so and there is a lot in there that I hate to lose / re-implement, but at the same time I think that is part of the issue for me for troubleshooting recent changes, because I have a lot of configurations items that could be throwing things off…. And some are likely no longer necessary.

TLDR: after spending the last couple days trying to “hack” this to work with our current build/ci flows, I think I am going to start from scratch, get esm / type module working (without having to change the format of our import statements etc in our codebase) and then rebuild some of our customization on top of it after the dust settles.

are you thinking similarly? Do you have any public working MVPs is could peak at? Thanks!

@sparecycles
Copy link

@GitMurf unfortunately I'm sort-of developing an in-house project... I'm the sole contributor but I haven't gone through the steps to open-source it and there are a few more features I'd like to build before making it public. (Perhaps I'm being too careful.)

This has gone on long enough that I should probably make a small svelte + vite + electron demo project (with both 7.2.0 and 7.30) to share.

@sparecycles
Copy link

sparecycles commented Apr 21, 2024

Okay! only took about 30 minutes to strip the project down to the vite/svelte/electron/tailwind integration. If you're not a mac user, you may need to add the windows/linux plugins back in (I tend to remove stuff from templates unless I know what they do).

a forge-7.2.0 branch is there
https://github.com/sparecycles/vite-svelte-tailwind-electron

I'll try to do the forge-7.3.0 branch later today and probably have to make a forge-7.4.0 branch if #3572 lands 😝 update: it looks like that PR might not be a breaking change now. yay!

@sparecycles
Copy link

If you manually merge in the new templates, it does work.

https://github.com/sparecycles/vite-svelte-tailwind-electron/compare/forge-7.2.0..forge-7.3.0

It's a little curious though, the three forge configs interact with the "vite.base.config" file differently:

  • the main config uses env.forgeConfigSelf.entry as build.lib.entry
  • the preload config uses env.forgeConfigSelf.entry as build.rollupOptions.input
  • meanwhile the renderer config does not use entry.

Also the renderer config does not mergeConfig(getBuildConfig(), ...) as the other two do (and it's the only one that uses pluginExposeRenderer)

Now it was actually pretty easy at this point to remove my old hack and switch to an esmodule build target!
https://github.com/sparecycles/vite-svelte-tailwind-electron/compare/forge-7.3.0..forge-7.3.0-esm

@GitMurf
Copy link

GitMurf commented Apr 21, 2024

@sparecycles thanks so much for these updates and mvp! On your first one I was going to ask you where / how you were changing from vite cjs to es. But it looks like now in hour update you have that working?

Also, your comments about windows (we build our app for windows and macs) is it really just the makers in your forge config that you stripped out windows stuff? If so that is fine for me because we have some complex package and makers customizations anyways :)

@sparecycles
Copy link

sparecycles commented Apr 21, 2024

@GitMurf it's mostly the makers, I've also attempted to get windows builds working with a non-developer coworker and it hangs (there's issues with native compilation: python 3.12 removed their deprecated distutils package so only node-gyp 10+ supports python 3.12+ and updating node-gyp theoretically needs a one-line change to be supported in electron-rebuild... at least, just patching that change in on mac works, but their machine failed to build and took a long time)... So I guess the makers aren't even needed, I've never gone the extra step of packaging the app into a diskimage or whatever the darwin-specific maker does.

But FWIW, I can't yet support windows issues because I can't test. (started working on spinning up a windows VM this weekend, but things never go smooth!)

I think I can make an alternate config.base.ts that could provide methods to mix-in these new config requirements with less code needing to change (wrap the vite config.ts file's default exports with a function that mixes in the functionality).

Now that I've done the work it's not that bad, but it's annoying for sure to see this framework-type code moved into client-land.

@sparecycles
Copy link

sparecycles commented Apr 22, 2024

@GitMurf Okay, I did the thing.

forge-7.3.0-rewrite-esm-support:./vite.base.config.ts should be a shim that helps people migrate.

Copy-paste that file into the project, and then try taking whatever your existing configs are and wrap them with the appropriate extendMainConfig(), extendPreloadConfig() or extendRendererConfig() wrappers. (these accept all 4 possible forms of configs, objects, functions, promises, and async functions, and will mix in what the vite.base.config and templates currently have).

the only non-trivial (non extendMainConfig({}) and extendPreloadConfig({})) in this example is

export default extendRendererConfig({
  plugins: [svelte({})],
});

because svelte!

I've only tested this with package.json type=module because svelte requires it. If anyone can do the legwork to validate this solution is stable in a commonjs/other-framework package, that would be great.

Thanks for the nudge, I feel like I can finally update my actual project now!

@Ben-Avrahami @boldt this may be easier to apply for you.

EDIT: oof, it appears that I didn't test preload. It seems to be imported by require in electron and therefore needs to be a .cjs file when package.json type=module.

@caoxiemeihao
Copy link
Member

caoxiemeihao commented Apr 22, 2024

Personally, the way this "migration" is being handled makes me want to run for the hills. I don't think it is acceptable that an upgrade from 7.2 to 7.3 breaks my code, without any warning. The reason I am using something like forge in the first place is because I don't want to look below the abstraction that covers all the messy details.

You only see that there is an increase in template code for v7.3.0, and you have overlooked what the approach of v7.3.0 brings and what incompatible aspects of Forge itself have been avoided.

  1. The release speed of Vite is very fast, and Forge will not release a new version immediately due to a version update of Vite.
  2. The modern development experience of hot-restart and hot-reload is very popular in electron-vite and tauri, but implementing this feature in Forge without authorization can damage Forge's own design. It's simply impossible to advance.
  3. It is not possible to directly use {"type": "module"} in the package. json of @electron-forge/plugin-vite, which is fatal for frameworks like svelte, as Forge itself is built in the format of CommonsJS(tsconfig. json) and cannot risk switching to ESNext entirely due to the vite-template.
  4. Vite itself was not designed for Electron and does not even support Node.js construction. Forge exposes the configuration, which is beneficial for users to update the Vite version in a timely manner without waiting for Forge's version update, and it can also more conveniently fix some unknown BUG.

BTW, if you feel that there is too much @electron-forge/template-vite code, it is recommended that you use electron-vite(even without a separate config file, really simplify) or other frameworks.

@sparecycles
Copy link

@caoxiemeihao

Maybe extending the data in forge.config.ts with a flag that allows users to opt into the new template requirements (dropping functionality within forge in favor of providing it in the application) would have been a better route? It would provide the flexibility you're looking for without unpaving the path that everyone else is on. Not everyone needs to be on the latest version of vite not-yet-supported-by-forge!!!

e.g.,

    new VitePlugin({
      baseless: true, // basic configuration will be provided by application instead
      build: [
        {
          entry: "electron/main.ts",
          config: "vite.main.config.ts",
        },
        {
          entry: "electron/preload.ts",
          config: "vite.preload.config.ts",
        },
      ],
      renderer: [
        {
          name: "main_window",
          config: "vite.renderer.config.ts",
        },
      ],
    })

Forge could make that flag the default in a major version release: that's when people expect there to be breaking changes, meanwhile anyone not able to extend their templates is blocked from updating their forge minor version for any other reason!

Maybe the electron/forge maintainers can join this conversation? Are @erickzhao @VerteDinde slackers? (oh yes, yes they are.)

@sparecycles
Copy link

It is not possible to directly use {"type": "module"} in the package.json of @electron-forge/plugin-vite, which is fatal for frameworks like svelte, as Forge itself is built in the format of CommonsJS(tsconfig. json) and cannot risk switching to ESNext entirely due to the vite-template.

it is possible to use {"type": "module"} in the package.json of application. And svelte works fine:
https://github.com/sparecycles/vite-svelte-tailwind-electron/tree/forge-7.2.0-esm (now without the .vite/build/package.json commonjs hack)

@phlegmaticprogrammer
Copy link

phlegmaticprogrammer commented Apr 22, 2024

BTW, if you feel that there is too much Forge template code, it is recommended that you use electron-vite(even without a separate config file, really simplify) or other frameworks.

I don't even know what you mean by "template code" (I guess I will have to find out now), so I don't care if there is much of it or not. All I care about is that I can use TypeScript to write a desktop app, and hot reload is nice (although that feature seems limited, as server code doesn't hot reload, it seems). That's about the level of abstraction I want to think about here. Unfortunately, that approach does not seem viable (it seemed to be, until 7.2 -> 7.3 came along), so this "talent" needs to dig deeper into the mess now.

@GitMurf
Copy link

GitMurf commented Apr 22, 2024

@caoxiemeihao I am fairly well versed in forge and vite but there is so much conversation here (and in other gh issues) about what needs to be patched where and what forge version and running migration scripts etc etc that I am confused and a bit lost.

Is it possible that you publish a minimal working template repo that has everything we need with forge 7.4 to work with forge-vite-typescript and ESM (type: module)? Basically what the vite typescript template should do (but it sounds like there are reasons why the template can't work or something?).

I just think we need some "official" docs / direction that will also be maintained / supported by forge long term otherwise it will turn into a maintenance nightmare. Thanks!

@sparecycles
Copy link

I know the changes I need to get my example repo into a fully working state with forget-7.4.0 (support preload as well), I don't know if anyone is interested in a random person's GLWTSPL solution...

@VerteDinde
Copy link
Member

Hey folks, sorry for our delay - we spoke about this in a maintainer meeting today. We're deciding on a path forward, but wanted to briefly update the issue letting you know that there are currently eyes on this and we should be reporting back with fixes shortly.

@GitMurf
Copy link

GitMurf commented Apr 23, 2024

Ok I think I finally understand the issue. Am I correct that there were changes to the forge vite plugin that required changes to the vite configs? And those changes are part of the forge vite template? But the problem is on existing projects, the templates do not update as it is just starter template code. So for a brand new project, it would work, but for existing projects, you have to manually copy changes that were made to the vite configs that are available in the template?

@MarshallOfSound
Copy link
Member

@GitMurf That is my understanding 👍 As @VerteDinde mentioned above we're looking into options here, the issue is the breaking change is bidirectional. i.e. straight up reverting won't help because then new apps will be broken in the opposite way to old apps. Right now you should pin to a version of forge that works for your app, and we'll figure out how to make a way forward to higher forge versions.

@GitMurf
Copy link

GitMurf commented Apr 23, 2024

That is my understanding 👍

Thank you @MarshallOfSound for your quick response... I feel better that I at least understand the problem now :) if/when you need testers, let me know.

@sparecycles
Copy link

straight up reverting won't help because then new apps will be broken in the opposite way to old apps.

I'm not sure about that. If the missing configuration is left in the template and restored to the plugin, the duplicated configuration should mostly merge back together. 🤞 ❔

noah10 added a commit to EmotionCognitionLab/factorial-design-breathing-study that referenced this issue May 3, 2024
That led to this problem: electron/forge#3506
and this problem: electron/forge#3208
Fixing those led to changes in logger build,
which required updates in downstream code
@caoxiemeihao caoxiemeihao linked a pull request Jul 1, 2024 that will close this issue
5 tasks
@boldt
Copy link

boldt commented Aug 21, 2024

It's half a year later now. Meanwhile, electron-forge 7.4.0 was released and this problem still exists.
Any update on how to migrate from electron-forge 7.2.0 to electron-forge 7.4.0 (vite+ts)?

@erickzhao erickzhao unpinned this issue Sep 20, 2024
Brooooooklyn referenced this issue 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=-->
@adidahiya
Copy link

Thanks for fixing this in #3583! I can finally upgrade electron-forge in my project 🙏🏽

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

Successfully merging a pull request may close this issue.