From 57a87782ef63d66cce9e6178c92d7ee298c99fea Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 31 Oct 2024 03:34:06 +0800 Subject: [PATCH 01/11] Bump Winget Releaser to `main` (#764) --- .github/workflows/winget.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/winget.yml b/.github/workflows/winget.yml index 6d6cacda..6eac195e 100644 --- a/.github/workflows/winget.yml +++ b/.github/workflows/winget.yml @@ -6,7 +6,7 @@ jobs: publish: runs-on: windows-latest steps: - - uses: vedantmgoyal9/winget-releaser@v2 + - uses: vedantmgoyal9/winget-releaser@main with: identifier: smartfrigde.Legcord - token: ${{secrets.PUBLIC_REPO_READ}} \ No newline at end of file + token: ${{secrets.PUBLIC_REPO_READ}} From 5c46ed0529d538d65c4a0e9c5cfe03e7e4fd07d4 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 31 Oct 2024 23:39:20 +0800 Subject: [PATCH 02/11] Add back Scoop installation instructions to readme (#765) [skip ci] --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e8ccfebb..8e2e1048 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,12 @@ Not available yet. ### Scoop package -Not available yet. +LegCord is also available on the [Extras](https://github.com/ScoopInstaller/Extras) repo + +```powershell +scoop bucket add extras # Ensure bucket is added first +scoop install legcord +``` ### AUR Package From 968557d2b4f0005d2140f46a8ebb558da6f5e560 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 31 Oct 2024 16:42:36 +0100 Subject: [PATCH 03/11] chore: bump electron version --- package.json | 2 +- pnpm-lock.yaml | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index b1ff9896..773e44bb 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@types/ws": "^8.5.12", "@uwu/lune": "^1.4.2", "@uwu/shelter-defs": "^1.4.1", - "electron": "33.0.1", + "electron": "33.0.2", "electron-builder": "^25.1.8", "rollup": "^4.24.0", "rollup-plugin-copy": "^3.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ed2c9b1c..96d4a2e4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -52,11 +52,11 @@ importers: specifier: ^1.4.1 version: 1.4.1 electron: - specifier: 33.0.1 - version: 33.0.1 + specifier: 33.0.2 + version: 33.0.2 electron-builder: specifier: ^25.1.8 - version: 25.1.8(electron-builder-squirrel-windows@25.1.8) + version: 25.1.8(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)) rollup: specifier: ^4.24.0 version: 4.24.0 @@ -1166,8 +1166,8 @@ packages: electron-publish@25.1.7: resolution: {integrity: sha512-+jbTkR9m39eDBMP4gfbqglDd6UvBC7RLh5Y0MhFSsc6UkGHj9Vj9TWobxevHYMMqmoujL11ZLjfPpMX+Pt6YEg==} - electron@33.0.1: - resolution: {integrity: sha512-PipPnWH4gvf7o+P8jlKQZGgPfb5eHcLgTrnKkFzb98MXhyPjVJYCR7YWqcawZ8IfyJCut8vMxLuBFLT1Ag8TSQ==} + electron@33.0.2: + resolution: {integrity: sha512-C2WksfP0COsMHbYXSJG68j6S3TjuGDrw/YT42B526yXalIlNQZ2GeAYKryg6AEMkIp3p8TUfDRD0+HyiyCt/nw==} engines: {node: '>= 12.20.55'} hasBin: true @@ -3083,7 +3083,7 @@ snapshots: app-builder-bin@5.0.0-alpha.10: {} - app-builder-lib@25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8): + app-builder-lib@25.1.8(dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8))(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)): dependencies: '@develar/schema-utils': 2.6.5 '@electron/notarize': 2.5.0 @@ -3468,7 +3468,7 @@ snapshots: dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8): dependencies: - app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8) + app-builder-lib: 25.1.8(dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8))(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)) builder-util: 25.1.7 builder-util-runtime: 9.2.10 fs-extra: 10.1.0 @@ -3507,7 +3507,7 @@ snapshots: 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) + app-builder-lib: 25.1.8(dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8))(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)) archiver: 5.3.2 builder-util: 25.1.7 fs-extra: 10.1.0 @@ -3516,9 +3516,9 @@ snapshots: - dmg-builder - supports-color - electron-builder@25.1.8(electron-builder-squirrel-windows@25.1.8): + electron-builder@25.1.8(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) + app-builder-lib: 25.1.8(dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8))(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)) builder-util: 25.1.7 builder-util-runtime: 9.2.10 chalk: 4.1.2 @@ -3559,7 +3559,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron@33.0.1: + electron@33.0.2: dependencies: '@electron/get': 2.0.3 '@types/node': 20.16.13 From 46daf96ccee698605f06a4e112f5119f3e6ae4a0 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Thu, 31 Oct 2024 16:44:06 +0100 Subject: [PATCH 04/11] fix: remove clientName setting --- src/@types/settings.d.ts | 1 - src/common/config.ts | 1 - src/discord/tray.ts | 9 ++++----- src/setup/tray.ts | 5 ++--- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/@types/settings.d.ts b/src/@types/settings.d.ts index 516af654..de2374d8 100644 --- a/src/@types/settings.d.ts +++ b/src/@types/settings.d.ts @@ -41,7 +41,6 @@ export interface Settings { | "ac_black_plug_hollow" | "default"; // old configs DON'T USE doneSetup: boolean; - clientName: string; smoothScroll: boolean; autoScroll: boolean; modCache?: Record; diff --git a/src/common/config.ts b/src/common/config.ts index bae7c23e..e1416301 100644 --- a/src/common/config.ts +++ b/src/common/config.ts @@ -29,7 +29,6 @@ const defaults: Settings = { mobileMode: false, trayIcon: "dynamic", doneSetup: false, - clientName: "Legcord", customIcon: join(import.meta.dirname, "../", "/assets/desktop.png"), smoothScroll: true, autoScroll: false, diff --git a/src/discord/tray.ts b/src/discord/tray.ts index 03f80636..65b0904b 100644 --- a/src/discord/tray.ts +++ b/src/discord/tray.ts @@ -27,11 +27,10 @@ export function createTray() { } if (getConfig("tray")) { - const clientName = getConfig("clientName") ?? "Legcord"; tray = new Tray(trayPath); const contextMenu = Menu.buildFromTemplate([ { - label: `${clientName} ${getDisplayVersion()}`, + label: `Legcord ${getDisplayVersion()}`, icon: trayPath, enabled: false, }, @@ -39,7 +38,7 @@ export function createTray() { type: "separator", }, { - label: `Open ${clientName}`, + label: "Open Legcord", click() { mainWindows.forEach((mainWindow) => { mainWindow.show(); @@ -75,7 +74,7 @@ export function createTray() { type: "separator", }, { - label: `Quit ${clientName}`, + label: "Quit Legcord", click() { setForceQuit(true); app.quit(); @@ -84,7 +83,7 @@ export function createTray() { ]); tray.setContextMenu(contextMenu); - tray.setToolTip(clientName); + tray.setToolTip("Legcord"); tray.on("click", () => { mainWindows.forEach((mainWindow) => { mainWindow.show(); diff --git a/src/setup/tray.ts b/src/setup/tray.ts index b60984f7..03d2a90f 100644 --- a/src/setup/tray.ts +++ b/src/setup/tray.ts @@ -1,7 +1,7 @@ import { unlink } from "node:fs"; import { join } from "node:path"; import { Menu, Tray, app, nativeImage } from "electron"; -import { getConfig, getConfigLocation } from "../common/config.js"; +import { getConfigLocation } from "../common/config.js"; export let tray: Tray; const trayIcon = "ac_plug_colored"; @@ -21,7 +21,6 @@ void app.whenReady().then(() => { trayPath; break; } - const clientName = getConfig("clientName") ?? "Legcord"; tray = new Tray(trayPath); const contextMenu = Menu.buildFromTemplate([ { @@ -29,7 +28,7 @@ void app.whenReady().then(() => { enabled: false, }, { - label: `Quit ${clientName}`, + label: "Quit Legcord", click() { unlink(getConfigLocation(), (err) => { if (err) throw err; From 58b10fa1c91ed3295cf07d937d69bf6a1d48de7d Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Sat, 2 Nov 2024 23:13:41 +0100 Subject: [PATCH 05/11] fix: wayland screensharing --- .vscode/settings.json | 5 ++++- src/screenshare/main.ts | 38 ++++++++++++++++---------------------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index e1dd8b09..31053ef1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -19,5 +19,8 @@ "vaapi" ], "cSpell.ignorePaths": ["assets/lang"], - "editor.defaultFormatter": "biomejs.biome" + "editor.defaultFormatter": "biomejs.biome", + "[typescript]": { + "editor.defaultFormatter": "vscode.typescript-language-features" + } } diff --git a/src/screenshare/main.ts b/src/screenshare/main.ts index 60617ac2..0002f8ad 100644 --- a/src/screenshare/main.ts +++ b/src/screenshare/main.ts @@ -12,25 +12,14 @@ import { getConfig } from "../common/config.js"; let capturerWindow: BrowserWindow; let isDone: boolean; -function showAudioDialog(): boolean { - const options: MessageBoxOptions = { - type: "question", - buttons: ["Yes", "No"], - defaultId: 1, - title: "Screenshare audio", - message: "Would you like to screenshare audio?", - detail: "Selecting yes will make viewers of your stream hear your entire system audio.", - }; - - void dialog.showMessageBox(capturerWindow, options).then(({ response }) => { - if (response === 0) { - return true; - } else { - return false; - } - }); - return true; -} +const audioDialogOptions: MessageBoxOptions = { + type: "question", + buttons: ["Yes", "No"], + defaultId: 1, + title: "Screenshare audio", + message: "Would you like to screenshare audio?", + detail: 'Selecting "Yes" will allow viewers to hear your entire system audio during the stream. If the screenshare does not start after confirming, audio screenshare may not be available.', +}; function registerCustomHandler(): void { session.defaultSession.setDisplayMediaRequestHandler( @@ -46,10 +35,15 @@ function registerCustomHandler(): void { console.log(sources); if (process.platform === "linux" && process.env.XDG_SESSION_TYPE?.toLowerCase() === "wayland") { console.log("WebRTC Capturer detected, skipping window creation."); //assume webrtc capturer is used - let options: Streams = { video: sources[0] }; + const options: Streams = { video: sources[0] }; if (sources[0] === undefined) return callback({}); - if (showAudioDialog() === true) options = { video: sources[0], audio: getConfig("audio") }; - callback(options); + void dialog.showMessageBox(capturerWindow, audioDialogOptions).then(({ response }) => { + if (response === 0) { + callback({ video: sources[0], audio: getConfig("audio") }); + } else { + callback(options); + } + }); } else { capturerWindow = new BrowserWindow({ width: 800, From 8ceafe61534e702eae1565f77881b032014fe1fd Mon Sep 17 00:00:00 2001 From: Aiden Date: Sun, 3 Nov 2024 16:43:57 -0500 Subject: [PATCH 06/11] bump versions --- package.json | 10 +- pnpm-lock.yaml | 307 ++++++++++++++++++++++++++----------------------- 2 files changed, 169 insertions(+), 148 deletions(-) diff --git a/package.json b/package.json index 773e44bb..ea6a4309 100644 --- a/package.json +++ b/package.json @@ -35,16 +35,16 @@ "@rollup/plugin-esm-shim": "^0.1.7", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-typescript": "^12.1.1", - "@types/node": "^22.7.7", - "@types/ws": "^8.5.12", + "@types/node": "^22.8.7", + "@types/ws": "^8.5.13", "@uwu/lune": "^1.4.2", "@uwu/shelter-defs": "^1.4.1", "electron": "33.0.2", "electron-builder": "^25.1.8", - "rollup": "^4.24.0", + "rollup": "^4.24.3", "rollup-plugin-copy": "^3.5.0", "rollup-plugin-esbuild": "^6.1.1", - "solid-js": "^1.9.2", + "solid-js": "^1.9.3", "typescript": "^5.6.3" }, "dependencies": { @@ -54,6 +54,6 @@ "v8-compile-cache": "^2.4.0", "ws": "^8.18.0" }, - "packageManager": "pnpm@9.12.0+sha512.4abf725084d7bcbafbd728bfc7bee61f2f791f977fd87542b3579dcb23504d170d46337945e4c66485cd12d588a0c0e570ed9c477e7ccdd8507cf05f3f92eaca", + "packageManager": "pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee", "package-manager-strict": false } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 96d4a2e4..b869486f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,22 +29,22 @@ importers: version: 1.9.4 '@rollup/plugin-commonjs': specifier: ^28.0.1 - version: 28.0.1(rollup@4.24.0) + version: 28.0.1(rollup@4.24.3) '@rollup/plugin-esm-shim': specifier: ^0.1.7 - version: 0.1.7(rollup@4.24.0) + version: 0.1.7(rollup@4.24.3) '@rollup/plugin-json': specifier: ^6.1.0 - version: 6.1.0(rollup@4.24.0) + version: 6.1.0(rollup@4.24.3) '@rollup/plugin-typescript': specifier: ^12.1.1 - version: 12.1.1(rollup@4.24.0)(tslib@2.8.0)(typescript@5.6.3) + version: 12.1.1(rollup@4.24.3)(tslib@2.8.0)(typescript@5.6.3) '@types/node': - specifier: ^22.7.7 - version: 22.7.7 + specifier: ^22.8.7 + version: 22.8.7 '@types/ws': - specifier: ^8.5.12 - version: 8.5.12 + specifier: ^8.5.13 + version: 8.5.13 '@uwu/lune': specifier: ^1.4.2 version: 1.4.2 @@ -56,19 +56,19 @@ importers: version: 33.0.2 electron-builder: specifier: ^25.1.8 - version: 25.1.8(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)) + version: 25.1.8(electron-builder-squirrel-windows@25.1.8) rollup: - specifier: ^4.24.0 - version: 4.24.0 + specifier: ^4.24.3 + version: 4.24.3 rollup-plugin-copy: specifier: ^3.5.0 version: 3.5.0 rollup-plugin-esbuild: specifier: ^6.1.1 - version: 6.1.1(esbuild@0.24.0)(rollup@4.24.0) + version: 6.1.1(esbuild@0.24.0)(rollup@4.24.3) solid-js: - specifier: ^1.9.2 - version: 1.9.2 + specifier: ^1.9.3 + version: 1.9.3 typescript: specifier: ^5.6.3 version: 5.6.3 @@ -135,8 +135,8 @@ packages: resolution: {integrity: sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==} engines: {node: '>= 8.9.0'} - '@electron/asar@3.2.13': - resolution: {integrity: sha512-pY5z2qQSwbFzJsBdgfJIzXf5ElHTVMutC2dxh0FD60njknMu3n1NnTABOcQwbb5/v5soqE79m9UjaJryBf3epg==} + '@electron/asar@3.2.15': + resolution: {integrity: sha512-AerUbRZpkDVRs58WP32t4U2bx85sfwRkQI8RMIEi6s2NBE++sgjsgAAMtXvnfTISKUkXo386pxFW7sa7WtMCrw==} engines: {node: '>=10.12.0'} hasBin: true @@ -603,8 +603,8 @@ packages: tslib: optional: true - '@rollup/pluginutils@5.1.2': - resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==} + '@rollup/pluginutils@5.1.3': + resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -612,83 +612,93 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.24.0': - resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} + '@rollup/rollup-android-arm-eabi@4.24.3': + resolution: {integrity: sha512-ufb2CH2KfBWPJok95frEZZ82LtDl0A6QKTa8MoM+cWwDZvVGl5/jNb79pIhRvAalUu+7LD91VYR0nwRD799HkQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.24.0': - resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} + '@rollup/rollup-android-arm64@4.24.3': + resolution: {integrity: sha512-iAHpft/eQk9vkWIV5t22V77d90CRofgR2006UiCjHcHJFVI1E0oBkQIAbz+pLtthFw3hWEmVB4ilxGyBf48i2Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.24.0': - resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} + '@rollup/rollup-darwin-arm64@4.24.3': + resolution: {integrity: sha512-QPW2YmkWLlvqmOa2OwrfqLJqkHm7kJCIMq9kOz40Zo9Ipi40kf9ONG5Sz76zszrmIZZ4hgRIkez69YnTHgEz1w==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.24.0': - resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} + '@rollup/rollup-darwin-x64@4.24.3': + resolution: {integrity: sha512-KO0pN5x3+uZm1ZXeIfDqwcvnQ9UEGN8JX5ufhmgH5Lz4ujjZMAnxQygZAVGemFWn+ZZC0FQopruV4lqmGMshow==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.24.0': - resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} + '@rollup/rollup-freebsd-arm64@4.24.3': + resolution: {integrity: sha512-CsC+ZdIiZCZbBI+aRlWpYJMSWvVssPuWqrDy/zi9YfnatKKSLFCe6fjna1grHuo/nVaHG+kiglpRhyBQYRTK4A==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.24.3': + resolution: {integrity: sha512-F0nqiLThcfKvRQhZEzMIXOQG4EeX61im61VYL1jo4eBxv4aZRmpin6crnBJQ/nWnCsjH5F6J3W6Stdm0mBNqBg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.24.3': + resolution: {integrity: sha512-KRSFHyE/RdxQ1CSeOIBVIAxStFC/hnBgVcaiCkQaVC+EYDtTe4X7z5tBkFyRoBgUGtB6Xg6t9t2kulnX6wJc6A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.24.0': - resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} + '@rollup/rollup-linux-arm-musleabihf@4.24.3': + resolution: {integrity: sha512-h6Q8MT+e05zP5BxEKz0vi0DhthLdrNEnspdLzkoFqGwnmOzakEHSlXfVyA4HJ322QtFy7biUAVFPvIDEDQa6rw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.24.0': - resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} + '@rollup/rollup-linux-arm64-gnu@4.24.3': + resolution: {integrity: sha512-fKElSyXhXIJ9pqiYRqisfirIo2Z5pTTve5K438URf08fsypXrEkVmShkSfM8GJ1aUyvjakT+fn2W7Czlpd/0FQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.24.0': - resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} + '@rollup/rollup-linux-arm64-musl@4.24.3': + resolution: {integrity: sha512-YlddZSUk8G0px9/+V9PVilVDC6ydMz7WquxozToozSnfFK6wa6ne1ATUjUvjin09jp34p84milxlY5ikueoenw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': - resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.24.3': + resolution: {integrity: sha512-yNaWw+GAO8JjVx3s3cMeG5Esz1cKVzz8PkTJSfYzE5u7A+NvGmbVFEHP+BikTIyYWuz0+DX9kaA3pH9Sqxp69g==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.24.0': - resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} + '@rollup/rollup-linux-riscv64-gnu@4.24.3': + resolution: {integrity: sha512-lWKNQfsbpv14ZCtM/HkjCTm4oWTKTfxPmr7iPfp3AHSqyoTz5AgLemYkWLwOBWc+XxBbrU9SCokZP0WlBZM9lA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.24.0': - resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} + '@rollup/rollup-linux-s390x-gnu@4.24.3': + resolution: {integrity: sha512-HoojGXTC2CgCcq0Woc/dn12wQUlkNyfH0I1ABK4Ni9YXyFQa86Fkt2Q0nqgLfbhkyfQ6003i3qQk9pLh/SpAYw==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.24.0': - resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} + '@rollup/rollup-linux-x64-gnu@4.24.3': + resolution: {integrity: sha512-mnEOh4iE4USSccBOtcrjF5nj+5/zm6NcNhbSEfR3Ot0pxBwvEn5QVUXcuOwwPkapDtGZ6pT02xLoPaNv06w7KQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.24.0': - resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} + '@rollup/rollup-linux-x64-musl@4.24.3': + resolution: {integrity: sha512-rMTzawBPimBQkG9NKpNHvquIUTQPzrnPxPbCY1Xt+mFkW7pshvyIS5kYgcf74goxXOQk0CP3EoOC1zcEezKXhw==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.24.0': - resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} + '@rollup/rollup-win32-arm64-msvc@4.24.3': + resolution: {integrity: sha512-2lg1CE305xNvnH3SyiKwPVsTVLCg4TmNCF1z7PSHX2uZY2VbUpdkgAllVoISD7JO7zu+YynpWNSKAtOrX3AiuA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.24.0': - resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} + '@rollup/rollup-win32-ia32-msvc@4.24.3': + resolution: {integrity: sha512-9SjYp1sPyxJsPWuhOCX6F4jUMXGbVVd5obVpoVEi8ClZqo52ViZewA6eFz85y8ezuOA+uJMP5A5zo6Oz4S5rVQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.24.0': - resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} + '@rollup/rollup-win32-x64-msvc@4.24.3': + resolution: {integrity: sha512-HGZgRFFYrMrP3TJlq58nR1xy8zHKId25vhmm5S9jETEfDf6xybPxsavFTJaufe2zgOGYJBskGlj49CwtEuFhWQ==} cpu: [x64] os: [win32] @@ -734,11 +744,11 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/node@20.16.13': - resolution: {integrity: sha512-GjQ7im10B0labo8ZGXDGROUl9k0BNyDgzfGpb4g/cl+4yYDWVKcozANF4FGr4/p0O/rAkQClM6Wiwkije++1Tg==} + '@types/node@20.17.6': + resolution: {integrity: sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==} - '@types/node@22.7.7': - resolution: {integrity: sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==} + '@types/node@22.8.7': + resolution: {integrity: sha512-LidcG+2UeYIWcMuMUpBKOnryBWG/rnmOHQR5apjn8myTQcx3rinFRn7DcIFhMnS0PPFSC6OafdIKEad0lj6U0Q==} '@types/plist@3.0.5': resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==} @@ -749,8 +759,8 @@ packages: '@types/verror@1.10.10': resolution: {integrity: sha512-l4MM0Jppn18hb9xmM6wwD1uTdShpf9Pn80aXTStnK1C94gtPvJcV2FrDmbOQUAQfJ1cKZHktkQUDwEqaAKXMMg==} - '@types/ws@8.5.12': - resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} + '@types/ws@8.5.13': + resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} @@ -1686,8 +1696,8 @@ packages: resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} engines: {node: '>= 8.0.0'} - isbinaryfile@5.0.3: - resolution: {integrity: sha512-VR4gNjFaDP8csJQvzInG20JvBj8MaHYLxNOMXysxRbGM7tcsHZwCjhch3FubFtZBkuDbN55i4dUukGeIrzF+6g==} + isbinaryfile@5.0.4: + resolution: {integrity: sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==} engines: {node: '>= 18.0.0'} isexe@2.0.0: @@ -2164,8 +2174,8 @@ packages: esbuild: '>=0.18.0' rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 - rollup@4.24.0: - resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} + rollup@4.24.3: + resolution: {integrity: sha512-HBW896xR5HGmoksbi3JBDtmVzWiPAYqp7wip50hjQ67JbDz61nyoMPdqu1DvVW9asYb2M65Z20ZHsyJCMqMyDg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2184,8 +2194,8 @@ packages: sanitize-filename@1.6.3: resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} - sass@1.80.3: - resolution: {integrity: sha512-ptDWyVmDMVielpz/oWy3YP3nfs7LpJTHIJZboMVs8GEC9eUmtZTZhMHlTW98wY4aEorDfjN38+Wr/XjskFWcfA==} + sass@1.80.6: + resolution: {integrity: sha512-ccZgdHNiBF1NHBsWvacvT5rju3y1d/Eu+8Ex6c21nHp2lZGLBEtuwc415QfiI1PJa1TpCo3iXwwSRjRpn2Ckjg==} engines: {node: '>=14.0.0'} hasBin: true @@ -2267,8 +2277,8 @@ packages: solid-js@1.6.16: resolution: {integrity: sha512-Ng4CahvLlpGA3BXIMiiMdwhI8WpObZ8gXqm97GCKR4+MpnODs6Pdpco+tmVCY/4ZDFaEKDxz7WRLAAdoXdlY7w==} - solid-js@1.9.2: - resolution: {integrity: sha512-fe/K03nV+kMFJYhAOE8AIQHcGxB4rMIEoEyrulbtmf217NffbbwBqJnJI4ovt16e+kaIt0czE2WA7mP/pYN9yg==} + solid-js@1.9.3: + resolution: {integrity: sha512-5ba3taPoZGt9GY3YlsCB24kCg0Lv/rie/HTD4kG6h4daZZz7+yK02xn8Vx8dLYBc9i6Ps5JwAbEiqjmKaLB3Ag==} sort-keys-length@1.0.1: resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} @@ -2528,9 +2538,8 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - '@electron/asar@3.2.13': + '@electron/asar@3.2.15': dependencies: - '@types/glob': 7.2.0 commander: 5.1.0 glob: 7.2.3 minimatch: 3.1.2 @@ -2590,7 +2599,7 @@ snapshots: '@electron/universal@2.0.1': dependencies: - '@electron/asar': 3.2.13 + '@electron/asar': 3.2.15 '@malept/cross-spawn-promise': 2.0.0 debug: 4.3.7 dir-compare: 4.2.0 @@ -2844,13 +2853,14 @@ snapshots: '@parcel/watcher-win32-arm64': 2.4.1 '@parcel/watcher-win32-ia32': 2.4.1 '@parcel/watcher-win32-x64': 2.4.1 + optional: true '@pkgjs/parseargs@0.11.0': optional: true - '@rollup/plugin-commonjs@28.0.1(rollup@4.24.0)': + '@rollup/plugin-commonjs@28.0.1(rollup@4.24.3)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.24.0) + '@rollup/pluginutils': 5.1.3(rollup@4.24.3) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.2(picomatch@4.0.2) @@ -2858,83 +2868,89 @@ snapshots: magic-string: 0.30.12 picomatch: 4.0.2 optionalDependencies: - rollup: 4.24.0 + rollup: 4.24.3 - '@rollup/plugin-esm-shim@0.1.7(rollup@4.24.0)': + '@rollup/plugin-esm-shim@0.1.7(rollup@4.24.3)': dependencies: magic-string: 0.30.12 optionalDependencies: - rollup: 4.24.0 + rollup: 4.24.3 - '@rollup/plugin-json@6.1.0(rollup@4.24.0)': + '@rollup/plugin-json@6.1.0(rollup@4.24.3)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.24.0) + '@rollup/pluginutils': 5.1.3(rollup@4.24.3) optionalDependencies: - rollup: 4.24.0 + rollup: 4.24.3 - '@rollup/plugin-typescript@12.1.1(rollup@4.24.0)(tslib@2.8.0)(typescript@5.6.3)': + '@rollup/plugin-typescript@12.1.1(rollup@4.24.3)(tslib@2.8.0)(typescript@5.6.3)': dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.24.0) + '@rollup/pluginutils': 5.1.3(rollup@4.24.3) resolve: 1.22.8 typescript: 5.6.3 optionalDependencies: - rollup: 4.24.0 + rollup: 4.24.3 tslib: 2.8.0 - '@rollup/pluginutils@5.1.2(rollup@4.24.0)': + '@rollup/pluginutils@5.1.3(rollup@4.24.3)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 - picomatch: 2.3.1 + picomatch: 4.0.2 optionalDependencies: - rollup: 4.24.0 + rollup: 4.24.3 - '@rollup/rollup-android-arm-eabi@4.24.0': + '@rollup/rollup-android-arm-eabi@4.24.3': optional: true - '@rollup/rollup-android-arm64@4.24.0': + '@rollup/rollup-android-arm64@4.24.3': optional: true - '@rollup/rollup-darwin-arm64@4.24.0': + '@rollup/rollup-darwin-arm64@4.24.3': optional: true - '@rollup/rollup-darwin-x64@4.24.0': + '@rollup/rollup-darwin-x64@4.24.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + '@rollup/rollup-freebsd-arm64@4.24.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.24.0': + '@rollup/rollup-freebsd-x64@4.24.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.24.0': + '@rollup/rollup-linux-arm-gnueabihf@4.24.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.24.0': + '@rollup/rollup-linux-arm-musleabihf@4.24.3': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + '@rollup/rollup-linux-arm64-gnu@4.24.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.24.0': + '@rollup/rollup-linux-arm64-musl@4.24.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.24.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.24.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.24.0': + '@rollup/rollup-linux-riscv64-gnu@4.24.3': optional: true - '@rollup/rollup-linux-x64-musl@4.24.0': + '@rollup/rollup-linux-s390x-gnu@4.24.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.24.0': + '@rollup/rollup-linux-x64-gnu@4.24.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.24.0': + '@rollup/rollup-linux-x64-musl@4.24.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.24.0': + '@rollup/rollup-win32-arm64-msvc@4.24.3': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.24.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.24.3': optional: true '@sindresorhus/is@4.6.0': {} @@ -2949,7 +2965,7 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 22.7.7 + '@types/node': 22.8.7 '@types/responselike': 1.0.3 '@types/debug@4.1.12': @@ -2960,55 +2976,55 @@ snapshots: '@types/fs-extra@8.1.5': dependencies: - '@types/node': 22.7.7 + '@types/node': 22.8.7 '@types/fs-extra@9.0.13': dependencies: - '@types/node': 22.7.7 + '@types/node': 22.8.7 '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.7.7 + '@types/node': 22.8.7 '@types/http-cache-semantics@4.0.4': {} '@types/keyv@3.1.4': dependencies: - '@types/node': 22.7.7 + '@types/node': 22.8.7 '@types/minimatch@5.1.2': {} '@types/ms@0.7.34': {} - '@types/node@20.16.13': + '@types/node@20.17.6': dependencies: undici-types: 6.19.8 - '@types/node@22.7.7': + '@types/node@22.8.7': dependencies: undici-types: 6.19.8 '@types/plist@3.0.5': dependencies: - '@types/node': 22.7.7 + '@types/node': 22.8.7 xmlbuilder: 15.1.1 optional: true '@types/responselike@1.0.3': dependencies: - '@types/node': 22.7.7 + '@types/node': 22.8.7 '@types/verror@1.10.10': optional: true - '@types/ws@8.5.12': + '@types/ws@8.5.13': dependencies: - '@types/node': 22.7.7 + '@types/node': 22.8.7 '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.7.7 + '@types/node': 22.8.7 optional: true '@uwu/lune@1.4.2': @@ -3083,7 +3099,7 @@ snapshots: app-builder-bin@5.0.0-alpha.10: {} - app-builder-lib@25.1.8(dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8))(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)): + app-builder-lib@25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8): dependencies: '@develar/schema-utils': 2.6.5 '@electron/notarize': 2.5.0 @@ -3109,7 +3125,7 @@ snapshots: fs-extra: 10.1.0 hosted-git-info: 4.1.0 is-ci: 3.0.1 - isbinaryfile: 5.0.3 + isbinaryfile: 5.0.4 js-yaml: 4.1.0 json5: 2.2.3 lazy-val: 1.0.5 @@ -3450,7 +3466,8 @@ snapshots: delegates@1.0.0: {} - detect-libc@1.0.3: {} + detect-libc@1.0.3: + optional: true detect-libc@2.0.3: {} @@ -3468,7 +3485,7 @@ snapshots: dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8): dependencies: - app-builder-lib: 25.1.8(dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8))(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)) + 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 fs-extra: 10.1.0 @@ -3507,7 +3524,7 @@ snapshots: 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))(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)) + 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 @@ -3516,9 +3533,9 @@ snapshots: - dmg-builder - supports-color - electron-builder@25.1.8(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)): + electron-builder@25.1.8(electron-builder-squirrel-windows@25.1.8): dependencies: - app-builder-lib: 25.1.8(dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8))(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)) + 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 chalk: 4.1.2 @@ -3562,7 +3579,7 @@ snapshots: electron@33.0.2: dependencies: '@electron/get': 2.0.3 - '@types/node': 20.16.13 + '@types/node': 20.17.6 extract-zip: 2.0.1 transitivePeerDependencies: - supports-color @@ -3651,7 +3668,7 @@ snapshots: dependencies: esbuild: 0.14.54 resolve: 1.22.8 - sass: 1.80.3 + sass: 1.80.6 esbuild-sunos-64@0.14.54: optional: true @@ -4116,7 +4133,7 @@ snapshots: isbinaryfile@4.0.10: {} - isbinaryfile@5.0.3: {} + isbinaryfile@5.0.4: {} isexe@2.0.0: {} @@ -4323,7 +4340,8 @@ snapshots: node-addon-api@1.7.2: optional: true - node-addon-api@7.1.1: {} + node-addon-api@7.1.1: + optional: true node-api-version@0.2.0: dependencies: @@ -4582,37 +4600,39 @@ snapshots: globby: 10.0.1 is-plain-object: 3.0.1 - rollup-plugin-esbuild@6.1.1(esbuild@0.24.0)(rollup@4.24.0): + rollup-plugin-esbuild@6.1.1(esbuild@0.24.0)(rollup@4.24.3): dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.24.0) + '@rollup/pluginutils': 5.1.3(rollup@4.24.3) debug: 4.3.7 es-module-lexer: 1.5.4 esbuild: 0.24.0 get-tsconfig: 4.8.1 - rollup: 4.24.0 + rollup: 4.24.3 transitivePeerDependencies: - supports-color - rollup@4.24.0: + rollup@4.24.3: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.24.0 - '@rollup/rollup-android-arm64': 4.24.0 - '@rollup/rollup-darwin-arm64': 4.24.0 - '@rollup/rollup-darwin-x64': 4.24.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 - '@rollup/rollup-linux-arm-musleabihf': 4.24.0 - '@rollup/rollup-linux-arm64-gnu': 4.24.0 - '@rollup/rollup-linux-arm64-musl': 4.24.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 - '@rollup/rollup-linux-riscv64-gnu': 4.24.0 - '@rollup/rollup-linux-s390x-gnu': 4.24.0 - '@rollup/rollup-linux-x64-gnu': 4.24.0 - '@rollup/rollup-linux-x64-musl': 4.24.0 - '@rollup/rollup-win32-arm64-msvc': 4.24.0 - '@rollup/rollup-win32-ia32-msvc': 4.24.0 - '@rollup/rollup-win32-x64-msvc': 4.24.0 + '@rollup/rollup-android-arm-eabi': 4.24.3 + '@rollup/rollup-android-arm64': 4.24.3 + '@rollup/rollup-darwin-arm64': 4.24.3 + '@rollup/rollup-darwin-x64': 4.24.3 + '@rollup/rollup-freebsd-arm64': 4.24.3 + '@rollup/rollup-freebsd-x64': 4.24.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.3 + '@rollup/rollup-linux-arm-musleabihf': 4.24.3 + '@rollup/rollup-linux-arm64-gnu': 4.24.3 + '@rollup/rollup-linux-arm64-musl': 4.24.3 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.3 + '@rollup/rollup-linux-riscv64-gnu': 4.24.3 + '@rollup/rollup-linux-s390x-gnu': 4.24.3 + '@rollup/rollup-linux-x64-gnu': 4.24.3 + '@rollup/rollup-linux-x64-musl': 4.24.3 + '@rollup/rollup-win32-arm64-msvc': 4.24.3 + '@rollup/rollup-win32-ia32-msvc': 4.24.3 + '@rollup/rollup-win32-x64-msvc': 4.24.3 fsevents: 2.3.3 run-parallel@1.2.0: @@ -4629,12 +4649,13 @@ snapshots: dependencies: truncate-utf8-bytes: 1.0.2 - sass@1.80.3: + sass@1.80.6: dependencies: - '@parcel/watcher': 2.4.1 chokidar: 4.0.1 immutable: 4.3.7 source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.4.1 sax@1.4.1: {} @@ -4705,7 +4726,7 @@ snapshots: dependencies: csstype: 3.1.3 - solid-js@1.9.2: + solid-js@1.9.3: dependencies: csstype: 3.1.3 seroval: 1.1.1 From 75123e51af0dd14d368178c1d4f1174a689a2f57 Mon Sep 17 00:00:00 2001 From: Aiden Date: Sun, 3 Nov 2024 17:02:54 -0500 Subject: [PATCH 07/11] Fix MacOS Media permissions #759 (#772) --- src/main.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main.ts b/src/main.ts index 71319ffc..4129df23 100644 --- a/src/main.ts +++ b/src/main.ts @@ -107,7 +107,6 @@ if (!app.requestSingleInstanceLock() && getConfig("multiInstance") === false) { if (getConfig("keybinds") === undefined) setConfig("keybinds", []); if (getConfig("trayIcon") === "default") setConfig("trayIcon", "dynamic"); if (getConfig("transparency") === undefined) setConfig("transparency", "none"); - // @ts-ignore if (getConfig("windowStyle") === "transparent") setConfig("windowStyle", "default"); if (getConfig("smoothScroll") === false) app.commandLine.appendSwitch("disable-smooth-scrolling"); if (getConfig("autoScroll")) app.commandLine.appendSwitch("enable-blink-features", "MiddleClickAutoscroll"); @@ -115,13 +114,10 @@ if (!app.requestSingleInstanceLock() && getConfig("multiInstance") === false) { void app.whenReady().then(async () => { // Patch for linux bug to insure things are loaded before window creation (fixes transparency on some linux systems) await new Promise((resolve) => - setTimeout( - () => - ( - // biome-ignore lint/style/noCommaOperator: // FIXME - What? - init(), resolve(), 1500 - ), - ), + setTimeout(() => { + // biome-ignore lint/style/noCommaOperator: // FIXME - What? + init(), resolve(), 1500; + }), ); session.defaultSession.setPermissionRequestHandler((_webContents, permission, callback) => { if (permission === "notifications") { @@ -130,6 +126,8 @@ if (!app.requestSingleInstanceLock() && getConfig("multiInstance") === false) { } if (permission === "media") { // Approves the permissions request + systemPreferences.askForMediaAccess("microphone"); + systemPreferences.askForMediaAccess("camera"); callback(true); } if (permission === "fullscreen") { From 111ce26ecaf0d9c1650a8c12b7f06ed258c7912f Mon Sep 17 00:00:00 2001 From: Aiden Date: Sun, 3 Nov 2024 17:10:52 -0500 Subject: [PATCH 08/11] fix: Only send MacOS permissions requests on MacOS --- src/main.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main.ts b/src/main.ts index 4129df23..4eab7286 100644 --- a/src/main.ts +++ b/src/main.ts @@ -119,16 +119,21 @@ if (!app.requestSingleInstanceLock() && getConfig("multiInstance") === false) { init(), resolve(), 1500; }), ); - session.defaultSession.setPermissionRequestHandler((_webContents, permission, callback) => { + session.defaultSession.setPermissionRequestHandler(async (_webContents, permission, callback) => { if (permission === "notifications") { // Approves the permissions request callback(true); } if (permission === "media") { - // Approves the permissions request - systemPreferences.askForMediaAccess("microphone"); - systemPreferences.askForMediaAccess("camera"); - callback(true); + if (process.platform === "darwin") { + const mic = await systemPreferences.askForMediaAccess("microphone"); + const cam = await systemPreferences.askForMediaAccess("camera"); + if (!(mic && cam)) { + callback(false); + } + } else { + callback(true); + } } if (permission === "fullscreen") { // Approves the permissions request From d2d93603e7e8b0c205b699744250ac02fc1d8d47 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Mon, 4 Nov 2024 20:48:00 +0100 Subject: [PATCH 09/11] fix: downgrade to e32 fixes vencord not loading in some instances --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index ea6a4309..6ec535df 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@types/ws": "^8.5.13", "@uwu/lune": "^1.4.2", "@uwu/shelter-defs": "^1.4.1", - "electron": "33.0.2", + "electron": "32.2.2", "electron-builder": "^25.1.8", "rollup": "^4.24.3", "rollup-plugin-copy": "^3.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b869486f..2488f584 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -52,8 +52,8 @@ importers: specifier: ^1.4.1 version: 1.4.1 electron: - specifier: 33.0.2 - version: 33.0.2 + specifier: 32.2.2 + version: 32.2.2 electron-builder: specifier: ^25.1.8 version: 25.1.8(electron-builder-squirrel-windows@25.1.8) @@ -1176,8 +1176,8 @@ packages: electron-publish@25.1.7: resolution: {integrity: sha512-+jbTkR9m39eDBMP4gfbqglDd6UvBC7RLh5Y0MhFSsc6UkGHj9Vj9TWobxevHYMMqmoujL11ZLjfPpMX+Pt6YEg==} - electron@33.0.2: - resolution: {integrity: sha512-C2WksfP0COsMHbYXSJG68j6S3TjuGDrw/YT42B526yXalIlNQZ2GeAYKryg6AEMkIp3p8TUfDRD0+HyiyCt/nw==} + electron@32.2.2: + resolution: {integrity: sha512-c7TRE42JcgEmJ4elJyCdKk/2os0UX7YMkRDeXBkxFEoM34iX1/2x+c5T9PgeroKz8FEG7omRU5TvjulqVtXvdw==} engines: {node: '>= 12.20.55'} hasBin: true @@ -3576,7 +3576,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron@33.0.2: + electron@32.2.2: dependencies: '@electron/get': 2.0.3 '@types/node': 20.17.6 From afcd79b04c54729bc3070209b2174865269aaafd Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Mon, 4 Nov 2024 20:58:30 +0100 Subject: [PATCH 10/11] fix: crash when user hasn't picked any sources partially fixes screenshare cancel --- src/screenshare/main.ts | 126 ++++++++++++++++++++++------------------ 1 file changed, 68 insertions(+), 58 deletions(-) diff --git a/src/screenshare/main.ts b/src/screenshare/main.ts index 0002f8ad..20a099b0 100644 --- a/src/screenshare/main.ts +++ b/src/screenshare/main.ts @@ -25,67 +25,77 @@ function registerCustomHandler(): void { session.defaultSession.setDisplayMediaRequestHandler( (request, callback) => { console.log(request); - void desktopCapturer - .getSources({ - types: ["screen", "window"], - }) - .then((sources) => { - if (!sources) return callback({}); - isDone = false; - console.log(sources); - if (process.platform === "linux" && process.env.XDG_SESSION_TYPE?.toLowerCase() === "wayland") { - console.log("WebRTC Capturer detected, skipping window creation."); //assume webrtc capturer is used - const options: Streams = { video: sources[0] }; - if (sources[0] === undefined) return callback({}); - void dialog.showMessageBox(capturerWindow, audioDialogOptions).then(({ response }) => { - if (response === 0) { - callback({ video: sources[0], audio: getConfig("audio") }); - } else { - callback(options); - } - }); - } else { - capturerWindow = new BrowserWindow({ - width: 800, - height: 600, - title: "Legcord Screenshare", - darkTheme: true, - icon: - getConfig("customIcon") ?? path.join(import.meta.dirname, "../", "/assets/desktop.png"), - frame: true, - autoHideMenuBar: true, - webPreferences: { - sandbox: false, - spellcheck: false, - preload: path.join(import.meta.dirname, "screenshare", "preload.mjs"), - }, - }); - ipcMain.once("selectScreenshareSource", (_event, id: string, name: string, audio: boolean) => { - isDone = true; - console.log(`Audio status: ${audio}`); - capturerWindow.close(); - const result = { id, name }; - let options: Streams = { video: sources[0] }; - switch (process.platform) { - case "win32": - case "linux": - options = { video: result }; - if (audio) options = { video: result, audio: getConfig("audio") }; + try { + desktopCapturer + .getSources({ + types: ["screen", "window"], + }) + .then((sources) => { + if (!sources) return callback({}); + isDone = false; + console.log(sources); + if (process.platform === "linux" && process.env.XDG_SESSION_TYPE?.toLowerCase() === "wayland") { + console.log("WebRTC Capturer detected, skipping window creation."); //assume webrtc capturer is used + const options: Streams = { video: sources[0] }; + if (sources[0] === undefined) return callback({}); + void dialog.showMessageBox(capturerWindow, audioDialogOptions).then(({ response }) => { + if (response === 0) { + callback({ video: sources[0], audio: getConfig("audio") }); + } else { callback(options); - break; - default: - callback({ video: result }); - } - }); - capturerWindow.on("closed", () => { - if (!isDone) callback({}); - }); - void capturerWindow.loadFile(path.join(import.meta.dirname, "html", "picker.html")); - capturerWindow.webContents.send("getSources", sources); - } - }); + } + }); + } else { + capturerWindow = new BrowserWindow({ + width: 800, + height: 600, + title: "Legcord Screenshare", + darkTheme: true, + icon: + getConfig("customIcon") ?? + path.join(import.meta.dirname, "../", "/assets/desktop.png"), + frame: true, + autoHideMenuBar: true, + webPreferences: { + sandbox: false, + spellcheck: false, + preload: path.join(import.meta.dirname, "screenshare", "preload.mjs"), + }, + }); + ipcMain.once( + "selectScreenshareSource", + (_event, id: string, name: string, audio: boolean) => { + isDone = true; + console.log(`Audio status: ${audio}`); + capturerWindow.close(); + const result = { id, name }; + let options: Streams = { video: sources[0] }; + switch (process.platform) { + case "win32": + case "linux": + options = { video: result }; + if (audio) options = { video: result, audio: getConfig("audio") }; + callback(options); + break; + default: + callback({ video: result }); + } + }, + ); + capturerWindow.on("closed", () => { + if (!isDone) callback({}); + }); + void capturerWindow.loadFile(path.join(import.meta.dirname, "html", "picker.html")); + capturerWindow.webContents.send("getSources", sources); + } + }); + } catch (error) { + console.error("Error in screenshare handler: ", error); + callback({}); + } }, { useSystemPicker: true }, ); } + registerCustomHandler(); From f3b7020837bf4e212e9e36b615773c3f287950a5 Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Tue, 5 Nov 2024 11:59:46 +0100 Subject: [PATCH 11/11] chore: screenshare cleanup --- .vscode/settings.json | 2 +- src/screenshare/main.ts | 125 ++++++++++++++++++---------------------- 2 files changed, 58 insertions(+), 69 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 31053ef1..9fdfbd59 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -21,6 +21,6 @@ "cSpell.ignorePaths": ["assets/lang"], "editor.defaultFormatter": "biomejs.biome", "[typescript]": { - "editor.defaultFormatter": "vscode.typescript-language-features" + "editor.defaultFormatter": "biomejs.biome" } } diff --git a/src/screenshare/main.ts b/src/screenshare/main.ts index 20a099b0..65843758 100644 --- a/src/screenshare/main.ts +++ b/src/screenshare/main.ts @@ -23,75 +23,64 @@ const audioDialogOptions: MessageBoxOptions = { function registerCustomHandler(): void { session.defaultSession.setDisplayMediaRequestHandler( - (request, callback) => { + async (request, callback) => { console.log(request); - try { - desktopCapturer - .getSources({ - types: ["screen", "window"], - }) - .then((sources) => { - if (!sources) return callback({}); - isDone = false; - console.log(sources); - if (process.platform === "linux" && process.env.XDG_SESSION_TYPE?.toLowerCase() === "wayland") { - console.log("WebRTC Capturer detected, skipping window creation."); //assume webrtc capturer is used - const options: Streams = { video: sources[0] }; - if (sources[0] === undefined) return callback({}); - void dialog.showMessageBox(capturerWindow, audioDialogOptions).then(({ response }) => { - if (response === 0) { - callback({ video: sources[0], audio: getConfig("audio") }); - } else { - callback(options); - } - }); - } else { - capturerWindow = new BrowserWindow({ - width: 800, - height: 600, - title: "Legcord Screenshare", - darkTheme: true, - icon: - getConfig("customIcon") ?? - path.join(import.meta.dirname, "../", "/assets/desktop.png"), - frame: true, - autoHideMenuBar: true, - webPreferences: { - sandbox: false, - spellcheck: false, - preload: path.join(import.meta.dirname, "screenshare", "preload.mjs"), - }, - }); - ipcMain.once( - "selectScreenshareSource", - (_event, id: string, name: string, audio: boolean) => { - isDone = true; - console.log(`Audio status: ${audio}`); - capturerWindow.close(); - const result = { id, name }; - let options: Streams = { video: sources[0] }; - switch (process.platform) { - case "win32": - case "linux": - options = { video: result }; - if (audio) options = { video: result, audio: getConfig("audio") }; - callback(options); - break; - default: - callback({ video: result }); - } - }, - ); - capturerWindow.on("closed", () => { - if (!isDone) callback({}); - }); - void capturerWindow.loadFile(path.join(import.meta.dirname, "html", "picker.html")); - capturerWindow.webContents.send("getSources", sources); - } - }); - } catch (error) { - console.error("Error in screenshare handler: ", error); - callback({}); + isDone = false; + const sources = await desktopCapturer + .getSources({ + types: ["window", "screen"], + }) + .catch((err) => console.error(err)); + + if (!sources) return callback({}); + if (process.platform === "linux" && process.env.XDG_SESSION_TYPE?.toLowerCase() === "wayland") { + console.log("WebRTC Capturer detected, skipping window creation."); + const options: Streams = { video: sources[0] }; + if (sources[0] === undefined) return callback({}); + void dialog.showMessageBox(capturerWindow, audioDialogOptions).then(({ response }) => { + if (response === 0) { + callback({ video: sources[0], audio: getConfig("audio") }); + } else { + callback(options); + } + }); + } else { + capturerWindow = new BrowserWindow({ + width: 800, + height: 600, + title: "Legcord Screenshare", + darkTheme: true, + icon: getConfig("customIcon") ?? path.join(import.meta.dirname, "../", "/assets/desktop.png"), + frame: true, + autoHideMenuBar: true, + webPreferences: { + sandbox: false, + spellcheck: false, + preload: path.join(import.meta.dirname, "screenshare", "preload.mjs"), + }, + }); + ipcMain.once("selectScreenshareSource", (_event, id: string, name: string, audio: boolean) => { + isDone = true; + console.log(`Audio status: ${audio}`); + capturerWindow.close(); + const result = { id, name }; + let options: Streams = { video: sources[0] }; + switch (process.platform) { + case "win32": + case "linux": + options = { video: result }; + if (audio) options = { video: result, audio: getConfig("audio") }; + callback(options); + break; + default: + callback({ video: result }); + } + }); + capturerWindow.on("closed", () => { + if (!isDone) callback({}); + }); + void capturerWindow.loadFile(path.join(import.meta.dirname, "html", "picker.html")); + capturerWindow.webContents.send("getSources", sources); } }, { useSystemPicker: true },