Repository: gravitational/teleport
Pull request #53610: Bump Node.js (v22) and Electron (v35), remove manual install of corepack from build scripts
Author: login: dependabot[bot]
Labels: name: ui
name: dependencies
description: Pull requests that update a dependency file
name: no-changelog
description: Indicates that a PR does not require a changelog entry
name: backport/branch/v17
Created: 2025-04-01T09:25:58Z | Merged: 2025-04-14T14:44:11Z

teleport.e buddy PR: https://github.com/gravitational/teleport.e/pull/6322

This PR updates Electron and thus Node.js of our project as well as other Electron-related deps. This lets us remove the workaround for corepack introduced in #51761 and #51819.

It also changes the behavior of pnpm so that it does not install missing peer deps by default. This shouldn't have impact on the existing code while at the same time it removes unnecessary deps from our lockfile. See https://github.com/gravitational/teleport/pull/53610#discussion_r2029115822 for more details.

Closes #51796.

[Working tag builds](https://github.com/gravitational/teleport/pull/53610#discussion_r2030802109)

<details>
<summary>The original dependabot message</summary>

Bumps the electron group with 3 updates: [electron](https://github.com/electron/electron), [electron-builder](https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder) and [electron-vite](https://github.com/alex8088/electron-vite).

Updates `electron` from 34.3.0 to 35.1.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/electron/electron/releases">electron's releases</a>.</em></p>
<blockquote>
<h2>electron v35.1.2</h2>
<h1>Release Notes for v35.1.2</h1>
<h2>Fixes</h2>
<ul>
<li>Fixed an issue where <code>navigationHistory.restore()</code> failed to restore the <code>userAgent</code> if it was overridden. <a href="https://redirect.github.com/electron/electron/pull/46300">#46300</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/46298">34</a>, <a href="https://redirect.github.com/electron/electron/pull/46299">36</a>)<!-- raw HTML omitted --></li>
</ul>
<h2>Other Changes</h2>
<ul>
<li>Security: backported fix for CVE-2025-2783. <a href="https://redirect.github.com/electron/electron/pull/46303">#46303</a></li>
<li>Updated Chromium to 134.0.6998.178. <a href="https://redirect.github.com/electron/electron/pull/46287">#46287</a></li>
</ul>
<h2>electron v35.1.1</h2>
<h1>Release Notes for v35.1.1</h1>
<h2>Fixes</h2>
<ul>
<li>Fixed build failure when building with printing disabled. <a href="https://redirect.github.com/electron/electron/pull/46285">#46285</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/46286">34</a>, <a href="https://redirect.github.com/electron/electron/pull/46284">36</a>)<!-- raw HTML omitted --></li>
</ul>
<h2>electron v35.1.0</h2>
<h1>Release Notes for v35.1.0</h1>
<h2>Features</h2>
<ul>
<li>Added <code>ffmpeg.dll</code> to delay load configuration. <a href="https://redirect.github.com/electron/electron/pull/46172">#46172</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/46174">34</a>, <a href="https://redirect.github.com/electron/electron/pull/46173">36</a>)<!-- raw HTML omitted --></li>
</ul>
<h2>Fixes</h2>
<ul>
<li>Fixed NODE_OPTIONS parsing for child processes on macOS. <a href="https://redirect.github.com/electron/electron/pull/46244">#46244</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/46242">34</a>, <a href="https://redirect.github.com/electron/electron/pull/46243">36</a>)<!-- raw HTML omitted --></li>
<li>Fixed a crash seen on Linux when calling <code>webContents.print()</code>. <a href="https://redirect.github.com/electron/electron/pull/46147">#46147</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/46146">36</a>)<!-- raw HTML omitted --></li>
<li>Fixed an issue where <code>system-context-menu</code>  incorrectly fired for all regions in frameless windows. <a href="https://redirect.github.com/electron/electron/pull/46178">#46178</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/46025">33</a>, <a href="https://redirect.github.com/electron/electron/pull/46175">34</a>, <a href="https://redirect.github.com/electron/electron/pull/46002">36</a>)<!-- raw HTML omitted --></li>
<li>Fixed an issue where <code>webContents.printToPDF()</code> didn't work as expected with cross-process subframes. <a href="https://redirect.github.com/electron/electron/pull/46257">#46257</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/46258">34</a>, <a href="https://redirect.github.com/electron/electron/pull/46259">36</a>)<!-- raw HTML omitted --></li>
<li>Fixed an issue where the resizing border didn't work as expected on Wayland windows. <a href="https://redirect.github.com/electron/electron/pull/46224">#46224</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/46222">33</a>, <a href="https://redirect.github.com/electron/electron/pull/46223">34</a>, <a href="https://redirect.github.com/electron/electron/pull/46225">36</a>)<!-- raw HTML omitted --></li>
<li>Fixed an issue with token formatting for tokens received after calling <code>pushNotifications.registerForAPNSNotifications()</code>. <a href="https://redirect.github.com/electron/electron/pull/46148">#46148</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/46150">34</a>, <a href="https://redirect.github.com/electron/electron/pull/46149">36</a>)<!-- raw HTML omitted --></li>
<li>Fixed crash on Linux when PipeWire screenshare source selection is cancelled. <a href="https://redirect.github.com/electron/electron/pull/46234">#46234</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/46235">36</a>)<!-- raw HTML omitted --></li>
<li>Fixed crash with out-of-bounds string read when parsing NODE_OPTIONS. <a href="https://redirect.github.com/electron/electron/pull/46248">#46248</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/46246">34</a>, <a href="https://redirect.github.com/electron/electron/pull/46247">36</a>)<!-- raw HTML omitted --></li>
</ul>
<h2>Other Changes</h2>
<ul>
<li>Improved performance of desktopCapturer.getSources when not requesting thumbnails on macOS. <a href="https://redirect.github.com/electron/electron/pull/46249">#46249</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/46250">34</a>, <a href="https://redirect.github.com/electron/electron/pull/46251">36</a>)<!-- raw HTML omitted --></li>
<li>Updated Chromium to 134.0.6998.165. <a href="https://redirect.github.com/electron/electron/pull/46196">#46196</a></li>
</ul>
<h2>electron v35.0.3</h2>
<h1>Release Notes for v35.0.3</h1>
<h2>Fixes</h2>
<ul>
<li>Fixed an issue where snapped windows in Windows may sometimes be improperly restored. <a href="https://redirect.github.com/electron/electron/pull/46040">#46040</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/46038">33</a>, <a href="https://redirect.github.com/electron/electron/pull/46039">34</a>, <a href="https://redirect.github.com/electron/electron/pull/46041">36</a>)<!-- raw HTML omitted --></li>
<li>Fixed incorrect titlebar in file save dialogs. <a href="https://redirect.github.com/electron/electron/pull/46074">#46074</a> <!-- raw HTML omitted -->(Also in <a href="https://redirect.github.com/electron/electron/pull/46075">33</a>, <a href="https://redirect.github.com/electron/electron/pull/46076">34</a>, <a href="https://redirect.github.com/electron/electron/pull/46077">36</a>)<!-- raw HTML omitted --></li>
</ul>
<h2>Documentation</h2>
<ul>
<li>Documentation changes: <a href="https://redirect.github.com/electron/electron/pull/46102">#46102</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/electron/electron/commit/39cbd0c27c6cb58e3bc3858b7ff7c9976e3910c9"><code>39cbd0c</code></a> chore: reconcile Chrome roll patches (<a href="https://redirect.github.com/electron/electron/issues/46314">#46314</a>)</li>
<li><a href="https://github.com/electron/electron/commit/cd5da1b933f8b818b6f40e437e7e344043dcb84a"><code>cd5da1b</code></a> perf: avoid redundant map lookup in <code>WebContents::DevToolsIndexPath()</code> (<a href="https://redirect.github.com/electron/electron/issues/46296">#46296</a>)</li>
<li><a href="https://github.com/electron/electron/commit/3023f14bddda07300e7aa05d32d48f1e68611b58"><code>3023f14</code></a> perf: avoid <code>std::map</code> temporaries  in `WebContents::DevToolsRequestFileSyste...</li>
<li><a href="https://github.com/electron/electron/commit/fe445869ca62923f41ed670b50193252a38d3343"><code>fe44586</code></a> fix: set <code>userAgent</code> on <code>navigationHistory.restore()</code> (<a href="https://redirect.github.com/electron/electron/issues/46300">#46300</a>)</li>
<li><a href="https://github.com/electron/electron/commit/f9164968d684a31fae1f4ebc488d8e9f2c89caf5"><code>f916496</code></a> chore: bump chromium to 134.0.6998.178 (35-x-y) (<a href="https://redirect.github.com/electron/electron/issues/46287">#46287</a>)</li>
<li><a href="https://github.com/electron/electron/commit/e0014f507f065f4ac9f303a418e87c4bd71f10f3"><code>e0014f5</code></a> perf: avoid redundant map lookup in <code>AddComponentResourceEntries()</code> (<a href="https://redirect.github.com/electron/electron/issues/46288">#46288</a>)</li>
<li><a href="https://github.com/electron/electron/commit/44afb48112cb2b125ed0851affd91822dd90e16f"><code>44afb48</code></a> chore: cherry-pick 1 changes from 3-M134 (<a href="https://redirect.github.com/electron/electron/issues/46303">#46303</a>)</li>
<li><a href="https://github.com/electron/electron/commit/6e112a8410dd90ffa83f8f713b69204ac77aa9da"><code>6e112a8</code></a> fix: build failure when printing is disabled (<a href="https://redirect.github.com/electron/electron/issues/46285">#46285</a>)</li>
<li><a href="https://github.com/electron/electron/commit/c6c67208d204878ff2d923c5e247102f76afb193"><code>c6c6720</code></a> refactor: add <code>ElectronBrowserContext::GetDefaultBrowserContext()</code> (<a href="https://redirect.github.com/electron/electron/issues/46085">#46085</a>)</li>
<li><a href="https://github.com/electron/electron/commit/a3ba653bee175f5b7640b2af2a8d259ffa1cae59"><code>a3ba653</code></a> perf: avoid redundant map lookup in <code>WebFrameMain</code> constructor (<a href="https://redirect.github.com/electron/electron/issues/46275">#46275</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/electron/electron/compare/v34.3.0...v35.1.2">compare view</a></li>
</ul>
</details>
<br />

Updates `electron-builder` from 25.1.8 to 26.0.12
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/electron-userland/electron-builder/blob/master/packages/electron-builder/CHANGELOG.md">electron-builder's changelog</a>.</em></p>
<blockquote>
<h2>26.0.12</h2>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a href="https://github.com/electron-userland/electron-builder/commit/2d25ec8ca9ff6dfc634323b7592335b0631f4e47"><code>2d25ec8c</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/7ba4fea95825650f02749949632b351c75d3019a"><code>7ba4fea9</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/81e0c472fe2691b716aba5428dedc5da1c57e773"><code>81e0c472</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/f24a2ce05cfbc88b79c1d743d13c898d70be99df"><code>f24a2ce0</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/ad151b9dbefa746514dd15471e5ef8bf5eed1d9b"><code>ad151b9d</code></a>]:
<ul>
<li>app-builder-lib@26.0.12</li>
<li>dmg-builder@26.0.12</li>
</ul>
</li>
</ul>
<h2>26.0.11</h2>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a href="https://github.com/electron-userland/electron-builder/commit/14b96dfcbb7e4fd114169c35b50932bf5777fcf1"><code>14b96dfc</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/53a81939b8c46061027ab36d8f9114c35b250a7e"><code>53a81939</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/70d7c855360eb66b429f67a976709a52ce193a59"><code>70d7c855</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/e1ea62b0029c4adca20196ef060948777caeac37"><code>e1ea62b0</code></a>]:
<ul>
<li>app-builder-lib@26.0.11</li>
<li>builder-util@26.0.11</li>
<li>dmg-builder@26.0.11</li>
</ul>
</li>
</ul>
<h2>26.0.10</h2>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a href="https://github.com/electron-userland/electron-builder/commit/3ce33edbe0c809a8a3834577a8df41ba58ae9003"><code>3ce33edb</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/3caab3c4226a73ab458ac5a315aff160c5500b94"><code>3caab3c4</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/8903c5df046b74411f3b1fa958cef9a5955d01ef"><code>8903c5df</code></a>]:
<ul>
<li>app-builder-lib@26.0.10</li>
<li>dmg-builder@26.0.10</li>
</ul>
</li>
</ul>
<h2>26.0.9</h2>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a href="https://github.com/electron-userland/electron-builder/commit/22da64425182456eb4d1243138dde27c80d6adac"><code>22da6442</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/4cc475ed214861b99075d4639c92686803420174"><code>4cc475ed</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/62029b08c10a6b12d8ef30bf57ae61a877f297f4"><code>62029b08</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/67b6f71f85798dba4ce51dfb2cd012e04cd391db"><code>67b6f71f</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/6918431560c6c4621e0dccf72b461872b74462ac"><code>69184315</code></a>]:
<ul>
<li>app-builder-lib@26.0.9</li>
<li>dmg-builder@26.0.9</li>
</ul>
</li>
</ul>
<h2>26.0.8</h2>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a href="https://github.com/electron-userland/electron-builder/commit/7f6c3fea6fea8cffa00a43413f5335097aca94b0"><code>7f6c3fea</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/48c9f88b185cbc4a52926e6e10791bf293ecda6f"><code>48c9f88b</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/7f6c3fea6fea8cffa00a43413f5335097aca94b0"><code>7f6c3fea</code></a>]:
<ul>
<li>app-builder-lib@26.0.8</li>
<li>dmg-builder@26.0.8</li>
</ul>
</li>
</ul>
<h2>26.0.7</h2>
<h3>Patch Changes</h3>
<ul>
<li>Updated dependencies [<a href="https://github.com/electron-userland/electron-builder/commit/c12f86f2e254809e70d1f60d89cf9b7264278083"><code>c12f86f2</code></a>, <a href="https://github.com/electron-userland/electron-builder/commit/3fe27d77587a05a7d568b3b21f1df8f0a1650c92"><code>3fe27d77</code></a>]:
<ul>
<li>builder-util@26.0.7</li>
<li>app-builder-lib@26.0.7</li>
<li>dmg-builder@26.0.7</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/electron-userland/electron-builder/commit/44c5265a9260ca6f319f111b5a2ca7e50b0a7cd6"><code>44c5265</code></a> chore(deploy): Release v26.0.12 (<a href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/8949">#8949</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/e4d00c65b59343cc07e190469b4947d0fb352171"><code>e4d00c6</code></a> chore(deploy): Release v26.0.11 (electron-updater@6.6.2) (<a href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/8930">#8930</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/3792826eae780a2872cfaba82a539d78d7069ba3"><code>3792826</code></a> chore(deploy): Release v26.0.10 (electron-updater@6.6.1) (<a href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/8912">#8912</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/ea86783728e5f59ac9625cd34dbc3c92a9d6f8fc"><code>ea86783</code></a> chore(deploy): Release v26.0.9 (<a href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/8891">#8891</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/d26efc08bb717dfa3fc5a8ebaa82c91585dc5035"><code>d26efc0</code></a> chore(deploy): Release v26.0.8 (<a href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/8878">#8878</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/48c9f88b185cbc4a52926e6e10791bf293ecda6f"><code>48c9f88</code></a> feat: allow usage of <code>.cjs</code>, <code>.mjs</code>, and <code>type=module</code> custom publishers. Add...</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/9bca417a8c27facb289dac2cfcbb4ef1c111090f"><code>9bca417</code></a> chore(deploy): Release v26.0.7 (electron-updater@6.6.0) (<a href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/8866">#8866</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/f4fc04acf3f206f01a5cf3030ff89684f136a0c0"><code>f4fc04a</code></a> chore(deploy): Release v26.0.6 (<a href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/8848">#8848</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/e0c1a1910655149f2edaaf67b8898e2217522fa9"><code>e0c1a19</code></a> chore(deploy): Release v26.0.5 (<a href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/8847">#8847</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/6ac8f91de822f0dce0b5e538c20e8480bb723bc7"><code>6ac8f91</code></a> chore(deploy): Release v26.0.4 (<a href="https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder/issues/8840">#8840</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/electron-userland/electron-builder/commits/v26.0.12/packages/electron-builder">compare view</a></li>
</ul>
</details>
<br />

Updates `electron-vite` from 3.0.0 to 3.1.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/alex8088/electron-vite/releases">electron-vite's releases</a>.</em></p>
<blockquote>
<h2>v3.1.0</h2>
<p>Please refer to <a href="https://github.com/alex8088/electron-vite/blob/v3.1.0/CHANGELOG.md">CHANGELOG.md</a> for details.</p>
<h2>v3.1.0-beta.0</h2>
<p>Please refer to <a href="https://github.com/alex8088/electron-vite/blob/v3.1.0-beta.0/CHANGELOG.md">CHANGELOG.md</a> for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/alex8088/electron-vite/blob/master/CHANGELOG.md">electron-vite's changelog</a>.</em></p>
<blockquote>
<h3>v3.1.0 (<em>2025-03-25</em>)</h3>
<ul>
<li>fix(bytecodePlugin): optimize 'use strict' directive replacement (<a href="https://redirect.github.com/alex8088/electron-vite/issues/681">#681</a>)</li>
<li>perf: build compatilibity target for Electron 35 (<a href="https://redirect.github.com/alex8088/electron-vite/pull/729">#729</a>)</li>
<li>chore(deps): update all non-major dependencies</li>
<li>chore(deps): update globals to v16</li>
<li>chore(deps): update esbuild to v0.25</li>
</ul>
<h3>v3.1.0-beta.0 (<em>2025-03-12</em>)</h3>
<p>See <a href="https://github.com/alex8088/electron-vite/blob/v3.1.0-beta.0/CHANGELOG.md">v3.1.0-beta.0 changelog</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/alex8088/electron-vite/commit/1b411d36335bed23505b00c277e4425e66b685d7"><code>1b411d3</code></a> release: v3.1.0</li>
<li><a href="https://github.com/alex8088/electron-vite/commit/b56d3c2d21563e8ac10506e916d22ee43eab4044"><code>b56d3c2</code></a> fix(bytecodePlugin): optimize 'use strict' directive replacement (<a href="https://redirect.github.com/alex8088/electron-vite/issues/681">#681</a>)</li>
<li><a href="https://github.com/alex8088/electron-vite/commit/f2eff25268eef578b140859336b1c169e441210e"><code>f2eff25</code></a> release: v3.1.0-beta.0</li>
<li><a href="https://github.com/alex8088/electron-vite/commit/2d8e513e07b9bfc446035a27904931bb0e4cc772"><code>2d8e513</code></a> chore(deps): update esbuild to v0.25</li>
<li><a href="https://github.com/alex8088/electron-vite/commit/d8063320dc78018c38d1a557fc5f1e957dfcff81"><code>d806332</code></a> chore(deps): update globals to v16</li>
<li><a href="https://github.com/alex8088/electron-vite/commit/f33c5b2abeffb5cb6ba5654245137efe66530ca7"><code>f33c5b2</code></a> chore(deps): update all non-major dependencies</li>
<li><a href="https://github.com/alex8088/electron-vite/commit/e91e70c10566f6f85d98bcf0964f90a77010b79d"><code>e91e70c</code></a> Merge pull request <a href="https://redirect.github.com/alex8088/electron-vite/issues/729">#729</a> from jonz94/electron-35</li>
<li><a href="https://github.com/alex8088/electron-vite/commit/ea144aef195f3b73947551f313af6513921698f5"><code>ea144ae</code></a> perf: build compatibility target for Electron 35</li>
<li>See full diff in <a href="https://github.com/alex8088/electron-vite/compare/v3.0.0...v3.1.0">compare view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions


</details>
</details>

Linked issue #51796: Builds fail due to corepack `Cannot find matching keyid`
Builds across all branches are failing with:
```
Error: Cannot find matching keyid: {"signatures":[{"sig":"MEQCIHGqHbvc2zImUPEPFpT4grh6rMYslel+lAjFArx8+RUdAiBfnJA+bgmUvO5Lctfkq+46KKDQdx/8RhLPge3pA+EdHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"keys":[{"expires":null,"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","keytype":"ecdsa-sha2-nistp256","scheme":"ecdsa-sha2-nistp256","key":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1Olb3zMAFFxXKHiIkQO5cJ3Yhl5i6UPp+IhuteBJbuHcA5UogKo0EWtlWwW6KSaKoTNEYL7JlCQiVnkhBktUgg=="}]}
```

This affects all build steps for Teleport binaries.

Example workflows:
* https://github.com/gravitational/teleport.e/actions/runs/13111574965/job/36576508081

Related issues:
* Upstream: https://github.com/pnpm/pnpm/issues/9029

Fix PRs:
* https://github.com/gravitational/teleport/pull/51761
* https://github.com/gravitational/teleport/pull/51769
* https://github.com/gravitational/teleport/pull/51768
Linked issue comments: user: login: fheinecke
created_at: 2025-02-03T18:50:33Z
body: Leaving this open until the dep is bumped, workaround is rolled back, and a long-term fix is merged and tested.
author_association: CONTRIBUTOR
user: login: ravicious
created_at: 2025-02-06T07:52:02Z
body: @fheinecke Could you take a look at https://github.com/gravitational/teleport/pull/51819 and https://github.com/gravitational/teleport.e/pull/6008?
author_association: MEMBER
user: login: ravicious
created_at: 2025-02-11T14:39:36Z
body: #51819 is now merged and backported to relevant release branches.
author_association: MEMBER
user: login: zmb3
created_at: 2025-03-14T08:37:55Z
body: Anything else we need to do in order to close this issue?
author_association: COLLABORATOR
user: login: fheinecke
created_at: 2025-03-14T17:46:24Z
body: > Anything else we need to do in order to close this issue?

The hard-coded key needs to be removed from Windows once node.js is updated. It looks like the latest v20 release has corepack v0.31.0, so I think the node version just needs to be bumped, and we'll be good to remove the key.
author_association: CONTRIBUTOR
user: login: zmb3
created_at: 2025-03-16T15:46:38Z
body: Wasn't that already done here? 

https://github.com/gravitational/teleport/pull/51819/files#diff-aca3f4d5804730a988fe80ce6a1114b043209e05095c5991a50066d3571f36c5R147

Edit: I see it was reverted shortly after in #52054.
author_association: COLLABORATOR
user: login: ravicious
created_at: 2025-03-17T09:56:14Z
body: The next major version upgrade of Electron to v35 will require us to bump Node to v22.14.0 which also has corepack 0.31.0. dependabot is going to create a PR in two weeks, so I'd wait for that if there are no objections.
author_association: MEMBER

Diff:
diff --git a/.github/workflows/build-macos.yaml b/.github/workflows/build-macos.yaml
index 2b80c200e1c6d..eb1fda488d213 100644
--- a/.github/workflows/build-macos.yaml
+++ b/.github/workflows/build-macos.yaml
@@ -56,7 +56,6 @@ jobs:
 
       - name: Setup pnpm
         run: |
-          npm install -g corepack@0.31.0
           corepack enable pnpm
 
       - name: Install Go Toolchain
diff --git a/.github/workflows/lint-ui.yaml b/.github/workflows/lint-ui.yaml
index 9d27b06d53296..bcb1878dd86b2 100644
--- a/.github/workflows/lint-ui.yaml
+++ b/.github/workflows/lint-ui.yaml
@@ -41,7 +41,6 @@ jobs:
 
       - name: Install JS dependencies
         run: |
-          npm install -g corepack@0.31.0
           pnpm install --frozen-lockfile
 
       - name: Build WASM
diff --git a/.github/workflows/unit-tests-ui.yaml b/.github/workflows/unit-tests-ui.yaml
index ce79de89d039c..1ef82e17764e9 100644
--- a/.github/workflows/unit-tests-ui.yaml
+++ b/.github/workflows/unit-tests-ui.yaml
@@ -48,7 +48,6 @@ jobs:
 
       - name: Install JS dependencies
         run: |
-          npm install -g corepack@0.31.0
           pnpm install --frozen-lockfile
 
       - name: Build WASM
diff --git a/build.assets/Dockerfile b/build.assets/Dockerfile
index 35bd97ed65674..7926786363285 100644
--- a/build.assets/Dockerfile
+++ b/build.assets/Dockerfile
@@ -245,7 +245,7 @@ RUN export NODE_ARCH=$(if [ "$BUILDARCH" = "amd64" ]; then echo "x64"; else echo
     mkdir -p ${NODE_PATH} && \
     curl -o /tmp/nodejs.tar.xz -fsSL ${NODE_URL} && \
     tar -xJf /tmp/nodejs.tar.xz -C /usr/local/lib/nodejs-linux --strip-components=1
-RUN npm install -g corepack@0.31.0 && corepack enable yarn pnpm
+RUN corepack enable yarn pnpm
 
 # Install Go.
 ARG GOLANG_VERSION
diff --git a/build.assets/Dockerfile-arm b/build.assets/Dockerfile-arm
index ece5d25fb3034..24ae7e6715589 100644
--- a/build.assets/Dockerfile-arm
+++ b/build.assets/Dockerfile-arm
@@ -57,7 +57,7 @@ RUN NODE_ARCH="$(if [ "$BUILDARCH" = 'amd64' ]; then echo 'x64'; else echo 'arm6
     curl -o "$NODE_FILE" -fsSL "$NODE_URL" && \
     tar -xJf "$NODE_FILE" -C /usr/local/lib/nodejs-linux --strip-components=1 && \
     rm -f "$NODE_FILE"
-RUN npm install -g corepack@0.31.0 && corepack enable yarn pnpm
+RUN corepack enable yarn pnpm
 
 # Install Go.
 ARG GOLANG_VERSION
diff --git a/build.assets/Dockerfile-node b/build.assets/Dockerfile-node
index bf869b222ec67..59a3100c80e1e 100644
--- a/build.assets/Dockerfile-node
+++ b/build.assets/Dockerfile-node
@@ -21,7 +21,7 @@ FROM node:${NODE_VERSION}-bullseye AS buildbox
 # https://docs.docker.com/engine/reference/builder/#automatic-platform-args-in-the-global-scope
 ARG BUILDARCH
 
-RUN npm install -g corepack@0.31.0 && corepack enable pnpm
+RUN corepack enable pnpm
 
 COPY locale.gen /etc/locale.gen
 COPY profile /etc/profile
diff --git a/build.assets/versions.mk b/build.assets/versions.mk
index 74996ea3f3c16..ef7781844613a 100644
--- a/build.assets/versions.mk
+++ b/build.assets/versions.mk
@@ -7,10 +7,7 @@ GOLANG_VERSION ?= go1.24.2
 GOLANGCI_LINT_VERSION ?= v1.64.7
 
 # NOTE: Remember to update engines.node in package.json to match the major version.
-# TODO(ravicious): When updating Node.js, see if corepack distributed with the new Node.JS version
-# is >= 0.31.0. If so, remove manual calls to install corepack@0.31.0 from CI scripts and
-# COREPACK_INTEGRITY_KEYS env var from windows/build.ps1.
-NODE_VERSION ?= 20.18.0
+NODE_VERSION ?= 22.14.0
 
 # Run lint-rust check locally before merging code after you bump this.
 RUST_VERSION ?= 1.81.0
diff --git a/build.assets/windows/build.ps1 b/build.assets/windows/build.ps1
index 3caf2f6ef5f11..adfb782e79fb5 100644
--- a/build.assets/windows/build.ps1
+++ b/build.assets/windows/build.ps1
@@ -144,7 +144,6 @@ function Install-Node {
         Expand-Archive -Path $NodeZipfile -DestinationPath $ToolchainDir
         Rename-Item -Path "$ToolchainDir/node-v$NodeVersion-win-x64" -NewName "$ToolchainDir/node"
         Enable-Node -ToolchainDir $ToolchainDir
-        $Env:COREPACK_INTEGRITY_KEYS = '{"npm":[{"expires":"2025-01-29T00:00:00.000Z","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","keytype":"ecdsa-sha2-nistp256","scheme":"ecdsa-sha2-nistp256","key":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1Olb3zMAFFxXKHiIkQO5cJ3Yhl5i6UPp+IhuteBJbuHcA5UogKo0EWtlWwW6KSaKoTNEYL7JlCQiVnkhBktUgg=="},{"expires":null,"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","keytype":"ecdsa-sha2-nistp256","scheme":"ecdsa-sha2-nistp256","key":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEY6Ya7W++7aUPzvMTrezH6Ycx3c+HOKYCcNGybJZSCJq/fd7Qa8uuAKtdIkUQtQiEKERhAmE5lMMJhP8OkDOa2g=="}]}'
         corepack enable pnpm
         Write-Host "::endgroup::"
     }
diff --git a/package.json b/package.json
index ded481747d379..9f7479587db7c 100644
--- a/package.json
+++ b/package.json
@@ -30,8 +30,7 @@
   "private": true,
   "pnpm": {
     "overrides": {
-      "jsdom@^20.0.3>nwsapi@^2": "2.2.9",
-      "electron-vite@^3.0.0>esbuild@0.24.2": "^0.25.0"
+      "jsdom@^20.0.3>nwsapi@^2": "2.2.9"
     }
   },
   "devDependencies": {
@@ -50,7 +49,7 @@
     "@testing-library/user-event": "^14.6.1",
     "@types/history": "^4.7.11",
     "@types/jest": "^29.5.14",
-    "@types/node": "^20.17.29",
+    "@types/node": "^22.14.0",
     "@types/react": "^18.3.12",
     "@types/react-dom": "^18.3.1",
     "@types/react-highlight": "^0.12.8",
@@ -63,7 +62,7 @@
     "jsdom-testing-mocks": "^1.13.1",
     "msw": "^2.7.3",
     "msw-storybook-addon": "^2.0.4",
-    "node-gyp": "11.0.0",
+    "node-gyp": "^11.2.0",
     "playwright": "^1.51.1",
     "prettier": "^3.5.3",
     "react-select-event": "^5.5.1",
@@ -111,6 +110,6 @@
   },
   "packageManager": "pnpm@10.7.0+sha512.6b865ad4b62a1d9842b61d674a393903b871d9244954f652b8842c2b553c72176b278f64c463e52d40fff8aba385c235c8c9ecf5cc7de4fd78b8bb6d49633ab6",
   "engines": {
-    "node": "^20"
+    "node": "^22"
   }
 }
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e207aefa4e1e8..05a58074cc137 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,12 +1,11 @@
 lockfileVersion: '9.0'
 
 settings:
-  autoInstallPeers: true
+  autoInstallPeers: false
   excludeLinksFromLockfile: false
 
 overrides:
   jsdom@^20.0.3>nwsapi@^2: 2.2.9
-  electron-vite@^3.0.0>esbuild@0.24.2: ^0.25.0
 
 pnpmfileChecksum: sha256-UhbfH9wqbTOi0Lx+Gm0eQ8EkqLSQxYCWXAFDAbl28uo=
 
@@ -46,10 +45,10 @@ importers:
         version: 5.69.0(react@18.3.1)
       '@uiw/codemirror-themes':
         specifier: ^4.23.10
-        version: 4.23.10(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.5)
+        version: 4.23.10(@codemirror/view@6.36.5)
       '@uiw/react-codemirror':
         specifier: ^4.23.10
-        version: 4.23.10(@babel/runtime@7.27.0)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.3)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.36.5)(codemirror@6.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        version: 4.23.10(@codemirror/autocomplete@6.18.6)(@codemirror/view@6.36.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       d3-scale:
         specifier: ^4.0.2
         version: 4.0.2
@@ -134,10 +133,10 @@ importers:
         version: 8.6.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.11(prettier@3.5.3))(typescript@5.8.2)
       '@storybook/react-vite':
         specifier: ^8.6.11
-        version: 8.6.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.39.0)(storybook@8.6.11(prettier@3.5.3))(typescript@5.8.2)(vite@6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1))
+        version: 8.6.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.39.0)(storybook@8.6.11(prettier@3.5.3))(typescript@5.8.2)(vite@6.2.6(@types/node@22.14.0)(yaml@2.7.1))
       '@storybook/test-runner':
         specifier: ^0.22.0
-        version: 0.22.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0)(storybook@8.6.11(prettier@3.5.3))
+        version: 0.22.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0)(storybook@8.6.11(prettier@3.5.3))
       '@testing-library/jest-dom':
         specifier: ^6.6.3
         version: 6.6.3
@@ -154,8 +153,8 @@ importers:
         specifier: ^29.5.14
         version: 29.5.14
       '@types/node':
-        specifier: ^20.17.29
-        version: 20.17.29
+        specifier: ^22.14.0
+        version: 22.14.0
       '@types/react':
         specifier: ^18.3.12
         version: 18.3.12
@@ -182,19 +181,19 @@ importers:
         version: 8.18.1
       jest:
         specifier: ^29.7.0
-        version: 29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0)
+        version: 29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0)
       jsdom-testing-mocks:
         specifier: ^1.13.1
         version: 1.13.1
       msw:
         specifier: ^2.7.3
-        version: 2.7.3(@types/node@20.17.29)(typescript@5.8.2)
+        version: 2.7.3(@types/node@22.14.0)(typescript@5.8.2)
       msw-storybook-addon:
         specifier: ^2.0.4
-        version: 2.0.4(msw@2.7.3(@types/node@20.17.29)(typescript@5.8.2))
+        version: 2.0.4(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.2))
       node-gyp:
-        specifier: 11.0.0
-        version: 11.0.0
+        specifier: ^11.2.0
+        version: 11.2.0
       playwright:
         specifier: ^1.51.1
         version: 1.51.1
@@ -212,7 +211,7 @@ importers:
         version: 5.8.2
       vite:
         specifier: ^6.2.6
-        version: 6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1)
+        version: 6.2.6(@types/node@22.14.0)(yaml@2.7.1)
 
   e/web/teleport: {}
 
@@ -244,7 +243,7 @@ importers:
         version: 21.1.7
       '@vitejs/plugin-react-swc':
         specifier: ^3.8.1
-        version: 3.8.1(vite@6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1))
+        version: 3.8.1(vite@6.2.6(@types/node@22.14.0)(yaml@2.7.1))
       babel-plugin-styled-components:
         specifier: ^2.1.4
         version: 2.1.4(@babel/core@7.26.10)(styled-components@6.1.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
@@ -253,7 +252,7 @@ importers:
         version: 9.23.0
       eslint-plugin-jest:
         specifier: ^28.11.0
-        version: 28.11.0(@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0)(typescript@5.8.2))(eslint@9.23.0)(typescript@5.8.2))(eslint@9.23.0)(jest@29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0))(typescript@5.8.2)
+        version: 28.11.0(@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0)(typescript@5.8.2))(eslint@9.23.0)(typescript@5.8.2))(eslint@9.23.0)(jest@29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0))(typescript@5.8.2)
       eslint-plugin-jest-dom:
         specifier: ^5.5.0
         version: 5.5.0(@testing-library/dom@10.1.0)(eslint@9.23.0)
@@ -286,10 +285,10 @@ importers:
         version: 8.29.0(eslint@9.23.0)(typescript@5.8.2)
       vite-plugin-wasm:
         specifier: ^3.4.1
-        version: 3.4.1(vite@6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1))
+        version: 3.4.1(vite@6.2.6(@types/node@22.14.0)(yaml@2.7.1))
       vite-tsconfig-paths:
         specifier: ^5.1.4
-        version: 5.1.4(typescript@5.8.2)(vite@6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1))
+        version: 5.1.4(typescript@5.8.2)(vite@6.2.6(@types/node@22.14.0)(yaml@2.7.1))
 
   web/packages/design:
     dependencies:
@@ -440,8 +439,8 @@ importers:
         specifier: ^1.3.1
         version: 1.3.1
       node-pty:
-        specifier: 1.1.0-beta14
-        version: 1.1.0-beta14
+        specifier: 1.1.0-beta33
+        version: 1.1.0-beta33
       ring-buffer-ts:
         specifier: ^1.2.0
         version: 1.2.0
@@ -462,8 +461,8 @@ importers:
         version: 3.17.0
     devDependencies:
       '@electron/notarize':
-        specifier: ^2.5.0
-        version: 2.5.0
+        specifier: ^3.0.1
+        version: 3.0.1
       '@gravitational/build':
         specifier: workspace:*
         version: link:../build
@@ -492,14 +491,14 @@ importers:
         specifier: ^5.5.0
         version: 5.5.0
       electron:
-        specifier: 34.3.0
-        version: 34.3.0
+        specifier: 35.1.4
+        version: 35.1.4
       electron-builder:
-        specifier: ^25.1.8
-        version: 25.1.8(electron-builder-squirrel-windows@25.1.8)
+        specifier: ^26.0.12
+        version: 26.0.12
       electron-vite:
-        specifier: ^3.0.0
-        version: 3.0.0(@swc/core@1.11.15)(vite@6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1))
+        specifier: ^3.1.0
+        version: 3.1.0(@swc/core@1.11.15)(vite@6.2.6(@types/node@22.14.0)(yaml@2.7.1))
       events:
         specifier: 3.3.0
         version: 3.3.0
@@ -508,7 +507,7 @@ importers:
         version: 2.5.2
       react-dnd:
         specifier: ^14.0.4
-        version: 14.0.5(@types/node@20.17.29)(@types/react@18.3.12)(react@18.3.1)
+        version: 14.0.5(@types/node@22.14.0)(@types/react@18.3.12)(react@18.3.1)
       react-dnd-html5-backend:
         specifier: ^14.0.2
         version: 14.1.0
@@ -1446,26 +1445,40 @@ packages:
     resolution: {integrity: sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==}
     engines: {node: '>= 8.9.0'}
 
-  '@electron/asar@3.2.10':
-    resolution: {integrity: sha512-mvBSwIBUeiRscrCeJE1LwctAriBj65eUDm0Pc11iE5gRwzkmsdbS7FnZ1XUWjpSeQWL1L5g12Fc/SchPM9DUOw==}
+  '@electron/asar@3.2.18':
+    resolution: {integrity: sha512-2XyvMe3N3Nrs8cV39IKELRHTYUWFKrmqqSY1U+GMlc0jvqjIVnoxhNd2H4JolWQncbJi1DCvb5TNxZuI2fEjWg==}
     engines: {node: '>=10.12.0'}
     hasBin: true
 
-  '@electron/get@2.0.2':
-    resolution: {integrity: sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==}
+  '@electron/fuses@1.8.0':
+    resolution: {integrity: sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==}
+    hasBin: true
+
+  '@electron/get@2.0.3':
+    resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==}
     engines: {node: '>=12'}
 
+  '@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2':
+    resolution: {tarball: https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2}
+    version: 10.2.0-electron.1
+    engines: {node: '>=12.13.0'}
+    hasBin: true
+
   '@electron/notarize@2.5.0':
     resolution: {integrity: sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==}
     engines: {node: '>= 10.0.0'}
 
+  '@electron/notarize@3.0.1':
+    resolution: {integrity: sha512-5xzcOwvMGNjkSk7s0sPx4XcKWei9FYk4f2S5NkSorWW0ce5yktTOtlPa0W5yQHcREILh+C3JdH+t+M637g9TmQ==}
+    engines: {node: '>= 22.12.0'}
+
   '@electron/osx-sign@1.3.1':
     resolution: {integrity: sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw==}
     engines: {node: '>=12.0.0'}
     hasBin: true
 
-  '@electron/rebuild@3.6.1':
-    resolution: {integrity: sha512-f6596ZHpEq/YskUd8emYvOUne89ij8mQgjYFA5ru25QwbrRO+t1SImofdDv7kKOuWCmVOuU5tvfkbgGxIl3E/w==}
+  '@electron/rebuild@3.7.0':
+    resolution: {integrity: sha512-VW++CNSlZwMYP7MyXEbrKjpzEwhB5kDNbzGtiPEjwYysqyTCF+YbNJ210Dj3AjWsGSV4iEEwNkmJN9yGZmVvmw==}
     engines: {node: '>=12.13.0'}
     hasBin: true
 
@@ -1920,9 +1933,6 @@ packages:
     resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
     engines: {node: '>=6.0.0'}
 
-  '@jridgewell/source-map@0.3.6':
-    resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==}
-
   '@jridgewell/sourcemap-codec@1.5.0':
     resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
 
@@ -1932,9 +1942,6 @@ packages:
   '@js-sdsl/ordered-map@4.4.2':
     resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==}
 
-  '@keyv/serialize@1.0.3':
-    resolution: {integrity: sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==}
-
   '@lezer/common@1.2.3':
     resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==}
 
@@ -2684,8 +2691,8 @@ packages:
   '@types/babel__traverse@7.20.7':
     resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==}
 
-  '@types/cacheable-request@6.0.2':
-    resolution: {integrity: sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==}
+  '@types/cacheable-request@6.0.3':
+    resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==}
 
   '@types/cookie@0.6.0':
     resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
@@ -2744,8 +2751,8 @@ packages:
   '@types/history@4.7.11':
     resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==}
 
-  '@types/http-cache-semantics@4.0.1':
-    resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==}
+  '@types/http-cache-semantics@4.0.4':
+    resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
 
   '@types/istanbul-lib-coverage@2.0.6':
     resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
@@ -2768,15 +2775,14 @@ packages:
   '@types/json-schema@7.0.15':
     resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
 
-  '@types/keyv@4.2.0':
-    resolution: {integrity: sha512-xoBtGl5R9jeKUhc8ZqeYaRDx04qqJ10yhhXYGmJ4Jr8qKpvMsDQQrNUvF/wUJ4klOtmJeJM+p2Xo3zp9uaC3tw==}
-    deprecated: This is a stub types definition. keyv provides its own type definitions, so you do not need this installed.
+  '@types/keyv@3.1.4':
+    resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
 
   '@types/mdast@4.0.4':
     resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
 
-  '@types/ms@0.7.34':
-    resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
+  '@types/ms@2.1.0':
+    resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
 
   '@types/node-forge@1.3.11':
     resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==}
@@ -2784,11 +2790,14 @@ packages:
   '@types/node@20.17.29':
     resolution: {integrity: sha512-6rbekrnsa5WWCo5UnPYEKfNuoF2yqAmigUKXM8wBzfEbZc+E/CITqjCrHqiq+6QBifsw0ZDaA5VdTFONOtG7+A==}
 
+  '@types/node@22.14.0':
+    resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==}
+
   '@types/parse-json@4.0.2':
     resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
 
-  '@types/plist@3.0.2':
-    resolution: {integrity: sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==}
+  '@types/plist@3.0.5':
+    resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==}
 
   '@types/prop-types@15.7.13':
     resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==}
@@ -2816,8 +2825,8 @@ packages:
   '@types/resolve@1.20.6':
     resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==}
 
-  '@types/responselike@1.0.0':
-    resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
+  '@types/responselike@1.0.3':
+    resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==}
 
   '@types/shimmer@1.2.0':
     resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==}
@@ -2855,8 +2864,8 @@ packages:
   '@types/uuid@9.0.8':
     resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==}
 
-  '@types/verror@1.10.5':
-    resolution: {integrity: sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw==}
+  '@types/verror@1.10.11':
+    resolution: {integrity: sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==}
 
   '@types/wait-on@5.3.4':
     resolution: {integrity: sha512-EBsPjFMrFlMbbUFf9D1Fp+PAB2TwmUn7a3YtHyD9RLuTIk1jDd8SxXVAoez2Ciy+8Jsceo2MYEYZzJ/DvorOKw==}
@@ -2879,8 +2888,8 @@ packages:
   '@types/yargs@17.0.33':
     resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==}
 
-  '@types/yauzl@2.10.0':
-    resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==}
+  '@types/yauzl@2.10.3':
+    resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
 
   '@typescript-eslint/eslint-plugin@8.29.0':
     resolution: {integrity: sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==}
@@ -2933,28 +2942,17 @@ packages:
     resolution: {integrity: sha512-zpbmSeNs3OU/f/Eyd6brFnjsBUYwv2mFjWxlAsIRSwTlW+skIT60rQHFBSfsj/5UVSxSLWVeUYczN7AyXvgTGQ==}
     peerDependencies:
       '@codemirror/autocomplete': '>=6.0.0'
-      '@codemirror/commands': '>=6.0.0'
-      '@codemirror/language': '>=6.0.0'
-      '@codemirror/lint': '>=6.0.0'
-      '@codemirror/search': '>=6.0.0'
-      '@codemirror/state': '>=6.0.0'
       '@codemirror/view': '>=6.0.0'
 
   '@uiw/codemirror-themes@4.23.10':
     resolution: {integrity: sha512-dU0UgEEgEXCAYpxuVDQ6fovE82XsqgHZckTJOH6Bs8xCi3Z7dwBKO4pXuiA8qGDwTOXOMjSzfi+pRViDm7OfWw==}
     peerDependencies:
-      '@codemirror/language': '>=6.0.0'
-      '@codemirror/state': '>=6.0.0'
       '@codemirror/view': '>=6.0.0'
 
   '@uiw/react-codemirror@4.23.10':
     resolution: {integrity: sha512-AbN4eVHOL4ckRuIXpZxkzEqL/1ChVA+BSdEnAKjIB68pLQvKsVoYbiFP8zkXkYc4+Fcgq5KbAjvYqdo4ewemKw==}
     peerDependencies:
-      '@babel/runtime': '>=7.11.0'
-      '@codemirror/state': '>=6.0.0'
-      '@codemirror/theme-one-dark': '>=6.0.0'
       '@codemirror/view': '>=6.0.0'
-      codemirror: '>=6.0.0'
       react: '>=16.8.0'
       react-dom: '>=16.8.0'
 
@@ -3047,8 +3045,8 @@ packages:
     resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==}
     engines: {node: '>= 14'}
 
-  agentkeepalive@4.5.0:
-    resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==}
+  agentkeepalive@4.6.0:
+    resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==}
     engines: {node: '>= 8.0.0'}
 
   aggregate-error@3.1.0:
@@ -3099,43 +3097,23 @@ packages:
     resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
     engines: {node: '>= 8'}
 
-  app-builder-bin@5.0.0-alpha.10:
-    resolution: {integrity: sha512-Ev4jj3D7Bo+O0GPD2NMvJl+PGiBAfS7pUGawntBNpCbxtpncfUixqFj9z9Jme7V7s3LBGqsWZZP54fxBX3JKJw==}
+  app-builder-bin@5.0.0-alpha.12:
+    resolution: {integrity: sha512-j87o0j6LqPL3QRr8yid6c+Tt5gC7xNfYo6uQIQkorAC6MpeayVMZrEDzKmJJ/Hlv7EnOQpaRm53k6ktDYZyB6w==}
 
-  app-builder-lib@25.1.8:
-    resolution: {integrity: sha512-pCqe7dfsQFBABC1jeKZXQWhGcCPF3rPCXDdfqVKjIeWBcXzyC1iOWZdfFhGl+S9MyE/k//DFmC6FzuGAUudNDg==}
+  app-builder-lib@26.0.12:
+    resolution: {integrity: sha512-+/CEPH1fVKf6HowBUs6LcAIoRcjeqgvAeoSE+cl7Y7LndyQ9ViGPYibNk7wmhMHzNgHIuIbw4nWADPO+4mjgWw==}
     engines: {node: '>=14.0.0'}
     peerDependencies:
-      dmg-builder: 25.1.8
-      electron-builder-squirrel-windows: 25.1.8
+      dmg-builder: 26.0.12
+      electron-builder-squirrel-windows: 26.0.12
 
   append-transform@2.0.0:
     resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==}
     engines: {node: '>=8'}
 
-  aproba@2.0.0:
-    resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
-
-  archiver-utils@2.1.0:
-    resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==}
-    engines: {node: '>= 6'}
-
-  archiver-utils@3.0.4:
-    resolution: {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==}
-    engines: {node: '>= 10'}
-
-  archiver@5.3.2:
-    resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==}
-    engines: {node: '>= 10'}
-
   archy@1.0.0:
     resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==}
 
-  are-we-there-yet@3.0.1:
-    resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==}
-    engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
-    deprecated: This package is no longer supported.
-
   argparse@1.0.10:
     resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
 
@@ -3321,14 +3299,8 @@ packages:
   bl@4.1.0:
     resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
 
-  bluebird-lst@1.0.9:
-    resolution: {integrity: sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==}
-
-  bluebird@3.7.2:
-    resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
-
-  boolean@3.1.4:
-    resolution: {integrity: sha512-3hx0kwU3uzG6ReQ3pnaFQPSktpBw6RHN3/ivDKEuU8g1XSfafowyvDnadjv1xp8IZqhtSukxlwv9bF6FhX8m0w==}
+  boolean@3.2.0:
+    resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==}
     deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
 
   brace-expansion@1.1.11:
@@ -3361,15 +3333,12 @@ packages:
   buffer@5.7.1:
     resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
 
-  buffer@6.0.3:
-    resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
-
-  builder-util-runtime@9.2.10:
-    resolution: {integrity: sha512-6p/gfG1RJSQeIbz8TK5aPNkoztgY1q5TgmGFMAXcY8itsGW6Y2ld1ALsZ5UJn8rog7hKF3zHx5iQbNQ8uLcRlw==}
+  builder-util-runtime@9.3.1:
+    resolution: {integrity: sha512-2/egrNDDnRaxVwK3A+cJq6UOlqOdedGA7JPqCeJjN2Zjk1/QB/6QUi3b714ScIGS7HafFXTyzJEOr5b44I3kvQ==}
     engines: {node: '>=12.0.0'}
 
-  builder-util@25.1.7:
-    resolution: {integrity: sha512-7jPjzBwEGRbwNcep0gGNpLXG9P94VA3CPAZQCzxkFXiV2GMQKlziMbY//rXPI7WKfhsvGgFXjTcXdBEwgXw9ww==}
+  builder-util@26.0.11:
+    resolution: {integrity: sha512-xNjXfsldUEe153h1DraD0XvDOpqGR0L5eKFkdReB7eFW5HqysDZFfly4rckda6y9dF39N3pkPlOblcfHKGw+uA==}
 
   cac@6.7.14:
     resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
@@ -3387,8 +3356,8 @@ packages:
     resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==}
     engines: {node: '>=10.6.0'}
 
-  cacheable-request@7.0.2:
-    resolution: {integrity: sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==}
+  cacheable-request@7.0.4:
+    resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==}
     engines: {node: '>=8'}
 
   caching-transform@4.0.0:
@@ -3482,6 +3451,10 @@ packages:
   ci-info@3.3.0:
     resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==}
 
+  ci-info@3.9.0:
+    resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
+    engines: {node: '>=8'}
+
   cjs-module-lexer@1.4.3:
     resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==}
 
@@ -3516,8 +3489,8 @@ packages:
     resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
     engines: {node: '>=12'}
 
-  clone-response@1.0.2:
-    resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==}
+  clone-response@1.0.3:
+    resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==}
 
   clone@1.0.4:
     resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
@@ -3549,10 +3522,6 @@ packages:
   color-string@1.9.0:
     resolution: {integrity: sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==}
 
-  color-support@1.1.3:
-    resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
-    hasBin: true
-
   color@3.2.1:
     resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==}
 
@@ -3574,9 +3543,6 @@ packages:
     resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==}
     engines: {node: '>=18'}
 
-  commander@2.20.3:
-    resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
-
   commander@3.0.2:
     resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==}
 
@@ -3595,19 +3561,12 @@ packages:
     resolution: {integrity: sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==}
     engines: {node: '>=0.10.0'}
 
-  compress-commons@4.1.2:
-    resolution: {integrity: sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==}
-    engines: {node: '>= 10'}
-
   concat-map@0.0.1:
     resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
 
   config-file-ts@0.2.8-rc1:
     resolution: {integrity: sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg==}
 
-  console-control-strings@1.1.0:
-    resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
-
   convert-source-map@1.9.0:
     resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
 
@@ -3631,15 +3590,6 @@ packages:
     resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
     engines: {node: '>=10'}
 
-  crc-32@1.2.2:
-    resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==}
-    engines: {node: '>=0.8'}
-    hasBin: true
-
-  crc32-stream@4.0.3:
-    resolution: {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==}
-    engines: {node: '>= 10'}
-
   crc@3.8.0:
     resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==}
 
@@ -3878,9 +3828,6 @@ packages:
     resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
     engines: {node: '>=0.4.0'}
 
-  delegates@1.0.0:
-    resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
-
   dequal@2.0.3:
     resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
     engines: {node: '>=6'}
@@ -3909,8 +3856,8 @@ packages:
   dir-compare@4.2.0:
     resolution: {integrity: sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==}
 
-  dmg-builder@25.1.8:
-    resolution: {integrity: sha512-NoXo6Liy2heSklTI5OIZbCgXC1RzrDQsZkeEwXhdOro3FT1VBOvbubvscdPnjVuQ4AMwwv61oaH96AbiYg9EnQ==}
+  dmg-builder@26.0.12:
+    resolution: {integrity: sha512-59CAAjAhTaIMCN8y9kD573vDkxbs1uhDcrFLHSgutYdPcGOU35Rf95725snvzEOy4BFB7+eLJ8djCNPmGwG67w==}
 
   dmg-license@1.0.11:
     resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==}
@@ -3958,12 +3905,12 @@ packages:
   domutils@1.7.0:
     resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==}
 
-  dotenv-expand@11.0.6:
-    resolution: {integrity: sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==}
+  dotenv-expand@11.0.7:
+    resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==}
     engines: {node: '>=12'}
 
-  dotenv@16.4.5:
-    resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==}
+  dotenv@16.4.7:
+    resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==}
     engines: {node: '>=12'}
 
   dunder-proto@1.0.1:
@@ -3978,22 +3925,19 @@ packages:
     engines: {node: '>=0.10.0'}
     hasBin: true
 
-  electron-builder-squirrel-windows@25.1.8:
-    resolution: {integrity: sha512-2ntkJ+9+0GFP6nAISiMabKt6eqBB0kX1QqHNWFWAXgi0VULKGisM46luRFpIBiU3u/TDmhZMM8tzvo2Abn3ayg==}
-
-  electron-builder@25.1.8:
-    resolution: {integrity: sha512-poRgAtUHHOnlzZnc9PK4nzG53xh74wj2Jy7jkTrqZ0MWPoHGh1M2+C//hGeYdA+4K8w4yiVCNYoLXF7ySj2Wig==}
+  electron-builder@26.0.12:
+    resolution: {integrity: sha512-cD1kz5g2sgPTMFHjLxfMjUK5JABq3//J4jPswi93tOPFz6btzXYtK5NrDt717NRbukCUDOrrvmYVOWERlqoiXA==}
     engines: {node: '>=14.0.0'}
     hasBin: true
 
-  electron-publish@25.1.7:
-    resolution: {integrity: sha512-+jbTkR9m39eDBMP4gfbqglDd6UvBC7RLh5Y0MhFSsc6UkGHj9Vj9TWobxevHYMMqmoujL11ZLjfPpMX+Pt6YEg==}
+  electron-publish@26.0.11:
+    resolution: {integrity: sha512-a8QRH0rAPIWH9WyyS5LbNvW9Ark6qe63/LqDB7vu2JXYpi0Gma5Q60Dh4tmTqhOBQt0xsrzD8qE7C+D7j+B24A==}
 
   electron-to-chromium@1.5.109:
     resolution: {integrity: sha512-AidaH9JETVRr9DIPGfp1kAarm/W6hRJTPuCnkF+2MqhF4KaAgRIcBc8nvjk+YMXZhwfISof/7WG29eS4iGxQLQ==}
 
-  electron-vite@3.0.0:
-    resolution: {integrity: sha512-Uf8NpF4OB2Juo1Vq8pobkLVp9BZTO70VwkW7fKXSCkod0SRkc7Dkw7ddR6b1fbsgT7lcZ0HD29WRxsCcbkHXUw==}
+  electron-vite@3.1.0:
+    resolution: {integrity: sha512-M7aAzaRvSl5VO+6KN4neJCYLHLpF/iWo5ztchI/+wMxIieDZQqpbCYfaEHHHPH6eupEzfvZdLYdPdmvGqoVe0Q==}
     engines: {node: ^18.0.0 || >=20.0.0}
     hasBin: true
     peerDependencies:
@@ -4003,8 +3947,8 @@ packages:
       '@swc/core':
         optional: true
 
-  electron@34.3.0:
-    resolution: {integrity: sha512-I238qRnYTAsuwJ/rS7HGaFNY4NNKAcjX8nlj7mnNmj1TK3z4HvNoD1r7Zud81DYDFx8AITuLd76EPrEnnfF9Bg==}
+  electron@35.1.4:
+    resolution: {integrity: sha512-8HjE2wqxY//T09Of8k1eTpK/NeTG2FkTyRD+fyKXmec4wZVscGgZcmWFC0HYN4ktyHAjtplpxdFXjtqRnvzBMg==}
     engines: {node: '>= 12.20.55'}
     hasBin: true
 
@@ -4296,8 +4240,8 @@ packages:
     resolution: {integrity: sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==}
     engines: {node: '>=18'}
 
-  filelist@1.0.2:
-    resolution: {integrity: sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==}
+  filelist@1.0.4:
+    resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
 
   fill-range@7.1.1:
     resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
@@ -4372,9 +4316,6 @@ packages:
   fromentries@1.3.2:
     resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==}
 
-  fs-constants@1.0.0:
-    resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
-
   fs-exists-sync@0.1.0:
     resolution: {integrity: sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==}
     engines: {node: '>=0.10.0'}
@@ -4383,8 +4324,8 @@ packages:
     resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
     engines: {node: '>=12'}
 
-  fs-extra@11.2.0:
-    resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==}
+  fs-extra@11.3.0:
+    resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==}
     engines: {node: '>=14.14'}
 
   fs-extra@8.1.0:
@@ -4426,11 +4367,6 @@ packages:
   functions-have-names@1.2.3:
     resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
 
-  gauge@4.0.4:
-    resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==}
-    engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
-    deprecated: This package is no longer supported.
-
   gensequence@7.0.0:
     resolution: {integrity: sha512-47Frx13aZh01afHJTB3zTtKIlFI6vWY+MYCN9Qpew6i52rfKjnhCF/l1YlC8UmEMvvntZZ6z4PiCcmyuedR2aQ==}
     engines: {node: '>=18'}
@@ -4576,9 +4512,6 @@ packages:
     resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
     engines: {node: '>= 0.4'}
 
-  has-unicode@2.0.1:
-    resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
-
   hasha@5.2.2:
     resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==}
     engines: {node: '>=8'}
@@ -4918,9 +4851,6 @@ packages:
   isarray@0.0.1:
     resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==}
 
-  isarray@1.0.0:
-    resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
-
   isarray@2.0.5:
     resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
 
@@ -4928,8 +4858,8 @@ packages:
     resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==}
     engines: {node: '>= 8.0.0'}
 
-  isbinaryfile@5.0.2:
-    resolution: {integrity: sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==}
+  isbinaryfile@5.0.4:
+    resolution: {integrity: sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==}
     engines: {node: '>= 18.0.0'}
 
   isexe@2.0.0:
@@ -4982,8 +4912,8 @@ packages:
   jackspeak@3.4.3:
     resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
 
-  jake@10.8.5:
-    resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==}
+  jake@10.9.2:
+    resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==}
     engines: {node: '>=10'}
     hasBin: true
 
@@ -5253,9 +5183,6 @@ packages:
   keyv@4.5.4:
     resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
 
-  keyv@5.3.2:
-    resolution: {integrity: sha512-Lji2XRxqqa5Wg+CHLVfFKBImfJZ4pCSccu9eVWK6w4c2SDFLd8JAn1zqTuSFnsxb7ope6rMsnIHfp+eBbRBRZQ==}
-
   kleur@3.0.3:
     resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
     engines: {node: '>=6'}
@@ -5266,10 +5193,6 @@ packages:
   lazy-val@1.0.5:
     resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==}
 
-  lazystream@1.0.1:
-    resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==}
-    engines: {node: '>= 0.6.3'}
-
   leven@3.1.0:
     resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
     engines: {node: '>=6'}
@@ -5295,27 +5218,12 @@ packages:
   lodash.debounce@4.0.8:
     resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
 
-  lodash.defaults@4.2.0:
-    resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==}
-
-  lodash.difference@4.5.0:
-    resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==}
-
-  lodash.flatten@4.4.0:
-    resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==}
-
   lodash.flattendeep@4.4.0:
     resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==}
 
-  lodash.isplainobject@4.0.6:
-    resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
-
   lodash.merge@4.6.2:
     resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
 
-  lodash.union@4.6.0:
-    resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==}
-
   lodash@4.17.21:
     resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
 
@@ -5651,34 +5559,28 @@ packages:
     resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
     engines: {node: '>= 0.6'}
 
-  node-abi@3.71.0:
-    resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==}
+  node-abi@3.74.0:
+    resolution: {integrity: sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==}
     engines: {node: '>=10'}
 
   node-addon-api@1.7.2:
     resolution: {integrity: sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==}
 
-  node-addon-api@7.1.0:
-    resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==}
-    engines: {node: ^16 || ^18 || >= 20}
+  node-addon-api@7.1.1:
+    resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
 
-  node-api-version@0.2.0:
-    resolution: {integrity: sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==}
+  node-api-version@0.2.1:
+    resolution: {integrity: sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==}
 
   node-forge@1.3.1:
     resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
     engines: {node: '>= 6.13.0'}
 
-  node-gyp@11.0.0:
-    resolution: {integrity: sha512-zQS+9MTTeCMgY0F3cWPyJyRFAkVltQ1uXm+xXu/ES6KFgC6Czo1Seb9vQW2wNxSX2OrDTiqL0ojtkFxBQ0ypIw==}
+  node-gyp@11.2.0:
+    resolution: {integrity: sha512-T0S1zqskVUSxcsSTkAsLc7xCycrRYmtDHadDinzocrThjyQCn5kMlEBSj6H4qDbgsIOSLmmlRIeb0lZXj+UArA==}
     engines: {node: ^18.17.0 || >=20.5.0}
     hasBin: true
 
-  node-gyp@9.4.1:
-    resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==}
-    engines: {node: ^12.13 || ^14.13 || >=16}
-    hasBin: true
-
   node-int64@0.4.0:
     resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
 
@@ -5686,8 +5588,8 @@ packages:
     resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==}
     engines: {node: '>=8'}
 
-  node-pty@1.1.0-beta14:
-    resolution: {integrity: sha512-w/o/q6UL95azHQhrKvMnIojs1AGiqxnjNgcH3138H/RIRkIpE8S5GvT4dpvQT+ZVbTJxoBFt/DnaBAT1PAN7WQ==}
+  node-pty@1.1.0-beta33:
+    resolution: {integrity: sha512-+BN2bT/KqO+fmCHnpFS99VMVJr7VUBCUa2VIBEw0oEvszkR7ri0kwD1lF91OeQToUJ2dXKA8j6scPjbO4eRWOQ==}
 
   node-releases@2.0.19:
     resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
@@ -5714,11 +5616,6 @@ packages:
     resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
     engines: {node: '>=8'}
 
-  npmlog@6.0.2:
-    resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==}
-    engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
-    deprecated: This package is no longer supported.
-
   nwsapi@2.2.16:
     resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==}
 
@@ -5885,8 +5782,8 @@ packages:
     resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
     engines: {node: '>=8'}
 
-  pe-library@0.4.0:
-    resolution: {integrity: sha512-JAmVv2jGxmczplhHO7UoFGJ+pM/yMBpny3vNjwNFuaeQfzKlekQidZ8Ss8EJ0qee8wEQN4lY2IwtWx2oRfMsag==}
+  pe-library@0.4.1:
+    resolution: {integrity: sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==}
     engines: {node: '>=12', npm: '>=6'}
 
   pend@1.2.0:
@@ -5961,13 +5858,14 @@ packages:
     resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
 
+  proc-log@2.0.1:
+    resolution: {integrity: sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==}
+    engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
   proc-log@5.0.0:
     resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==}
     engines: {node: ^18.17.0 || >=20.5.0}
 
-  process-nextick-args@2.0.1:
-    resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
-
   process-on-spawn@1.1.0:
     resolution: {integrity: sha512-JOnOPQ/8TZgjs1JIH/m9ni7FfimjNa/PRx7y/Wb5qdItsnhO0jE4AT7fC0HjC28DUQWDr50dwSYZLdRMlqDq3Q==}
     engines: {node: '>=8'}
@@ -6124,16 +6022,10 @@ packages:
     resolution: {integrity: sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==}
     hasBin: true
 
-  readable-stream@2.3.8:
-    resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
-
   readable-stream@3.6.2:
     resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
     engines: {node: '>= 6'}
 
-  readdir-glob@1.1.3:
-    resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==}
-
   recast@0.23.11:
     resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==}
     engines: {node: '>= 4'}
@@ -6209,8 +6101,8 @@ packages:
   requires-port@1.0.0:
     resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
 
-  resedit@1.7.0:
-    resolution: {integrity: sha512-dbsZ0gk5opWPFlKMqvxCrLCuMZUVmsW3yTPT0tT4mYwo5fjQM8c4HMN9ZJt6dRDqDV/78m9SU4rv24PN4NiYaA==}
+  resedit@1.7.2:
+    resolution: {integrity: sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA==}
     engines: {node: '>=12', npm: '>=6'}
 
   resolve-alpn@1.2.1:
@@ -6306,9 +6198,6 @@ packages:
     resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
     engines: {node: '>=0.4'}
 
-  safe-buffer@5.1.2:
-    resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
-
   safe-buffer@5.2.1:
     resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
 
@@ -6330,8 +6219,8 @@ packages:
   sanitize-filename@1.6.3:
     resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==}
 
-  sax@1.2.4:
-    resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
+  sax@1.4.1:
+    resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
 
   saxes@6.0.0:
     resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
@@ -6343,6 +6232,10 @@ packages:
   semver-compare@1.0.0:
     resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==}
 
+  semver@5.7.2:
+    resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
+    hasBin: true
+
   semver@6.3.1:
     resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
     hasBin: true
@@ -6561,9 +6454,6 @@ packages:
     resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
     engines: {node: '>= 0.4'}
 
-  string_decoder@1.1.1:
-    resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
-
   string_decoder@1.3.0:
     resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
 
@@ -6656,10 +6546,6 @@ packages:
   tar-fs@3.0.8:
     resolution: {integrity: sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==}
 
-  tar-stream@2.2.0:
-    resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
-    engines: {node: '>=6'}
-
   tar-stream@3.1.7:
     resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
 
@@ -6674,11 +6560,6 @@ packages:
   temp-file@3.4.0:
     resolution: {integrity: sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==}
 
-  terser@5.31.1:
-    resolution: {integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==}
-    engines: {node: '>=10'}
-    hasBin: true
-
   test-exclude@6.0.0:
     resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
     engines: {node: '>=8'}
@@ -6689,6 +6570,9 @@ packages:
   text-hex@1.0.0:
     resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==}
 
+  tiny-async-pool@1.3.0:
+    resolution: {integrity: sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==}
+
   tiny-invariant@1.3.3:
     resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
 
@@ -6709,9 +6593,9 @@ packages:
   tmp-promise@3.0.3:
     resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==}
 
-  tmp@0.2.1:
-    resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==}
-    engines: {node: '>=8.17.0'}
+  tmp@0.2.3:
+    resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==}
+    engines: {node: '>=14.14'}
 
   tmpl@1.0.5:
     resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
@@ -6848,6 +6732,9 @@ packages:
   undici-types@6.19.8:
     resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
 
+  undici-types@6.21.0:
+    resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
+
   unicode-canonical-property-names-ecmascript@2.0.1:
     resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==}
     engines: {node: '>=4'}
@@ -6941,8 +6828,8 @@ packages:
       '@types/react':
         optional: true
 
-  utf8-byte-length@1.0.4:
-    resolution: {integrity: sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==}
+  utf8-byte-length@1.0.5:
+    resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==}
 
   util-deprecate@1.0.2:
     resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
@@ -7128,9 +7015,6 @@ packages:
     engines: {node: ^18.17.0 || >=20.5.0}
     hasBin: true
 
-  wide-align@1.1.5:
-    resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
-
   winston-transport@4.9.0:
     resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==}
     engines: {node: '>= 12.0.0'}
@@ -7252,10 +7136,6 @@ packages:
     resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==}
     engines: {node: '>=18'}
 
-  zip-stream@4.1.1:
-    resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==}
-    engines: {node: '>= 10'}
-
   zod-to-json-schema@3.24.5:
     resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==}
     peerDependencies:
@@ -8391,13 +8271,19 @@ snapshots:
       ajv: 6.12.6
       ajv-keywords: 3.5.2(ajv@6.12.6)
 
-  '@electron/asar@3.2.10':
+  '@electron/asar@3.2.18':
     dependencies:
       commander: 5.1.0
       glob: 7.2.3
       minimatch: 3.1.2
 
-  '@electron/get@2.0.2':
+  '@electron/fuses@1.8.0':
+    dependencies:
+      chalk: 4.1.2
+      fs-extra: 9.1.0
+      minimist: 1.2.8
+
+  '@electron/get@2.0.3':
     dependencies:
       debug: 4.4.0
       env-paths: 2.2.1
@@ -8411,6 +8297,22 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
+  '@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2':
+    dependencies:
+      env-paths: 2.2.1
+      exponential-backoff: 3.1.2
+      glob: 8.1.0
+      graceful-fs: 4.2.11
+      make-fetch-happen: 10.2.1
+      nopt: 6.0.0
+      proc-log: 2.0.1
+      semver: 7.7.1
+      tar: 6.2.1
+      which: 2.0.2
+    transitivePeerDependencies:
+      - bluebird
+      - supports-color
+
   '@electron/notarize@2.5.0':
     dependencies:
       debug: 4.4.0
@@ -8419,6 +8321,13 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
+  '@electron/notarize@3.0.1':
+    dependencies:
+      debug: 4.4.0
+      promise-retry: 2.0.1
+    transitivePeerDependencies:
+      - supports-color
+
   '@electron/osx-sign@1.3.1':
     dependencies:
       compare-version: 0.1.2
@@ -8430,17 +8339,17 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  '@electron/rebuild@3.6.1':
+  '@electron/rebuild@3.7.0':
     dependencies:
+      '@electron/node-gyp': https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2
       '@malept/cross-spawn-promise': 2.0.0
       chalk: 4.1.2
       debug: 4.4.0
       detect-libc: 2.0.3
       fs-extra: 10.1.0
       got: 11.8.6
-      node-abi: 3.71.0
-      node-api-version: 0.2.0
-      node-gyp: 9.4.1
+      node-abi: 3.74.0
+      node-api-version: 0.2.1
       ora: 5.4.1
       read-binary-file-arch: 1.0.6
       semver: 7.7.1
@@ -8452,11 +8361,11 @@ snapshots:
 
   '@electron/universal@2.0.1':
     dependencies:
-      '@electron/asar': 3.2.10
+      '@electron/asar': 3.2.18
       '@malept/cross-spawn-promise': 2.0.0
       debug: 4.4.0
       dir-compare: 4.2.0
-      fs-extra: 11.2.0
+      fs-extra: 11.3.0
       minimatch: 9.0.5
       plist: 3.1.0
     transitivePeerDependencies:
@@ -8726,17 +8635,17 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  '@inquirer/confirm@5.1.6(@types/node@20.17.29)':
+  '@inquirer/confirm@5.1.6(@types/node@22.14.0)':
     dependencies:
-      '@inquirer/core': 10.1.7(@types/node@20.17.29)
-      '@inquirer/type': 3.0.4(@types/node@20.17.29)
+      '@inquirer/core': 10.1.7(@types/node@22.14.0)
+      '@inquirer/type': 3.0.4(@types/node@22.14.0)
     optionalDependencies:
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
 
-  '@inquirer/core@10.1.7(@types/node@20.17.29)':
+  '@inquirer/core@10.1.7(@types/node@22.14.0)':
     dependencies:
       '@inquirer/figures': 1.0.10
-      '@inquirer/type': 3.0.4(@types/node@20.17.29)
+      '@inquirer/type': 3.0.4(@types/node@22.14.0)
       ansi-escapes: 4.3.2
       cli-width: 4.1.0
       mute-stream: 2.0.0
@@ -8744,13 +8653,13 @@ snapshots:
       wrap-ansi: 6.2.0
       yoctocolors-cjs: 2.1.2
     optionalDependencies:
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
 
   '@inquirer/figures@1.0.10': {}
 
-  '@inquirer/type@3.0.4(@types/node@20.17.29)':
+  '@inquirer/type@3.0.4(@types/node@22.14.0)':
     optionalDependencies:
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
 
   '@isaacs/cliui@8.0.2':
     dependencies:
@@ -8778,7 +8687,7 @@ snapshots:
   '@jest/console@29.7.0':
     dependencies:
       '@jest/types': 29.6.3
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       chalk: 4.1.2
       jest-message-util: 29.7.0
       jest-util: 29.7.0
@@ -8791,14 +8700,14 @@ snapshots:
       '@jest/test-result': 29.7.0
       '@jest/transform': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       ansi-escapes: 4.3.2
       chalk: 4.1.2
       ci-info: 3.3.0
       exit: 0.1.2
       graceful-fs: 4.2.11
       jest-changed-files: 29.7.0
-      jest-config: 29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0)
+      jest-config: 29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0)
       jest-haste-map: 29.7.0
       jest-message-util: 29.7.0
       jest-regex-util: 29.6.3
@@ -8827,7 +8736,7 @@ snapshots:
     dependencies:
       '@jest/fake-timers': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       jest-mock: 29.7.0
 
   '@jest/expect-utils@29.7.0':
@@ -8845,7 +8754,7 @@ snapshots:
     dependencies:
       '@jest/types': 29.6.3
       '@sinonjs/fake-timers': 10.3.0
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       jest-message-util: 29.7.0
       jest-mock: 29.7.0
       jest-util: 29.7.0
@@ -8867,7 +8776,7 @@ snapshots:
       '@jest/transform': 29.7.0
       '@jest/types': 29.6.3
       '@jridgewell/trace-mapping': 0.3.25
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       chalk: 4.1.2
       collect-v8-coverage: 1.0.2
       exit: 0.1.2
@@ -8937,16 +8846,16 @@ snapshots:
       '@jest/schemas': 29.6.3
       '@types/istanbul-lib-coverage': 2.0.6
       '@types/istanbul-reports': 3.0.4
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       '@types/yargs': 17.0.33
       chalk: 4.1.2
 
-  '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.8.2)(vite@6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1))':
+  '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.8.2)(vite@6.2.6(@types/node@22.14.0)(yaml@2.7.1))':
     dependencies:
       glob: 10.4.5
       magic-string: 0.27.0
       react-docgen-typescript: 2.2.2(typescript@5.8.2)
-      vite: 6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1)
+      vite: 6.2.6(@types/node@22.14.0)(yaml@2.7.1)
     optionalDependencies:
       typescript: 5.8.2
 
@@ -8960,12 +8869,6 @@ snapshots:
 
   '@jridgewell/set-array@1.2.1': {}
 
-  '@jridgewell/source-map@0.3.6':
-    dependencies:
-      '@jridgewell/gen-mapping': 0.3.8
-      '@jridgewell/trace-mapping': 0.3.25
-    optional: true
-
   '@jridgewell/sourcemap-codec@1.5.0': {}
 
   '@jridgewell/trace-mapping@0.3.25':
@@ -8975,10 +8878,6 @@ snapshots:
 
   '@js-sdsl/ordered-map@4.4.2': {}
 
-  '@keyv/serialize@1.0.3':
-    dependencies:
-      buffer: 6.0.3
-
   '@lezer/common@1.2.3': {}
 
   '@lezer/highlight@1.2.1':
@@ -9529,13 +9428,13 @@ snapshots:
     dependencies:
       storybook: 8.6.11(prettier@3.5.3)
 
-  '@storybook/builder-vite@8.6.11(storybook@8.6.11(prettier@3.5.3))(vite@6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1))':
+  '@storybook/builder-vite@8.6.11(storybook@8.6.11(prettier@3.5.3))(vite@6.2.6(@types/node@22.14.0)(yaml@2.7.1))':
     dependencies:
       '@storybook/csf-plugin': 8.6.11(storybook@8.6.11(prettier@3.5.3))
       browser-assert: 1.2.1
       storybook: 8.6.11(prettier@3.5.3)
       ts-dedent: 2.2.0
-      vite: 6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1)
+      vite: 6.2.6(@types/node@22.14.0)(yaml@2.7.1)
 
   '@storybook/components@8.6.11(storybook@8.6.11(prettier@3.5.3))':
     dependencies:
@@ -9587,11 +9486,11 @@ snapshots:
       react-dom: 18.3.1(react@18.3.1)
       storybook: 8.6.11(prettier@3.5.3)
 
-  '@storybook/react-vite@8.6.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.39.0)(storybook@8.6.11(prettier@3.5.3))(typescript@5.8.2)(vite@6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1))':
+  '@storybook/react-vite@8.6.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.39.0)(storybook@8.6.11(prettier@3.5.3))(typescript@5.8.2)(vite@6.2.6(@types/node@22.14.0)(yaml@2.7.1))':
     dependencies:
-      '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.8.2)(vite@6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1))
+      '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.8.2)(vite@6.2.6(@types/node@22.14.0)(yaml@2.7.1))
       '@rollup/pluginutils': 5.1.4(rollup@4.39.0)
-      '@storybook/builder-vite': 8.6.11(storybook@8.6.11(prettier@3.5.3))(vite@6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1))
+      '@storybook/builder-vite': 8.6.11(storybook@8.6.11(prettier@3.5.3))(vite@6.2.6(@types/node@22.14.0)(yaml@2.7.1))
       '@storybook/react': 8.6.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.11(prettier@3.5.3))(typescript@5.8.2)
       find-up: 5.0.0
       magic-string: 0.30.17
@@ -9601,7 +9500,7 @@ snapshots:
       resolve: 1.22.10
       storybook: 8.6.11(prettier@3.5.3)
       tsconfig-paths: 4.2.0
-      vite: 6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1)
+      vite: 6.2.6(@types/node@22.14.0)(yaml@2.7.1)
     transitivePeerDependencies:
       - rollup
       - supports-color
@@ -9621,7 +9520,7 @@ snapshots:
     optionalDependencies:
       typescript: 5.8.2
 
-  '@storybook/test-runner@0.22.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0)(storybook@8.6.11(prettier@3.5.3))':
+  '@storybook/test-runner@0.22.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0)(storybook@8.6.11(prettier@3.5.3))':
     dependencies:
       '@babel/core': 7.26.10
       '@babel/generator': 7.27.0
@@ -9632,14 +9531,14 @@ snapshots:
       '@swc/core': 1.11.15
       '@swc/jest': 0.2.37(@swc/core@1.11.15)
       expect-playwright: 0.8.0
-      jest: 29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0)
+      jest: 29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0)
       jest-circus: 29.7.0(babel-plugin-macros@3.1.0)
       jest-environment-node: 29.7.0
       jest-junit: 16.0.0
-      jest-playwright-preset: 4.0.0(jest-circus@29.7.0(babel-plugin-macros@3.1.0))(jest-environment-node@29.7.0)(jest-runner@29.7.0)(jest@29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0))
+      jest-playwright-preset: 4.0.0(jest-circus@29.7.0(babel-plugin-macros@3.1.0))(jest-environment-node@29.7.0)(jest-runner@29.7.0)(jest@29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0))
       jest-runner: 29.7.0
       jest-serializer-html: 7.1.0
-      jest-watch-typeahead: 2.2.2(jest@29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0))
+      jest-watch-typeahead: 2.2.2(jest@29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0))
       nyc: 15.1.0
       playwright: 1.51.1
       storybook: 8.6.11(prettier@3.5.3)
@@ -9841,12 +9740,12 @@ snapshots:
     dependencies:
       '@babel/types': 7.27.0
 
-  '@types/cacheable-request@6.0.2':
+  '@types/cacheable-request@6.0.3':
     dependencies:
-      '@types/http-cache-semantics': 4.0.1
-      '@types/keyv': 4.2.0
-      '@types/node': 20.17.29
-      '@types/responselike': 1.0.0
+      '@types/http-cache-semantics': 4.0.4
+      '@types/keyv': 3.1.4
+      '@types/node': 22.14.0
+      '@types/responselike': 1.0.3
 
   '@types/cookie@0.6.0': {}
 
@@ -9876,7 +9775,7 @@ snapshots:
 
   '@types/debug@4.1.12':
     dependencies:
-      '@types/ms': 0.7.34
+      '@types/ms': 2.1.0
 
   '@types/doctrine@0.0.9': {}
 
@@ -9888,11 +9787,11 @@ snapshots:
 
   '@types/fs-extra@9.0.13':
     dependencies:
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
 
   '@types/graceful-fs@4.1.9':
     dependencies:
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
 
   '@types/hast@3.0.4':
     dependencies:
@@ -9900,7 +9799,7 @@ snapshots:
 
   '@types/history@4.7.11': {}
 
-  '@types/http-cache-semantics@4.0.1': {}
+  '@types/http-cache-semantics@4.0.4': {}
 
   '@types/istanbul-lib-coverage@2.0.6': {}
 
@@ -9919,7 +9818,7 @@ snapshots:
 
   '@types/jsdom@20.0.1':
     dependencies:
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       '@types/tough-cookie': 4.0.5
       parse5: 7.2.1
 
@@ -9931,15 +9830,15 @@ snapshots:
 
   '@types/json-schema@7.0.15': {}
 
-  '@types/keyv@4.2.0':
+  '@types/keyv@3.1.4':
     dependencies:
-      keyv: 5.3.2
+      '@types/node': 22.14.0
 
   '@types/mdast@4.0.4':
     dependencies:
       '@types/unist': 3.0.3
 
-  '@types/ms@0.7.34': {}
+  '@types/ms@2.1.0': {}
 
   '@types/node-forge@1.3.11':
     dependencies:
@@ -9949,11 +9848,15 @@ snapshots:
     dependencies:
       undici-types: 6.19.8
 
+  '@types/node@22.14.0':
+    dependencies:
+      undici-types: 6.21.0
+
   '@types/parse-json@4.0.2': {}
 
-  '@types/plist@3.0.2':
+  '@types/plist@3.0.5':
     dependencies:
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       xmlbuilder: 15.1.1
     optional: true
 
@@ -9989,9 +9892,9 @@ snapshots:
 
   '@types/resolve@1.20.6': {}
 
-  '@types/responselike@1.0.0':
+  '@types/responselike@1.0.3':
     dependencies:
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
 
   '@types/shimmer@1.2.0': {}
 
@@ -10012,7 +9915,7 @@ snapshots:
 
   '@types/tar-stream@2.2.2':
     dependencies:
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
 
   '@types/tough-cookie@4.0.5': {}
 
@@ -10024,12 +9927,12 @@ snapshots:
 
   '@types/uuid@9.0.8': {}
 
-  '@types/verror@1.10.5':
+  '@types/verror@1.10.11':
     optional: true
 
   '@types/wait-on@5.3.4':
     dependencies:
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
 
   '@types/webidl-conversions@7.0.1': {}
 
@@ -10047,9 +9950,9 @@ snapshots:
     dependencies:
       '@types/yargs-parser': 21.0.3
 
-  '@types/yauzl@2.10.0':
+  '@types/yauzl@2.10.3':
     dependencies:
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
     optional: true
 
   '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0)(typescript@5.8.2))(eslint@9.23.0)(typescript@5.8.2)':
@@ -10129,7 +10032,7 @@ snapshots:
       '@typescript-eslint/types': 8.29.0
       eslint-visitor-keys: 4.2.0
 
-  '@uiw/codemirror-extensions-basic-setup@4.23.10(@codemirror/autocomplete@6.18.6)(@codemirror/commands@6.8.1)(@codemirror/language@6.11.0)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.3)(@codemirror/state@6.5.2)(@codemirror/view@6.36.5)':
+  '@uiw/codemirror-extensions-basic-setup@4.23.10(@codemirror/autocomplete@6.18.6)(@codemirror/view@6.36.5)':
     dependencies:
       '@codemirror/autocomplete': 6.18.6
       '@codemirror/commands': 6.8.1
@@ -10139,35 +10042,32 @@ snapshots:
       '@codemirror/state': 6.5.2
       '@codemirror/view': 6.36.5
 
-  '@uiw/codemirror-themes@4.23.10(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.5)':
+  '@uiw/codemirror-themes@4.23.10(@codemirror/view@6.36.5)':
     dependencies:
       '@codemirror/language': 6.11.0
       '@codemirror/state': 6.5.2
       '@codemirror/view': 6.36.5
 
-  '@uiw/react-codemirror@4.23.10(@babel/runtime@7.27.0)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.3)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.36.5)(codemirror@6.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@uiw/react-codemirror@4.23.10(@codemirror/autocomplete@6.18.6)(@codemirror/view@6.36.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@babel/runtime': 7.27.0
       '@codemirror/commands': 6.8.1
       '@codemirror/state': 6.5.2
       '@codemirror/theme-one-dark': 6.1.2
       '@codemirror/view': 6.36.5
-      '@uiw/codemirror-extensions-basic-setup': 4.23.10(@codemirror/autocomplete@6.18.6)(@codemirror/commands@6.8.1)(@codemirror/language@6.11.0)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.3)(@codemirror/state@6.5.2)(@codemirror/view@6.36.5)
+      '@uiw/codemirror-extensions-basic-setup': 4.23.10(@codemirror/autocomplete@6.18.6)(@codemirror/view@6.36.5)
       codemirror: 6.0.1
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
     transitivePeerDependencies:
       - '@codemirror/autocomplete'
-      - '@codemirror/language'
-      - '@codemirror/lint'
-      - '@codemirror/search'
 
   '@ungap/structured-clone@1.3.0': {}
 
-  '@vitejs/plugin-react-swc@3.8.1(vite@6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1))':
+  '@vitejs/plugin-react-swc@3.8.1(vite@6.2.6(@types/node@22.14.0)(yaml@2.7.1))':
     dependencies:
       '@swc/core': 1.11.15
-      vite: 6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1)
+      vite: 6.2.6(@types/node@22.14.0)(yaml@2.7.1)
     transitivePeerDependencies:
       - '@swc/helpers'
 
@@ -10234,7 +10134,7 @@ snapshots:
 
   agent-base@7.1.3: {}
 
-  agentkeepalive@4.5.0:
+  agentkeepalive@4.6.0:
     dependencies:
       humanize-ms: 1.2.1
 
@@ -10281,44 +10181,44 @@ snapshots:
       normalize-path: 3.0.0
       picomatch: 2.3.1
 
-  app-builder-bin@5.0.0-alpha.10: {}
+  app-builder-bin@5.0.0-alpha.12: {}
 
-  app-builder-lib@25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8):
+  app-builder-lib@26.0.12(dmg-builder@26.0.12):
     dependencies:
       '@develar/schema-utils': 2.6.5
+      '@electron/asar': 3.2.18
+      '@electron/fuses': 1.8.0
       '@electron/notarize': 2.5.0
       '@electron/osx-sign': 1.3.1
-      '@electron/rebuild': 3.6.1
+      '@electron/rebuild': 3.7.0
       '@electron/universal': 2.0.1
       '@malept/flatpak-bundler': 0.4.0
       '@types/fs-extra': 9.0.13
       async-exit-hook: 2.0.1
-      bluebird-lst: 1.0.9
-      builder-util: 25.1.7
-      builder-util-runtime: 9.2.10
+      builder-util: 26.0.11
+      builder-util-runtime: 9.3.1
       chromium-pickle-js: 0.2.0
       config-file-ts: 0.2.8-rc1
       debug: 4.4.0
-      dmg-builder: 25.1.8(electron-builder-squirrel-windows@25.1.8)
-      dotenv: 16.4.5
-      dotenv-expand: 11.0.6
+      dmg-builder: 26.0.12
+      dotenv: 16.4.7
+      dotenv-expand: 11.0.7
       ejs: 3.1.10
-      electron-builder-squirrel-windows: 25.1.8(dmg-builder@25.1.8)
-      electron-publish: 25.1.7
-      form-data: 4.0.2
+      electron-publish: 26.0.11
       fs-extra: 10.1.0
       hosted-git-info: 4.1.0
       is-ci: 3.0.1
-      isbinaryfile: 5.0.2
+      isbinaryfile: 5.0.4
       js-yaml: 4.1.0
       json5: 2.2.3
       lazy-val: 1.0.5
       minimatch: 10.0.1
-      resedit: 1.7.0
-      sanitize-filename: 1.6.3
+      plist: 3.1.0
+      resedit: 1.7.2
       semver: 7.7.1
       tar: 6.2.1
       temp-file: 3.4.0
+      tiny-async-pool: 1.3.0
     transitivePeerDependencies:
       - bluebird
       - supports-color
@@ -10327,51 +10227,8 @@ snapshots:
     dependencies:
       default-require-extensions: 3.0.1
 
-  aproba@2.0.0: {}
-
-  archiver-utils@2.1.0:
-    dependencies:
-      glob: 7.2.3
-      graceful-fs: 4.2.11
-      lazystream: 1.0.1
-      lodash.defaults: 4.2.0
-      lodash.difference: 4.5.0
-      lodash.flatten: 4.4.0
-      lodash.isplainobject: 4.0.6
-      lodash.union: 4.6.0
-      normalize-path: 3.0.0
-      readable-stream: 2.3.8
-
-  archiver-utils@3.0.4:
-    dependencies:
-      glob: 7.2.3
-      graceful-fs: 4.2.11
-      lazystream: 1.0.1
-      lodash.defaults: 4.2.0
-      lodash.difference: 4.5.0
-      lodash.flatten: 4.4.0
-      lodash.isplainobject: 4.0.6
-      lodash.union: 4.6.0
-      normalize-path: 3.0.0
-      readable-stream: 3.6.2
-
-  archiver@5.3.2:
-    dependencies:
-      archiver-utils: 2.1.0
-      async: 3.2.6
-      buffer-crc32: 0.2.13
-      readable-stream: 3.6.2
-      readdir-glob: 1.1.3
-      tar-stream: 2.2.0
-      zip-stream: 4.1.1
-
   archy@1.0.0: {}
 
-  are-we-there-yet@3.0.1:
-    dependencies:
-      delegates: 1.0.0
-      readable-stream: 3.6.2
-
   argparse@1.0.10:
     dependencies:
       sprintf-js: 1.0.3
@@ -10628,13 +10485,7 @@ snapshots:
       inherits: 2.0.4
       readable-stream: 3.6.2
 
-  bluebird-lst@1.0.9:
-    dependencies:
-      bluebird: 3.7.2
-
-  bluebird@3.7.2: {}
-
-  boolean@3.1.4:
+  boolean@3.2.0:
     optional: true
 
   brace-expansion@1.1.11:
@@ -10672,25 +10523,19 @@ snapshots:
       base64-js: 1.5.1
       ieee754: 1.2.1
 
-  buffer@6.0.3:
-    dependencies:
-      base64-js: 1.5.1
-      ieee754: 1.2.1
-
-  builder-util-runtime@9.2.10:
+  builder-util-runtime@9.3.1:
     dependencies:
       debug: 4.4.0
-      sax: 1.2.4
+      sax: 1.4.1
     transitivePeerDependencies:
       - supports-color
 
-  builder-util@25.1.7:
+  builder-util@26.0.11:
     dependencies:
       7zip-bin: 5.2.0
       '@types/debug': 4.1.12
-      app-builder-bin: 5.0.0-alpha.10
-      bluebird-lst: 1.0.9
-      builder-util-runtime: 9.2.10
+      app-builder-bin: 5.0.0-alpha.12
+      builder-util-runtime: 9.3.1
       chalk: 4.1.2
       cross-spawn: 7.0.6
       debug: 4.4.0
@@ -10699,9 +10544,11 @@ snapshots:
       https-proxy-agent: 7.0.6
       is-ci: 3.0.1
       js-yaml: 4.1.0
+      sanitize-filename: 1.6.3
       source-map-support: 0.5.21
       stat-mode: 1.0.0
       temp-file: 3.4.0
+      tiny-async-pool: 1.3.0
     transitivePeerDependencies:
       - supports-color
 
@@ -10747,9 +10594,9 @@ snapshots:
 
   cacheable-lookup@5.0.4: {}
 
-  cacheable-request@7.0.2:
+  cacheable-request@7.0.4:
     dependencies:
-      clone-response: 1.0.2
+      clone-response: 1.0.3
       get-stream: 5.2.0
       http-cache-semantics: 4.1.1
       keyv: 4.5.4
@@ -10835,6 +10682,8 @@ snapshots:
 
   ci-info@3.3.0: {}
 
+  ci-info@3.9.0: {}
+
   cjs-module-lexer@1.4.3: {}
 
   clean-stack@2.2.0: {}
@@ -10870,7 +10719,7 @@ snapshots:
       strip-ansi: 6.0.1
       wrap-ansi: 7.0.0
 
-  clone-response@1.0.2:
+  clone-response@1.0.3:
     dependencies:
       mimic-response: 1.0.1
 
@@ -10907,8 +10756,6 @@ snapshots:
       color-name: 1.1.4
       simple-swizzle: 0.2.2
 
-  color-support@1.1.3: {}
-
   color@3.2.1:
     dependencies:
       color-convert: 1.9.3
@@ -10929,9 +10776,6 @@ snapshots:
 
   commander@13.1.0: {}
 
-  commander@2.20.3:
-    optional: true
-
   commander@3.0.2: {}
 
   commander@5.1.0: {}
@@ -10948,13 +10792,6 @@ snapshots:
 
   compare-version@0.1.2: {}
 
-  compress-commons@4.1.2:
-    dependencies:
-      buffer-crc32: 0.2.13
-      crc32-stream: 4.0.3
-      normalize-path: 3.0.0
-      readable-stream: 3.6.2
-
   concat-map@0.0.1: {}
 
   config-file-ts@0.2.8-rc1:
@@ -10962,8 +10799,6 @@ snapshots:
       glob: 10.4.5
       typescript: 5.8.2
 
-  console-control-strings@1.1.0: {}
-
   convert-source-map@1.9.0: {}
 
   convert-source-map@2.0.0: {}
@@ -10987,25 +10822,18 @@ snapshots:
       path-type: 4.0.0
       yaml: 1.10.2
 
-  crc-32@1.2.2: {}
-
-  crc32-stream@4.0.3:
-    dependencies:
-      crc-32: 1.2.2
-      readable-stream: 3.6.2
-
   crc@3.8.0:
     dependencies:
       buffer: 5.7.1
     optional: true
 
-  create-jest@29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0):
+  create-jest@29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0):
     dependencies:
       '@jest/types': 29.6.3
       chalk: 4.1.2
       exit: 0.1.2
       graceful-fs: 4.2.11
-      jest-config: 29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0)
+      jest-config: 29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0)
       jest-util: 29.7.0
       prompts: 2.4.2
     transitivePeerDependencies:
@@ -11285,8 +11113,6 @@ snapshots:
 
   delayed-stream@1.0.0: {}
 
-  delegates@1.0.0: {}
-
   dequal@2.0.3: {}
 
   detect-libc@2.0.3: {}
@@ -11311,11 +11137,11 @@ snapshots:
       minimatch: 3.1.2
       p-limit: 3.1.0
 
-  dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8):
+  dmg-builder@26.0.12:
     dependencies:
-      app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8)
-      builder-util: 25.1.7
-      builder-util-runtime: 9.2.10
+      app-builder-lib: 26.0.12(dmg-builder@26.0.12)
+      builder-util: 26.0.11
+      builder-util-runtime: 9.3.1
       fs-extra: 10.1.0
       iconv-lite: 0.6.3
       js-yaml: 4.1.0
@@ -11328,8 +11154,8 @@ snapshots:
 
   dmg-license@1.0.11:
     dependencies:
-      '@types/plist': 3.0.2
-      '@types/verror': 1.10.5
+      '@types/plist': 3.0.5
+      '@types/verror': 1.10.11
       ajv: 6.12.6
       crc: 3.8.0
       iconv-corefoundation: 1.1.7
@@ -11383,11 +11209,11 @@ snapshots:
       dom-serializer: 0.2.2
       domelementtype: 1.3.1
 
-  dotenv-expand@11.0.6:
+  dotenv-expand@11.0.7:
     dependencies:
-      dotenv: 16.4.5
+      dotenv: 16.4.7
 
-  dotenv@16.4.5: {}
+  dotenv@16.4.7: {}
 
   dunder-proto@1.0.1:
     dependencies:
@@ -11399,26 +11225,15 @@ snapshots:
 
   ejs@3.1.10:
     dependencies:
-      jake: 10.8.5
-
-  electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8):
-    dependencies:
-      app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8)
-      archiver: 5.3.2
-      builder-util: 25.1.7
-      fs-extra: 10.1.0
-    transitivePeerDependencies:
-      - bluebird
-      - dmg-builder
-      - supports-color
+      jake: 10.9.2
 
-  electron-builder@25.1.8(electron-builder-squirrel-windows@25.1.8):
+  electron-builder@26.0.12:
     dependencies:
-      app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8)
-      builder-util: 25.1.7
-      builder-util-runtime: 9.2.10
+      app-builder-lib: 26.0.12(dmg-builder@26.0.12)
+      builder-util: 26.0.11
+      builder-util-runtime: 9.3.1
       chalk: 4.1.2
-      dmg-builder: 25.1.8(electron-builder-squirrel-windows@25.1.8)
+      dmg-builder: 26.0.12
       fs-extra: 10.1.0
       is-ci: 3.0.1
       lazy-val: 1.0.5
@@ -11429,12 +11244,13 @@ snapshots:
       - electron-builder-squirrel-windows
       - supports-color
 
-  electron-publish@25.1.7:
+  electron-publish@26.0.11:
     dependencies:
       '@types/fs-extra': 9.0.13
-      builder-util: 25.1.7
-      builder-util-runtime: 9.2.10
+      builder-util: 26.0.11
+      builder-util-runtime: 9.3.1
       chalk: 4.1.2
+      form-data: 4.0.2
       fs-extra: 10.1.0
       lazy-val: 1.0.5
       mime: 2.6.0
@@ -11443,7 +11259,7 @@ snapshots:
 
   electron-to-chromium@1.5.109: {}
 
-  electron-vite@3.0.0(@swc/core@1.11.15)(vite@6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1)):
+  electron-vite@3.1.0(@swc/core@1.11.15)(vite@6.2.6(@types/node@22.14.0)(yaml@2.7.1)):
     dependencies:
       '@babel/core': 7.26.10
       '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10)
@@ -11451,16 +11267,16 @@ snapshots:
       esbuild: 0.25.2
       magic-string: 0.30.17
       picocolors: 1.1.1
-      vite: 6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1)
+      vite: 6.2.6(@types/node@22.14.0)(yaml@2.7.1)
     optionalDependencies:
       '@swc/core': 1.11.15
     transitivePeerDependencies:
       - supports-color
 
-  electron@34.3.0:
+  electron@35.1.4:
     dependencies:
-      '@electron/get': 2.0.2
-      '@types/node': 20.17.29
+      '@electron/get': 2.0.3
+      '@types/node': 22.14.0
       extract-zip: 2.0.1
     transitivePeerDependencies:
       - supports-color
@@ -11657,13 +11473,13 @@ snapshots:
     optionalDependencies:
       '@testing-library/dom': 10.1.0
 
-  eslint-plugin-jest@28.11.0(@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0)(typescript@5.8.2))(eslint@9.23.0)(typescript@5.8.2))(eslint@9.23.0)(jest@29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0))(typescript@5.8.2):
+  eslint-plugin-jest@28.11.0(@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0)(typescript@5.8.2))(eslint@9.23.0)(typescript@5.8.2))(eslint@9.23.0)(jest@29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0))(typescript@5.8.2):
     dependencies:
       '@typescript-eslint/utils': 8.29.0(eslint@9.23.0)(typescript@5.8.2)
       eslint: 9.23.0
     optionalDependencies:
       '@typescript-eslint/eslint-plugin': 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0)(typescript@5.8.2))(eslint@9.23.0)(typescript@5.8.2)
-      jest: 29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0)
+      jest: 29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0)
     transitivePeerDependencies:
       - supports-color
       - typescript
@@ -11816,7 +11632,7 @@ snapshots:
       get-stream: 5.2.0
       yauzl: 2.10.0
     optionalDependencies:
-      '@types/yauzl': 2.10.0
+      '@types/yauzl': 2.10.3
     transitivePeerDependencies:
       - supports-color
 
@@ -11867,9 +11683,9 @@ snapshots:
     dependencies:
       flat-cache: 5.0.0
 
-  filelist@1.0.2:
+  filelist@1.0.4:
     dependencies:
-      minimatch: 3.1.2
+      minimatch: 5.1.6
 
   fill-range@7.1.1:
     dependencies:
@@ -11947,8 +11763,6 @@ snapshots:
 
   fromentries@1.3.2: {}
 
-  fs-constants@1.0.0: {}
-
   fs-exists-sync@0.1.0: {}
 
   fs-extra@10.1.0:
@@ -11957,7 +11771,7 @@ snapshots:
       jsonfile: 6.1.0
       universalify: 2.0.1
 
-  fs-extra@11.2.0:
+  fs-extra@11.3.0:
     dependencies:
       graceful-fs: 4.2.11
       jsonfile: 6.1.0
@@ -12005,17 +11819,6 @@ snapshots:
 
   functions-have-names@1.2.3: {}
 
-  gauge@4.0.4:
-    dependencies:
-      aproba: 2.0.0
-      color-support: 1.1.3
-      console-control-strings: 1.1.0
-      has-unicode: 2.0.1
-      signal-exit: 3.0.7
-      string-width: 4.2.3
-      strip-ansi: 6.0.1
-      wide-align: 1.1.5
-
   gensequence@7.0.0: {}
 
   gensync@1.0.0-beta.2: {}
@@ -12092,7 +11895,7 @@ snapshots:
 
   global-agent@3.0.0:
     dependencies:
-      boolean: 3.1.4
+      boolean: 3.2.0
       es6-error: 4.1.1
       matcher: 3.0.0
       roarr: 2.15.4
@@ -12135,10 +11938,10 @@ snapshots:
     dependencies:
       '@sindresorhus/is': 4.6.0
       '@szmarczak/http-timer': 4.0.6
-      '@types/cacheable-request': 6.0.2
-      '@types/responselike': 1.0.0
+      '@types/cacheable-request': 6.0.3
+      '@types/responselike': 1.0.3
       cacheable-lookup: 5.0.4
-      cacheable-request: 7.0.2
+      cacheable-request: 7.0.4
       decompress-response: 6.0.0
       http2-wrapper: 1.0.3
       lowercase-keys: 2.0.0
@@ -12173,8 +11976,6 @@ snapshots:
     dependencies:
       has-symbols: 1.1.0
 
-  has-unicode@2.0.1: {}
-
   hasha@5.2.2:
     dependencies:
       is-stream: 2.0.1
@@ -12410,7 +12211,7 @@ snapshots:
 
   is-ci@3.0.1:
     dependencies:
-      ci-info: 3.3.0
+      ci-info: 3.9.0
 
   is-core-module@2.16.1:
     dependencies:
@@ -12528,13 +12329,11 @@ snapshots:
 
   isarray@0.0.1: {}
 
-  isarray@1.0.0: {}
-
   isarray@2.0.5: {}
 
   isbinaryfile@4.0.10: {}
 
-  isbinaryfile@5.0.2: {}
+  isbinaryfile@5.0.4: {}
 
   isexe@2.0.0: {}
 
@@ -12618,11 +12417,11 @@ snapshots:
     optionalDependencies:
       '@pkgjs/parseargs': 0.11.0
 
-  jake@10.8.5:
+  jake@10.9.2:
     dependencies:
       async: 3.2.6
       chalk: 4.1.2
-      filelist: 1.0.2
+      filelist: 1.0.4
       minimatch: 3.1.2
 
   jest-canvas-mock@2.5.2:
@@ -12642,7 +12441,7 @@ snapshots:
       '@jest/expect': 29.7.0
       '@jest/test-result': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       chalk: 4.1.2
       co: 4.6.0
       dedent: 1.5.3(babel-plugin-macros@3.1.0)
@@ -12662,16 +12461,16 @@ snapshots:
       - babel-plugin-macros
       - supports-color
 
-  jest-cli@29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0):
+  jest-cli@29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0):
     dependencies:
       '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)
       '@jest/test-result': 29.7.0
       '@jest/types': 29.6.3
       chalk: 4.1.2
-      create-jest: 29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0)
+      create-jest: 29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0)
       exit: 0.1.2
       import-local: 3.0.3
-      jest-config: 29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0)
+      jest-config: 29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0)
       jest-util: 29.7.0
       jest-validate: 29.7.0
       yargs: 17.7.2
@@ -12681,14 +12480,14 @@ snapshots:
       - supports-color
       - ts-node
 
-  jest-config@29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0):
+  jest-config@29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0):
     dependencies:
       '@babel/core': 7.26.10
       '@jest/test-sequencer': 29.7.0
       '@jest/types': 29.6.3
       babel-jest: 29.7.0(@babel/core@7.26.10)
       chalk: 4.1.2
-      ci-info: 3.3.0
+      ci-info: 3.9.0
       deepmerge: 4.2.2
       glob: 7.2.3
       graceful-fs: 4.2.11
@@ -12706,7 +12505,7 @@ snapshots:
       slash: 3.0.0
       strip-json-comments: 3.1.1
     optionalDependencies:
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
     transitivePeerDependencies:
       - babel-plugin-macros
       - supports-color
@@ -12750,7 +12549,7 @@ snapshots:
       '@jest/environment': 29.7.0
       '@jest/fake-timers': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       jest-mock: 29.7.0
       jest-util: 29.7.0
 
@@ -12762,7 +12561,7 @@ snapshots:
     dependencies:
       '@jest/types': 29.6.3
       '@types/graceful-fs': 4.1.9
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       anymatch: 3.1.3
       fb-watchman: 2.0.2
       graceful-fs: 4.2.11
@@ -12808,13 +12607,13 @@ snapshots:
   jest-mock@29.7.0:
     dependencies:
       '@jest/types': 29.6.3
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       jest-util: 29.7.0
 
-  jest-playwright-preset@4.0.0(jest-circus@29.7.0(babel-plugin-macros@3.1.0))(jest-environment-node@29.7.0)(jest-runner@29.7.0)(jest@29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0)):
+  jest-playwright-preset@4.0.0(jest-circus@29.7.0(babel-plugin-macros@3.1.0))(jest-environment-node@29.7.0)(jest-runner@29.7.0)(jest@29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0)):
     dependencies:
       expect-playwright: 0.8.0
-      jest: 29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0)
+      jest: 29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0)
       jest-circus: 29.7.0(babel-plugin-macros@3.1.0)
       jest-environment-node: 29.7.0
       jest-process-manager: 0.4.0
@@ -12875,7 +12674,7 @@ snapshots:
       '@jest/test-result': 29.7.0
       '@jest/transform': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       chalk: 4.1.2
       emittery: 0.13.1
       graceful-fs: 4.2.11
@@ -12903,7 +12702,7 @@ snapshots:
       '@jest/test-result': 29.7.0
       '@jest/transform': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       chalk: 4.1.2
       cjs-module-lexer: 1.4.3
       collect-v8-coverage: 1.0.2
@@ -12958,7 +12757,7 @@ snapshots:
   jest-util@29.7.0:
     dependencies:
       '@jest/types': 29.6.3
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       chalk: 4.1.2
       ci-info: 3.3.0
       graceful-fs: 4.2.11
@@ -12973,11 +12772,11 @@ snapshots:
       leven: 3.1.0
       pretty-format: 29.7.0
 
-  jest-watch-typeahead@2.2.2(jest@29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0)):
+  jest-watch-typeahead@2.2.2(jest@29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0)):
     dependencies:
       ansi-escapes: 6.2.1
       chalk: 5.4.1
-      jest: 29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0)
+      jest: 29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0)
       jest-regex-util: 29.6.3
       jest-watcher: 29.7.0
       slash: 5.1.0
@@ -12988,7 +12787,7 @@ snapshots:
     dependencies:
       '@jest/test-result': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       ansi-escapes: 4.3.2
       chalk: 4.1.2
       emittery: 0.13.1
@@ -13002,17 +12801,17 @@ snapshots:
 
   jest-worker@29.7.0:
     dependencies:
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       jest-util: 29.7.0
       merge-stream: 2.0.0
       supports-color: 8.1.1
 
-  jest@29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0):
+  jest@29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0):
     dependencies:
       '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)
       '@jest/types': 29.6.3
       import-local: 3.0.3
-      jest-cli: 29.7.0(@types/node@20.17.29)(babel-plugin-macros@3.1.0)
+      jest-cli: 29.7.0(@types/node@22.14.0)(babel-plugin-macros@3.1.0)
     transitivePeerDependencies:
       - '@types/node'
       - babel-plugin-macros
@@ -13148,20 +12947,12 @@ snapshots:
     dependencies:
       json-buffer: 3.0.1
 
-  keyv@5.3.2:
-    dependencies:
-      '@keyv/serialize': 1.0.3
-
   kleur@3.0.3: {}
 
   kuler@2.0.0: {}
 
   lazy-val@1.0.5: {}
 
-  lazystream@1.0.1:
-    dependencies:
-      readable-stream: 2.3.8
-
   leven@3.1.0: {}
 
   levn@0.4.1:
@@ -13183,20 +12974,10 @@ snapshots:
 
   lodash.debounce@4.0.8: {}
 
-  lodash.defaults@4.2.0: {}
-
-  lodash.difference@4.5.0: {}
-
-  lodash.flatten@4.4.0: {}
-
   lodash.flattendeep@4.4.0: {}
 
-  lodash.isplainobject@4.0.6: {}
-
   lodash.merge@4.6.2: {}
 
-  lodash.union@4.6.0: {}
-
   lodash@4.17.21: {}
 
   log-symbols@4.1.0:
@@ -13257,7 +13038,7 @@ snapshots:
 
   make-fetch-happen@10.2.1:
     dependencies:
-      agentkeepalive: 4.5.0
+      agentkeepalive: 4.6.0
       cacache: 16.1.3
       http-cache-semantics: 4.1.1
       http-proxy-agent: 5.0.0
@@ -13638,17 +13419,17 @@ snapshots:
 
   ms@2.1.3: {}
 
-  msw-storybook-addon@2.0.4(msw@2.7.3(@types/node@20.17.29)(typescript@5.8.2)):
+  msw-storybook-addon@2.0.4(msw@2.7.3(@types/node@22.14.0)(typescript@5.8.2)):
     dependencies:
       is-node-process: 1.2.0
-      msw: 2.7.3(@types/node@20.17.29)(typescript@5.8.2)
+      msw: 2.7.3(@types/node@22.14.0)(typescript@5.8.2)
 
-  msw@2.7.3(@types/node@20.17.29)(typescript@5.8.2):
+  msw@2.7.3(@types/node@22.14.0)(typescript@5.8.2):
     dependencies:
       '@bundled-es-modules/cookie': 2.0.1
       '@bundled-es-modules/statuses': 1.0.1
       '@bundled-es-modules/tough-cookie': 0.1.6
-      '@inquirer/confirm': 5.1.6(@types/node@20.17.29)
+      '@inquirer/confirm': 5.1.6(@types/node@22.14.0)
       '@mswjs/interceptors': 0.37.6
       '@open-draft/deferred-promise': 2.2.0
       '@open-draft/until': 2.1.0
@@ -13678,62 +13459,45 @@ snapshots:
 
   negotiator@1.0.0: {}
 
-  node-abi@3.71.0:
+  node-abi@3.74.0:
     dependencies:
       semver: 7.7.1
 
   node-addon-api@1.7.2:
     optional: true
 
-  node-addon-api@7.1.0: {}
+  node-addon-api@7.1.1: {}
 
-  node-api-version@0.2.0:
+  node-api-version@0.2.1:
     dependencies:
       semver: 7.7.1
 
   node-forge@1.3.1: {}
 
-  node-gyp@11.0.0:
+  node-gyp@11.2.0:
     dependencies:
       env-paths: 2.2.1
       exponential-backoff: 3.1.2
-      glob: 10.4.5
       graceful-fs: 4.2.11
       make-fetch-happen: 14.0.3
       nopt: 8.1.0
       proc-log: 5.0.0
       semver: 7.7.1
       tar: 7.4.3
+      tinyglobby: 0.2.12
       which: 5.0.0
     transitivePeerDependencies:
       - supports-color
 
-  node-gyp@9.4.1:
-    dependencies:
-      env-paths: 2.2.1
-      exponential-backoff: 3.1.2
-      glob: 7.2.3
-      graceful-fs: 4.2.11
-      make-fetch-happen: 10.2.1
-      nopt: 6.0.0
-      npmlog: 6.0.2
-      rimraf: 3.0.2
-      semver: 7.7.1
-      tar: 6.2.1
-      which: 2.0.2
-    transitivePeerDependencies:
-      - bluebird
-      - supports-color
-
   node-int64@0.4.0: {}
 
   node-preload@0.2.1:
     dependencies:
       process-on-spawn: 1.1.0
 
-  node-pty@1.1.0-beta14:
+  node-pty@1.1.0-beta33:
     dependencies:
-      node-addon-api: 7.1.0
+      node-addon-api: 7.1.1
 
   node-releases@2.0.19: {}
 
@@ -13753,13 +13517,6 @@ snapshots:
     dependencies:
       path-key: 3.1.1
 
-  npmlog@6.0.2:
-    dependencies:
-      are-we-there-yet: 3.0.1
-      console-control-strings: 1.1.0
-      gauge: 4.0.4
-      set-blocking: 2.0.0
-
   nwsapi@2.2.16: {}
 
   nwsapi@2.2.9: {}
@@ -13971,7 +13728,7 @@ snapshots:
 
   path-type@4.0.0: {}
 
-  pe-library@0.4.0: {}
+  pe-library@0.4.1: {}
 
   pend@1.2.0: {}
 
@@ -14037,9 +13794,9 @@ snapshots:
       ansi-styles: 5.2.0
       react-is: 18.3.1
 
-  proc-log@5.0.0: {}
+  proc-log@2.0.1: {}
 
-  process-nextick-args@2.0.1: {}
+  proc-log@5.0.0: {}
 
   process-on-spawn@1.1.0:
     dependencies:
@@ -14081,7 +13838,7 @@ snapshots:
       '@protobufjs/path': 1.1.2
       '@protobufjs/pool': 1.1.0
       '@protobufjs/utf8': 1.1.0
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       long: 5.3.1
 
   proxy-from-env@1.1.0: {}
@@ -14114,7 +13871,7 @@ snapshots:
     dependencies:
       dnd-core: 14.0.1
 
-  react-dnd@14.0.5(@types/node@20.17.29)(@types/react@18.3.12)(react@18.3.1):
+  react-dnd@14.0.5(@types/node@22.14.0)(@types/react@18.3.12)(react@18.3.1):
     dependencies:
       '@react-dnd/invariant': 2.0.0
       '@react-dnd/shallowequal': 2.0.0
@@ -14123,7 +13880,7 @@ snapshots:
       hoist-non-react-statics: 3.3.2
       react: 18.3.1
     optionalDependencies:
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       '@types/react': 18.3.12
 
   react-docgen-typescript@2.2.2(typescript@5.8.2):
@@ -14245,26 +14002,12 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  readable-stream@2.3.8:
-    dependencies:
-      core-util-is: 1.0.3
-      inherits: 2.0.4
-      isarray: 1.0.0
-      process-nextick-args: 2.0.1
-      safe-buffer: 5.1.2
-      string_decoder: 1.1.1
-      util-deprecate: 1.0.2
-
   readable-stream@3.6.2:
     dependencies:
       inherits: 2.0.4
       string_decoder: 1.3.0
       util-deprecate: 1.0.2
 
-  readdir-glob@1.1.3:
-    dependencies:
-      minimatch: 5.1.6
-
   recast@0.23.11:
     dependencies:
       ast-types: 0.16.1
@@ -14368,9 +14111,9 @@ snapshots:
 
   requires-port@1.0.0: {}
 
-  resedit@1.7.0:
+  resedit@1.7.2:
     dependencies:
-      pe-library: 0.4.0
+      pe-library: 0.4.1
 
   resolve-alpn@1.2.1: {}
 
@@ -14424,7 +14167,7 @@ snapshots:
 
   roarr@2.15.4:
     dependencies:
-      boolean: 3.1.4
+      boolean: 3.2.0
       detect-node: 2.1.0
       globalthis: 1.0.4
       json-stringify-safe: 5.0.1
@@ -14485,8 +14228,6 @@ snapshots:
       has-symbols: 1.1.0
       isarray: 2.0.5
 
-  safe-buffer@5.1.2: {}
-
   safe-buffer@5.2.1: {}
 
   safe-push-apply@1.0.0:
@@ -14508,7 +14249,7 @@ snapshots:
     dependencies:
       truncate-utf8-bytes: 1.0.2
 
-  sax@1.2.4: {}
+  sax@1.4.1: {}
 
   saxes@6.0.0:
     dependencies:
@@ -14521,6 +14262,8 @@ snapshots:
   semver-compare@1.0.0:
     optional: true
 
+  semver@5.7.2: {}
+
   semver@6.3.1: {}
 
   semver@7.7.1: {}
@@ -14787,10 +14530,6 @@ snapshots:
       define-properties: 1.2.1
       es-object-atoms: 1.1.1
 
-  string_decoder@1.1.1:
-    dependencies:
-      safe-buffer: 5.1.2
-
   string_decoder@1.3.0:
     dependencies:
       safe-buffer: 5.2.1
@@ -14902,14 +14641,6 @@ snapshots:
     transitivePeerDependencies:
       - bare-buffer
 
-  tar-stream@2.2.0:
-    dependencies:
-      bl: 4.1.0
-      end-of-stream: 1.4.4
-      fs-constants: 1.0.0
-      inherits: 2.0.4
-      readable-stream: 3.6.2
-
   tar-stream@3.1.7:
     dependencies:
       b4a: 1.6.7
@@ -14939,14 +14670,6 @@ snapshots:
       async-exit-hook: 2.0.1
       fs-extra: 10.1.0
 
-  terser@5.31.1:
-    dependencies:
-      '@jridgewell/source-map': 0.3.6
-      acorn: 8.14.1
-      commander: 2.20.3
-      source-map-support: 0.5.21
-    optional: true
-
   test-exclude@6.0.0:
     dependencies:
       '@istanbuljs/schema': 0.1.3
@@ -14959,6 +14682,10 @@ snapshots:
 
   text-hex@1.0.0: {}
 
+  tiny-async-pool@1.3.0:
+    dependencies:
+      semver: 5.7.2
+
   tiny-invariant@1.3.3: {}
 
   tiny-warning@1.0.3: {}
@@ -14976,11 +14703,9 @@ snapshots:
 
   tmp-promise@3.0.3:
     dependencies:
-      tmp: 0.2.1
+      tmp: 0.2.3
 
-  tmp@0.2.1:
-    dependencies:
-      rimraf: 3.0.2
+  tmp@0.2.3: {}
 
   tmpl@1.0.5: {}
 
@@ -15017,7 +14742,7 @@ snapshots:
 
   truncate-utf8-bytes@1.0.2:
     dependencies:
-      utf8-byte-length: 1.0.4
+      utf8-byte-length: 1.0.5
 
   ts-api-utils@2.1.0(typescript@5.8.2):
     dependencies:
@@ -15114,6 +14839,8 @@ snapshots:
 
   undici-types@6.19.8: {}
 
+  undici-types@6.21.0: {}
+
   unicode-canonical-property-names-ecmascript@2.0.1: {}
 
   unicode-match-property-ecmascript@2.0.0:
@@ -15211,7 +14938,7 @@ snapshots:
     optionalDependencies:
       '@types/react': 18.3.12
 
-  utf8-byte-length@1.0.4: {}
+  utf8-byte-length@1.0.5: {}
 
   util-deprecate@1.0.2: {}
 
@@ -15252,30 +14979,29 @@ snapshots:
       '@types/unist': 3.0.3
       vfile-message: 4.0.2
 
-  vite-plugin-wasm@3.4.1(vite@6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1)):
+  vite-plugin-wasm@3.4.1(vite@6.2.6(@types/node@22.14.0)(yaml@2.7.1)):
     dependencies:
-      vite: 6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1)
+      vite: 6.2.6(@types/node@22.14.0)(yaml@2.7.1)
 
-  vite-tsconfig-paths@5.1.4(typescript@5.8.2)(vite@6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1)):
+  vite-tsconfig-paths@5.1.4(typescript@5.8.2)(vite@6.2.6(@types/node@22.14.0)(yaml@2.7.1)):
     dependencies:
       debug: 4.4.0
       globrex: 0.1.2
       tsconfck: 3.1.0(typescript@5.8.2)
     optionalDependencies:
-      vite: 6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1)
+      vite: 6.2.6(@types/node@22.14.0)(yaml@2.7.1)
     transitivePeerDependencies:
       - supports-color
       - typescript
 
-  vite@6.2.6(@types/node@20.17.29)(terser@5.31.1)(yaml@2.7.1):
+  vite@6.2.6(@types/node@22.14.0)(yaml@2.7.1):
     dependencies:
       esbuild: 0.25.2
       postcss: 8.5.3
       rollup: 4.39.0
     optionalDependencies:
-      '@types/node': 20.17.29
+      '@types/node': 22.14.0
       fsevents: 2.3.3
-      terser: 5.31.1
       yaml: 2.7.1
 
   vscode-languageserver-textdocument@1.0.12: {}
@@ -15401,10 +15127,6 @@ snapshots:
     dependencies:
       isexe: 3.1.1
 
-  wide-align@1.1.5:
-    dependencies:
-      string-width: 4.2.3
-
   winston-transport@4.9.0:
     dependencies:
       logform: 2.7.0
@@ -15527,12 +15249,6 @@ snapshots:
 
   yoctocolors-cjs@2.1.2: {}
 
-  zip-stream@4.1.1:
-    dependencies:
-      archiver-utils: 3.0.4
-      compress-commons: 4.1.2
-      readable-stream: 3.6.2
-
   zod-to-json-schema@3.24.5(zod@3.24.2):
     dependencies:
       zod: 3.24.2
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index eb1bbe3391d66..70afff1189f58 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -8,3 +8,18 @@ onlyBuiltDependencies:
   - msw
   - node-pty
   - protobufjs
+# Without this, electron-builder will pull in electron-builder-squirrel-windows (which we don't need)
+# and that dep will in turn pull electron-winstaller (which we also don't need). pnpm will then
+# start complaining that electron-winstaller is not in onlyBuiltDependencies.
+#
+# We could instead solve this by adding electron-winstaller to ignoredBuiltDependencies, but why
+# pull in deps that we don't use? Ultimately, the problem is that electron-builder-squirrel-windows
+# is defined as a peer dep of one of electron-builder deps, while in reality it's more like an
+# optional dep.
+autoInstallPeers: false
+strictPeerDependencies: true
+peerDependencyRules:
+  ignoreMissing:
+    # This dep is needed only when using Squirrel.Windows as an installer in electron-build which we
+    # don't use. https://www.electron.build/squirrel-windows.html
+    - electron-builder-squirrel-windows
diff --git a/web/packages/teleterm/build_resources/linux/after-install.tpl b/web/packages/teleterm/build_resources/linux/after-install.tpl
index 98ee9fec46b1c..8f29aca622fb0 100644
--- a/web/packages/teleterm/build_resources/linux/after-install.tpl
+++ b/web/packages/teleterm/build_resources/linux/after-install.tpl
@@ -24,6 +24,36 @@ if hash update-desktop-database 2>/dev/null; then
   update-desktop-database /usr/share/applications || true
 fi
 
+# Install apparmor profile. (Ubuntu 24+)
+# First check if the version of AppArmor running on the device supports our profile.
+# This is in order to keep backwards compatibility with Ubuntu 22.04 which does not support abi/4.0.
+# In that case, we just skip installing the profile since the app runs fine without it on 22.04.
+#
+# Those apparmor_parser flags are akin to performing a dry run of loading a profile.
+# https://wiki.debian.org/AppArmor/HowToUse#Dumping_profiles
+#
+# Unfortunately, at the moment AppArmor doesn't have a good story for backwards compatibility.
+# https://askubuntu.com/questions/1517272/writing-a-backwards-compatible-apparmor-profile
+if apparmor_status --enabled > /dev/null 2>&1; then
+  APPARMOR_PROFILE_SOURCE='/opt/${sanitizedProductName}/resources/apparmor-profile'
+  APPARMOR_PROFILE_TARGET='/etc/apparmor.d/${executable}'
+  if apparmor_parser --skip-kernel-load --debug "$APPARMOR_PROFILE_SOURCE" > /dev/null 2>&1; then
+    cp -f "$APPARMOR_PROFILE_SOURCE" "$APPARMOR_PROFILE_TARGET"
+
+    # Updating the current AppArmor profile is not possible and probably not meaningful in a chroot'ed environment.
+    # Use cases are for example environments where images for clients are maintained.
+    # There, AppArmor might correctly be installed, but live updating makes no sense.
+    if ! { [ -x '/usr/bin/ischroot' ] && /usr/bin/ischroot; } && hash apparmor_parser 2>/dev/null; then
+      # Extra flags taken from dh_apparmor:
+      # > By using '-W -T' we ensure that any abstraction updates are also pulled in.
+      # https://wiki.debian.org/AppArmor/Contribute/FirstTimeProfileImport
+      apparmor_parser --replace --write-cache --skip-read-cache "$APPARMOR_PROFILE_TARGET"
+    fi
+  else
+    echo "Skipping the installation of the AppArmor profile as this version of AppArmor does not seem to support the bundled profile"
+  fi
+fi
+
 ###
 # Custom after-install.tpl script.
 ###
@@ -69,32 +99,4 @@ else
   fi
 fi
 
-APPARMOR_PROFILE_SOURCE="$APP/resources/apparmor-profile"
-APPARMOR_PROFILE_TARGET="/etc/apparmor.d/teleport-connect"
-
-# Install apparmor profile.
-# First check if the version of AppArmor running on the device supports our profile.
-# This is in order to keep backwards compatibility with Ubuntu 22.04 which does not support abi/4.0.
-# In that case, we just skip installing the profile since the app runs fine without it on 22.04.
-#
-# Those apparmor_parser flags are akin to performing a dry run of loading a profile.
-# https://wiki.debian.org/AppArmor/HowToUse#Dumping_profiles
-#
-# Unfortunately, at the moment AppArmor doesn't have a good story for backwards compatibility.
-# https://askubuntu.com/questions/1517272/writing-a-backwards-compatible-apparmor-profile
-if test -d "/etc/apparmor.d"; then
-  if apparmor_parser --skip-kernel-load --debug "$APPARMOR_PROFILE_SOURCE" > /dev/null 2>&1; then
-    cp -f "$APPARMOR_PROFILE_SOURCE" "$APPARMOR_PROFILE_TARGET"
-
-    if hash apparmor_parser 2>/dev/null; then
-      # Extra flags taken from dh_apparmor:
-      # > By using '-W -T' we ensure that any abstraction updates are also pulled in.
-      # https://wiki.debian.org/AppArmor/Contribute/FirstTimeProfileImport
-      apparmor_parser --replace --write-cache --skip-read-cache "$APPARMOR_PROFILE_TARGET"
-    fi
-  else
-    echo "Skipping the installation of the AppArmor profile as this version of AppArmor does not seem to support the profile bundled with Teleport Connect."
-  fi
-fi
-
 # vim: syntax=sh
diff --git a/web/packages/teleterm/build_resources/linux/after-remove.tpl b/web/packages/teleterm/build_resources/linux/after-remove.tpl
index d5738efdfc21d..b599a2f840aa0 100644
--- a/web/packages/teleterm/build_resources/linux/after-remove.tpl
+++ b/web/packages/teleterm/build_resources/linux/after-remove.tpl
@@ -46,7 +46,7 @@ if [ -L "$TSH_SYMLINK_TARGET" ] && [ ! -e "$TSH_SYMLINK_TARGET" ]; then
   rm -f "$TSH_SYMLINK_TARGET"
 fi
 
-APPARMOR_PROFILE_DEST="/etc/apparmor.d/teleport-connect"
+APPARMOR_PROFILE_DEST='/etc/apparmor.d/${executable}'
 
 # Remove apparmor profile.
 if [ -f "$APPARMOR_PROFILE_DEST" ]; then
diff --git a/web/packages/teleterm/build_resources/linux/apparmor-profile b/web/packages/teleterm/build_resources/linux/apparmor-profile
deleted file mode 100644
index 4eaf8ec7e2d39..0000000000000
--- a/web/packages/teleterm/build_resources/linux/apparmor-profile
+++ /dev/null
@@ -1,9 +0,0 @@
-abi <abi/4.0>,
-include <tunables/global>
-
-profile teleport-connect /opt/Teleport\ Connect/teleport-connect flags=(unconfined) {
-  userns,
-
-  # Site-specific additions and overrides. See local/README for details.
-  include if exists <local/teleport-connect>
-}
diff --git a/web/packages/teleterm/electron-builder-config.js b/web/packages/teleterm/electron-builder-config.js
index 08fe3d73685ae..3094d7bc41fc8 100644
--- a/web/packages/teleterm/electron-builder-config.js
+++ b/web/packages/teleterm/electron-builder-config.js
@@ -152,30 +152,32 @@ module.exports = {
   },
   win: {
     target: ['nsis'],
-    // The algorithm passed here is not used, it only prevents the signing function from being called twice for each file.
-    // https://github.com/electron-userland/electron-builder/issues/3995#issuecomment-505725704
-    signingHashAlgorithms: ['sha256'],
-    sign: customSign => {
-      if (process.env.CI !== 'true') {
-        console.warn('Not running in CI pipeline: signing will be skipped');
-        return;
-      }
+    signtoolOptions: {
+      // The algorithm passed here is not used, it only prevents the signing function from being called twice for each file.
+      // https://github.com/electron-userland/electron-builder/issues/3995#issuecomment-505725704
+      signingHashAlgorithms: ['sha256'],
+      sign: customSign => {
+        if (process.env.CI !== 'true') {
+          console.warn('Not running in CI pipeline: signing will be skipped');
+          return;
+        }
 
-      spawnSync(
-        'powershell',
-        [
-          '-noprofile',
-          '-executionpolicy',
-          'bypass',
-          '-c',
-          "$ProgressPreference = 'SilentlyContinue'; " +
-            "$ErrorActionPreference = 'Stop'; " +
-            '$PSNativeCommandUseErrorActionPreference = $true; ' +
-            '. ../../../build.assets/windows/build.ps1; ' +
-            `Invoke-SignBinary -UnsignedBinaryPath "${customSign.path}"`,
-        ],
-        { stdio: 'inherit' }
-      );
+        spawnSync(
+          'powershell',
+          [
+            '-noprofile',
+            '-executionpolicy',
+            'bypass',
+            '-c',
+            "$ProgressPreference = 'SilentlyContinue'; " +
+              "$ErrorActionPreference = 'Stop'; " +
+              '$PSNativeCommandUseErrorActionPreference = $true; ' +
+              '. ../../../build.assets/windows/build.ps1; ' +
+              `Invoke-SignBinary -UnsignedBinaryPath "${customSign.path}"`,
+          ],
+          { stdio: 'inherit' }
+        );
+      },
     },
     artifactName: '${productName} Setup-${version}.${ext}',
     icon: 'build_resources/icon-win.ico',
diff --git a/web/packages/teleterm/package.json b/web/packages/teleterm/package.json
index f2ba812fb783c..137bcfd46ddbf 100644
--- a/web/packages/teleterm/package.json
+++ b/web/packages/teleterm/package.json
@@ -26,7 +26,7 @@
     "@grpc/grpc-js": "1.13.2",
     "@types/which": "^3.0.4",
     "node-forge": "^1.3.1",
-    "node-pty": "1.1.0-beta14",
+    "node-pty": "1.1.0-beta33",
     "ring-buffer-ts": "^1.2.0",
     "split2": "4.2.0",
     "strip-ansi": "^7.1.0",
@@ -35,7 +35,7 @@
     "winston": "^3.17.0"
   },
   "devDependencies": {
-    "@electron/notarize": "^2.5.0",
+    "@electron/notarize": "^3.0.1",
     "@gravitational/build": "workspace:*",
     "@gravitational/design": "workspace:*",
     "@gravitational/shared": "workspace:*",
@@ -45,9 +45,9 @@
     "@types/whatwg-url": "^13.0.0",
     "@xterm/addon-fit": "^0.10.0",
     "@xterm/xterm": "^5.5.0",
-    "electron": "34.3.0",
-    "electron-builder": "^25.1.8",
-    "electron-vite": "^3.0.0",
+    "electron": "35.1.4",
+    "electron-builder": "^26.0.12",
+    "electron-vite": "^3.1.0",
     "events": "3.3.0",
     "jest-canvas-mock": "^2.5.2",
     "react-dnd": "^14.0.4",


Reviews:
user: login: ravicious
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-01T14:04:21Z
user: login: gzdunek
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-02T08:18:04Z
user: login: ravicious
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-02T09:05:38Z
user: login: ravicious
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-04T16:27:46Z
user: login: ravicious
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-04T16:31:11Z
user: login: ravicious
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-04T16:35:29Z
user: login: ravicious
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-04T16:36:19Z
user: login: ravicious
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-04T17:14:34Z
user: login: ravicious
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-04T17:15:33Z
user: login: gzdunek
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-07T08:51:43Z
user: login: ryanclark
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-07T08:56:22Z
user: login: ravicious
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-07T09:09:07Z
user: login: ravicious
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-07T14:55:55Z
user: login: ravicious
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-07T15:03:35Z
user: login: ravicious
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-07T15:51:07Z
user: login: gzdunek
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-09T13:03:51Z
user: login: gzdunek
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-09T13:03:56Z
user: login: ravicious
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-10T07:14:37Z
user: login: ravicious
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-10T07:16:41Z
user: login: ravicious
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-10T07:20:14Z
user: login: gzdunek
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-10T07:44:18Z
user: login: gzdunek
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-10T07:46:48Z
user: login: tigrato
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-11T09:16:45Z
user: login: doggydogworld
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-11T16:02:31Z
user: login: zmb3
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-04-14T14:24:21Z
user: login: ravicious
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-14T14:42:48Z

Review comments:
path: web/packages/teleterm/package.json
user: login: ravicious
body: node-gyp was just updated to v11.2.0 which should fix the issue with Windows builds. It should be enough to bump it in package.json and then remove the unnecessary line from .npmrc.

@gzdunek do you remember why we've removed node-gyp from package.json? I'm mostly interested in whether it's a good idea to keep it there or not (for now we'll have to have it there so that node-pty uses the version from package.json and not v11.1.0 bundled with pnpm).
created_at: 2025-04-01T14:04:21Z
author_association: MEMBER
path: web/packages/teleterm/package.json
user: login: gzdunek
body: We removed it in this PR https://github.com/gravitational/teleport/pull/44383/files.

AFAIK we had it in package.json because we needed compatibility with Python 3.12 (and `@electron/rebuild` installed node-gyp@9). This was in times when we used Yarn so node-gyp binary was hoisted from the dependencies.

>I'm mostly interested in whether it's a good idea to keep it there or not

So now we have three version of node-gyp:
1. v11.1.0 in pnpm
2. v11.0.0 in package.json
3. v9.4.1 in `@electron/rebuild` which I believe is still used to build native modules when packaging the app.

Perhaps we can get rid of 2.? Now that the windows builds are fixed we will get an error if something goes wrong with installing/building the packages.
created_at: 2025-04-02T08:18:03Z
author_association: CONTRIBUTOR
path: web/packages/teleterm/package.json
user: login: ravicious
body: I don't think point 3 is actually the case. If you run `pnpm package-term` on Windows, it states which node-gyp version it's using. When I was working on fixing the bug in node-gyp 11.1.0, I haven't seen 9.4.1 mentioned in the output.

Or maybe `@electron/rebuild` does actually use node-gyp v9.4.1 for some things, but node-pty is hardwired to use node-gyp through npx (see https://github.com/microsoft/node-pty/issues/777), so it ends up using either the version from package.json (if defined) and if not it uses the freshest version available from the registry. pnpm indeed doesn't hoist node-gyp from `@electron/rebuild` unlike yarn, so that explanation makes sense to me. 
created_at: 2025-04-02T09:05:38Z
author_association: MEMBER
diff_hunk: @@ -8,3 +8,18 @@ onlyBuiltDependencies:
   - msw
   - node-pty
   - protobufjs
+# Without this, electron-builder will pull in electron-builder-squirrel-windows (which we don't need)
+# and that dep will in turn pull electron-winstaller (which we also don't need). pnpm will then
+# start complaining that electron-winstaller is not in onlyBuiltDependencies.
+#
+# We could instead solve this by adding electron-winstaller to ignoredBuiltDependencies, but why
+# pull in deps that we don't use? Ultimately, the problem is that electron-builder-squirrel-windows
+# is defined as a peer dep of one of electron-builder deps, while in reality it's more like an
+# optional dep.
+autoInstallPeers: false
path: pnpm-workspace.yaml
user: login: ravicious
body: npm does that by default since v7, pnpm started doing it too at some point.

I'm reading the RFD and just shaking my head the whole time. https://github.com/npm/rfcs/blob/main/implemented/0025-install-peer-deps.md

app-builder-lib has electron-builder-squirrel-windows as a peer dep, but from what I can tell it's more like an optional dep. Even [the docs](https://www.electron.build/squirrel-windows.html) tell you to install that squirrel-windows package _if_ you want to use Squirrel.Windows.

In any case, if I run `pnpm -i --resolution-only`, I see no complaints about peer deps. If I remove the squirrel dep from `ignoreMissing`, pnpm shows an error about a missing peer dep, which indicates to me that it's the only problematic peer dep in our project.
created_at: 2025-04-04T16:27:46Z
author_association: MEMBER
diff_hunk: @@ -46,10 +45,10 @@ importers:
         version: 5.69.0(react@18.3.1)
       '@uiw/codemirror-themes':
         specifier: ^4.23.10
-        version: 4.23.10(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.5)
+        version: 4.23.10(@codemirror/view@6.36.5)
       '@uiw/react-codemirror':
         specifier: ^4.23.10
-        version: 4.23.10(@babel/runtime@7.27.0)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.3)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.36.5)(codemirror@6.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        version: 4.23.10(@codemirror/autocomplete@6.18.6)(@codemirror/view@6.36.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
path: pnpm-lock.yaml
user: login: ravicious
body: @ryanclark What's the easiest way to test `e/web/teleport/src/AccessMonitoring/QueryEditor/QueryEditor.tsx` locally? It'd be nice to have a story, but for now I could get by with a patch that enables me to open it in my cluster.

I'm trying to turn off autoinstall of missing peer deps by default because of a misbehaving electron-builder dep (see https://github.com/gravitational/teleport/pull/53610#discussion_r2029115822). This causes some changes in the lockfile related to `@codemirror` packages, so I just wanted to confirm that the page is still working. `pnpm i --resolution-only` doesn't show any warnings about missing `@codemirror` peers, so I think it should be fine.
created_at: 2025-04-04T16:31:11Z
author_association: MEMBER
diff_hunk: @@ -45,9 +45,9 @@
     "@types/whatwg-url": "^13.0.0",
     "@xterm/addon-fit": "^0.10.0",
     "@xterm/xterm": "^5.5.0",
-    "electron": "34.3.0",
-    "electron-builder": "^25.1.8",
-    "electron-vite": "^3.0.0",
+    "electron": "35.1.4",
+    "electron-builder": "^26.0.12",
path: web/packages/teleterm/package.json
user: login: ravicious
body: The after-install script need to be updated. They have since added my solution for apparmor to it and then improved on it, it'd be better to keep ours in sync with what's in electron-builder.

https://github.com/electron-userland/electron-builder/commits/v26.0.12/packages/app-builder-lib/templates/linux/after-install.tpl

No other breaking changes though.
created_at: 2025-04-04T16:35:29Z
author_association: MEMBER
path: web/packages/teleterm/package.json
user: login: ravicious
body: Tag build: https://github.com/gravitational/teleport.e/actions/runs/14269972249
created_at: 2025-04-04T16:36:19Z
author_association: MEMBER
diff_hunk: @@ -3,13 +3,3 @@
 update-notifier=false
 # ESLint editor integrations expect ESLint's binary to be in the root node_modules.
 public-hoist-pattern[]=eslint
-# pnpm v10.3.0+ ships with node-gyp@11.1.0. That version of node-gyp has a bug which prevents
-# node-pty, one of Connect deps, from being built on Windows (https://github.com/nodejs/node-gyp/issues/3126).
-#
-# To work around this, we install node-gyp@11.0.0 as a dev dep and then tell node-pty through the below
-# config option to use node-gyp from our node_modules rather than the one bundled with pnpm.
-#
-# During pnpm install, the script is executed from a directory such as
-# <repo root>/node_modules/.pnpm/node-pty@1.1.0-beta14/node_modules/node-pty
-# so we escape five directories and then give a path to node-gyp.js.
-node_gyp=../../../../../node_modules/node-gyp/bin/node-gyp.js
path: .npmrc
user: login: ravicious
body: It looks like it's actually needed, as the Windows build tries to use 11.1.0 here. https://github.com/gravitational/teleport.e/actions/runs/14269972249/job/40000761147#step:7:456
created_at: 2025-04-04T17:14:34Z
author_association: MEMBER
diff_hunk: @@ -45,9 +45,9 @@
     "@types/whatwg-url": "^13.0.0",
     "@xterm/addon-fit": "^0.10.0",
     "@xterm/xterm": "^5.5.0",
-    "electron": "34.3.0",
-    "electron-builder": "^25.1.8",
-    "electron-vite": "^3.0.0",
+    "electron": "35.1.4",
+    "electron-builder": "^26.0.12",
path: web/packages/teleterm/package.json
user: login: ravicious
body: It looks like our win target is misconfigured after the update of electron-builder.

https://github.com/gravitational/teleport.e/actions/runs/14269972249/job/40000784322#step:15:300
created_at: 2025-04-04T17:15:33Z
author_association: MEMBER
diff_hunk: @@ -45,9 +45,9 @@
     "@types/whatwg-url": "^13.0.0",
     "@xterm/addon-fit": "^0.10.0",
     "@xterm/xterm": "^5.5.0",
-    "electron": "34.3.0",
-    "electron-builder": "^25.1.8",
-    "electron-vite": "^3.0.0",
+    "electron": "35.1.4",
+    "electron-builder": "^26.0.12",
path: web/packages/teleterm/package.json
user: login: gzdunek
body: I moved signing options to `signtoolOptions`:
>chore: remove deprecated fields from winOptions and macOptions. (For winOptions signing configuration, it has been moved to win.signtoolOptions in order to support azureOptions as a separate field and avoid bloating win configuration object. For macOptions, notarize options has been deprecated in favor of env vars for quite some time. Env vars are much more secure)
created_at: 2025-04-07T08:51:43Z
author_association: CONTRIBUTOR
diff_hunk: @@ -46,10 +45,10 @@ importers:
         version: 5.69.0(react@18.3.1)
       '@uiw/codemirror-themes':
         specifier: ^4.23.10
-        version: 4.23.10(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.5)
+        version: 4.23.10(@codemirror/view@6.36.5)
       '@uiw/react-codemirror':
         specifier: ^4.23.10
-        version: 4.23.10(@babel/runtime@7.27.0)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.3)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.36.5)(codemirror@6.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        version: 4.23.10(@codemirror/autocomplete@6.18.6)(@codemirror/view@6.36.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
path: pnpm-lock.yaml
user: login: ryanclark
body: You could probably just grab the `<CodeMirror />` component from there and move it somewhere you can test it, grabbing the `config` and the value state get/setter

That way it won't try to load a bunch of access monitoring stuff
created_at: 2025-04-07T08:56:22Z
author_association: MEMBER
path: package.json
user: login: ravicious
body: Tag build: https://github.com/gravitational/teleport.e/actions/runs/14305233663
created_at: 2025-04-07T09:09:06Z
author_association: MEMBER
path: package.json
user: login: ravicious
body: All Windows and macOS items from both check lists pass. What's left is updating the after-install script, making another tag build and then testing it on Linux.
created_at: 2025-04-07T14:55:55Z
author_association: MEMBER
diff_hunk: @@ -46,10 +45,10 @@ importers:
         version: 5.69.0(react@18.3.1)
       '@uiw/codemirror-themes':
         specifier: ^4.23.10
-        version: 4.23.10(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.5)
+        version: 4.23.10(@codemirror/view@6.36.5)
       '@uiw/react-codemirror':
         specifier: ^4.23.10
-        version: 4.23.10(@babel/runtime@7.27.0)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/lint@6.4.2)(@codemirror/search@6.5.3)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.36.5)(codemirror@6.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        version: 4.23.10(@codemirror/autocomplete@6.18.6)(@codemirror/view@6.36.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
path: pnpm-lock.yaml
user: login: ravicious
body: It renders, no errors are thrown and it shows autocomplete for SQL keywords, so I'm going to assume that it works. 👍

<img width="1280" alt="query-editor" src="https://github.com/user-attachments/assets/a7c26ab4-7e13-4235-8f9a-ab3e28fda786" />

created_at: 2025-04-07T15:03:34Z
author_association: MEMBER
diff_hunk: @@ -7,10 +7,7 @@ GOLANG_VERSION ?= go1.24.1
 GOLANGCI_LINT_VERSION ?= v1.64.7
 
 # NOTE: Remember to update engines.node in package.json to match the major version.
-# TODO(ravicious): When updating Node.js, see if corepack distributed with the new Node.JS version
-# is >= 0.31.0. If so, remove manual calls to install corepack@0.31.0 from CI scripts and
-# COREPACK_INTEGRITY_KEYS env var from windows/build.ps1.
-NODE_VERSION ?= 20.18.0
+NODE_VERSION ?= 22.14.0
path: build.assets/versions.mk
user: login: ravicious
body: We should also check if the Web UI builds correctly after the update and if Storybook still works. 😅
created_at: 2025-04-07T15:51:07Z
author_association: MEMBER
path: package.json
user: login: gzdunek
body: Tag build https://github.com/gravitational/teleport.e/actions/runs/14337660257.

I updated the after-install script and went through both electron and electron-builder checklists on Ubuntu and Fedora.
created_at: 2025-04-09T13:03:51Z
author_association: CONTRIBUTOR
diff_hunk: @@ -7,10 +7,7 @@ GOLANG_VERSION ?= go1.24.1
 GOLANGCI_LINT_VERSION ?= v1.64.7
 
 # NOTE: Remember to update engines.node in package.json to match the major version.
-# TODO(ravicious): When updating Node.js, see if corepack distributed with the new Node.JS version
-# is >= 0.31.0. If so, remove manual calls to install corepack@0.31.0 from CI scripts and
-# COREPACK_INTEGRITY_KEYS env var from windows/build.ps1.
-NODE_VERSION ?= 20.18.0
+NODE_VERSION ?= 22.14.0
path: build.assets/versions.mk
user: login: gzdunek
body: Tested, works fine. 
created_at: 2025-04-09T13:03:56Z
author_association: CONTRIBUTOR
diff_hunk: @@ -24,6 +24,36 @@ if hash update-desktop-database 2>/dev/null; then
   update-desktop-database /usr/share/applications || true
 fi
 
+# Install apparmor profile. (Ubuntu 24+)
+# First check if the version of AppArmor running on the device supports our profile.
+# This is in order to keep backwards compatibility with Ubuntu 22.04 which does not support abi/4.0.
+# In that case, we just skip installing the profile since the app runs fine without it on 22.04.
+#
+# Those apparmor_parser flags are akin to performing a dry run of loading a profile.
+# https://wiki.debian.org/AppArmor/HowToUse#Dumping_profiles
+#
+# Unfortunately, at the moment AppArmor doesn't have a good story for backwards compatibility.
+# https://askubuntu.com/questions/1517272/writing-a-backwards-compatible-apparmor-profile
+if apparmor_status --enabled > /dev/null 2>&1; then
+  APPARMOR_PROFILE_SOURCE='/opt/${sanitizedProductName}/resources/apparmor-profile'
path: web/packages/teleterm/build_resources/linux/after-install.tpl
user: login: ravicious
body: Does electron-builder include this file now somehow?
created_at: 2025-04-10T07:14:37Z
author_association: MEMBER
path: pnpm-workspace.yaml
user: login: ravicious
body: Regarding managing Node.js version through pnpm, I think that's a good idea, but we'd still need to check how it interacts with our CI and Make targets. I wouldn't want that to block this PR from being merged.
created_at: 2025-04-10T07:16:41Z
author_association: MEMBER
path: package.json
user: login: ravicious
body: @gzdunek I think we're ready now to move it out of draft, aren't we?
created_at: 2025-04-10T07:20:14Z
author_association: MEMBER
diff_hunk: @@ -24,6 +24,36 @@ if hash update-desktop-database 2>/dev/null; then
   update-desktop-database /usr/share/applications || true
 fi
 
+# Install apparmor profile. (Ubuntu 24+)
+# First check if the version of AppArmor running on the device supports our profile.
+# This is in order to keep backwards compatibility with Ubuntu 22.04 which does not support abi/4.0.
+# In that case, we just skip installing the profile since the app runs fine without it on 22.04.
+#
+# Those apparmor_parser flags are akin to performing a dry run of loading a profile.
+# https://wiki.debian.org/AppArmor/HowToUse#Dumping_profiles
+#
+# Unfortunately, at the moment AppArmor doesn't have a good story for backwards compatibility.
+# https://askubuntu.com/questions/1517272/writing-a-backwards-compatible-apparmor-profile
+if apparmor_status --enabled > /dev/null 2>&1; then
+  APPARMOR_PROFILE_SOURCE='/opt/${sanitizedProductName}/resources/apparmor-profile'
path: web/packages/teleterm/build_resources/linux/after-install.tpl
user: login: gzdunek
body: Yes. 
https://github.com/electron-userland/electron-builder/blob/bff46ec41c4a7715cc06f7dfd6ff95f8e4bbe869/packages/app-builder-lib/templates/linux/apparmor-profile.tpl

I verified that it's properly copied to `/etc/apparmor.d/teleport-connect`.
created_at: 2025-04-10T07:44:18Z
author_association: CONTRIBUTOR
diff_hunk: @@ -245,7 +245,7 @@ RUN export NODE_ARCH=$(if [ "$BUILDARCH" = "amd64" ]; then echo "x64"; else echo
     mkdir -p ${NODE_PATH} && \
     curl -o /tmp/nodejs.tar.xz -fsSL ${NODE_URL} && \
     tar -xJf /tmp/nodejs.tar.xz -C /usr/local/lib/nodejs-linux --strip-components=1
-RUN npm install -g corepack@0.31.0 && corepack enable yarn pnpm
+RUN corepack enable yarn pnpm
path: build.assets/Dockerfile
user: login: zmb3
body: Do we still need yarn here?
created_at: 2025-04-14T14:23:00Z
author_association: COLLABORATOR
diff_hunk: @@ -245,7 +245,7 @@ RUN export NODE_ARCH=$(if [ "$BUILDARCH" = "amd64" ]; then echo "x64"; else echo
     mkdir -p ${NODE_PATH} && \
     curl -o /tmp/nodejs.tar.xz -fsSL ${NODE_URL} && \
     tar -xJf /tmp/nodejs.tar.xz -C /usr/local/lib/nodejs-linux --strip-components=1
-RUN npm install -g corepack@0.31.0 && corepack enable yarn pnpm
+RUN corepack enable yarn pnpm
path: build.assets/Dockerfile
user: login: ravicious
body: `build.assets/Makefile` still seems to use it in this single place:

https://github.com/gravitational/teleport/blob/6190627ef77121ee512a1beeab5e1c48ffb93e50/build.assets/Makefile#L705-L708
created_at: 2025-04-14T14:42:48Z
author_association: MEMBER

PR comments:
user: login: gzdunek
created_at: 2025-04-09T13:05:03Z
body: What do we think of starting managing node version through pnpm? I mean adding `use-node-version={version}` to .npmrc.

I think Node upgrade is a good reason to do this, since not everyone may update to v22.
author_association: CONTRIBUTOR
user: login: backport-bot-workflows[bot]
created_at: 2025-04-14T14:46:44Z
body: 
@dependabot[bot] See the table below for backport results.

| Branch | Result |
|--------|--------|
| branch/v15 | [Failed](https://github.com/gravitational/teleport/runs/40515266267?check_suite_focus=true) |
| branch/v16 | [Failed](https://github.com/gravitational/teleport/runs/40515266267?check_suite_focus=true) |
| branch/v17 | [Failed](https://github.com/gravitational/teleport/runs/40515266267?check_suite_focus=true) |

author_association: CONTRIBUTOR