From 96b0652a0673ac781607d1944b62d29aceac42e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Vani=C5=A1?= Date: Fri, 24 Nov 2023 23:14:23 +0100 Subject: [PATCH 01/26] feat: Add option to disable smooth scrolling (#255) --- src/main/index.ts | 6 ++++++ src/renderer/components/Settings.tsx | 1 + src/shared/settings.d.ts | 1 + 3 files changed, 8 insertions(+) diff --git a/src/main/index.ts b/src/main/index.ts index c37d433..832afc8 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -24,6 +24,12 @@ if (IS_DEV) { process.env.VENCORD_USER_DATA_DIR = DATA_DIR; function init() { + const { disableSmoothScroll } = Settings.store; + + if (disableSmoothScroll) { + app.commandLine.appendSwitch("disable-smooth-scrolling"); + } + // work around chrome 66 disabling autoplay by default app.commandLine.appendSwitch("autoplay-policy", "no-user-gesture-required"); diff --git a/src/renderer/components/Settings.tsx b/src/renderer/components/Settings.tsx index e0dcd55..f818c3c 100644 --- a/src/renderer/components/Settings.tsx +++ b/src/renderer/components/Settings.tsx @@ -42,6 +42,7 @@ export default function SettingsUi() { ], ["staticTitle", "Static Title", 'Makes the window title "Vesktop" instead of changing to the current page'], ["enableMenu", "Enable Menu Bar", "Enables the application menu bar. Press ALT to toggle visibility."], + ["disableSmoothScroll", "Disable smooth scrolling", "Disables smooth scrolling in Vesktop", false], ["splashTheming", "Splash theming", "Adapt the splash window colors to your custom theme", false], [ "openLinksWithElectron", diff --git a/src/shared/settings.d.ts b/src/shared/settings.d.ts index 5b5fd4c..5cb6ca0 100644 --- a/src/shared/settings.d.ts +++ b/src/shared/settings.d.ts @@ -15,6 +15,7 @@ export interface Settings { openLinksWithElectron?: boolean; staticTitle?: boolean; enableMenu?: boolean; + disableSmoothScroll?: boolean; arRPC?: boolean; appBadge?: boolean; discordWindowsTitleBar?: boolean; From 06dea79c7445f6c14467356d54fca52d8a902c33 Mon Sep 17 00:00:00 2001 From: V Date: Sat, 2 Dec 2023 14:54:54 +0100 Subject: [PATCH 02/26] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5d2ae0e..c776011 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,9 @@ Vesktop is a cross platform desktop app aiming to give you a snappier Discord ex Bug reports, feature requests & contributions are highly appreciated!! -![image](https://user-images.githubusercontent.com/45497981/235024615-94565eaf-f412-4384-a3f5-d8cde7458f6d.png) +![](https://github.com/Vencord/Vesktop/assets/45497981/8608a899-96a9-4027-9725-2cb02ba189fd) +![grafik](https://github.com/Vencord/Vesktop/assets/45497981/8701e5de-52c4-4346-a990-719cb971642e) + ## Installing From c39678d733397c59fb88a69de20fae0ae2077a2f Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 2 Dec 2023 17:10:33 +0100 Subject: [PATCH 03/26] vesktop.desktop: remove faulty WMClass field --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index bf4ba93..2fe0c75 100644 --- a/package.json +++ b/package.json @@ -109,7 +109,6 @@ "Type": "Application", "Categories": "Network;InstantMessaging;Chat;", "Keywords": "discord;vencord;electron;chat;", - "WMClass": "VencordDesktop", "StartupWMClass": "VencordDesktop" } }, From e3839c35b704be20e1e4247f927dfcc181706566 Mon Sep 17 00:00:00 2001 From: viacoro <103315372+viacoro@users.noreply.github.com> Date: Sat, 2 Dec 2023 17:11:10 +0100 Subject: [PATCH 04/26] unblur shiggy in splash screen (#221) --- static/views/splash.html | 1 + 1 file changed, 1 insertion(+) diff --git a/static/views/splash.html b/static/views/splash.html index 7cb571b..a82ff33 100644 --- a/static/views/splash.html +++ b/static/views/splash.html @@ -24,6 +24,7 @@ img { width: 6em; height: 6em; + image-rendering: pixelated; } From 2917ff25e543690145516a988c32c41ea62b464d Mon Sep 17 00:00:00 2001 From: Nico Date: Sat, 2 Dec 2023 17:17:59 +0100 Subject: [PATCH 05/26] Bump dependencies (#258) Co-authored-by: V --- package.json | 30 +- pnpm-lock.yaml | 543 +++++++++++++--------------- scripts/build/build.mts | 2 - scripts/build/tsconfig.esbuild.json | 7 - src/shared/utils/SettingsStore.ts | 4 +- 5 files changed, 272 insertions(+), 314 deletions(-) delete mode 100644 scripts/build/tsconfig.esbuild.json diff --git a/package.json b/package.json index 2fe0c75..eaf510d 100644 --- a/package.json +++ b/package.json @@ -23,23 +23,23 @@ "watch": "pnpm build --watch" }, "dependencies": { - "arrpc": "github:OpenAsar/arrpc#89f4da610ccfac93f461826a446a17cd3b23953d" + "arrpc": "github:OpenAsar/arrpc#3e22fd776273afaa4a80c51deb86077ffdd4d2ae" }, "optionalDependencies": { - "@vencord/venmic": "^2.1.2" + "@vencord/venmic": "^2.1.3" }, "devDependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@types/node": "^20.8.4", - "@types/react": "^18.2.28", - "@typescript-eslint/eslint-plugin": "^6.7.5", - "@typescript-eslint/parser": "^6.7.5", + "@types/node": "^20.10.0", + "@types/react": "^18.2.39", + "@typescript-eslint/eslint-plugin": "^6.13.1", + "@typescript-eslint/parser": "^6.13.1", "@vencord/types": "^0.1.2", "dotenv": "^16.3.1", - "electron": "^27.0.0", - "electron-builder": "^24.6.4", - "esbuild": "^0.19.4", - "eslint": "^8.51.0", + "electron": "^27.1.2", + "electron-builder": "^24.9.1", + "esbuild": "^0.19.8", + "eslint": "^8.54.0", "eslint-config-prettier": "^9.0.0", "eslint-import-resolver-alias": "^1.1.2", "eslint-plugin-license-header": "^0.6.0", @@ -47,13 +47,13 @@ "eslint-plugin-prettier": "^5.0.1", "eslint-plugin-simple-import-sort": "^10.0.0", "eslint-plugin-unused-imports": "^3.0.0", - "prettier": "^3.0.3", + "prettier": "^3.1.0", "source-map-support": "^0.5.21", - "tsx": "^3.13.0", - "type-fest": "^4.4.0", - "typescript": "^5.2.2" + "tsx": "^4.6.0", + "type-fest": "^4.8.2", + "typescript": "^5.3.2" }, - "packageManager": "pnpm@8.6.11", + "packageManager": "pnpm@8.11.0", "engines": { "node": ">=18", "pnpm": ">=8" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b3d4db8..8ac9af2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,30 +6,30 @@ settings: dependencies: arrpc: - specifier: github:OpenAsar/arrpc#89f4da610ccfac93f461826a446a17cd3b23953d - version: github.com/OpenAsar/arrpc/89f4da610ccfac93f461826a446a17cd3b23953d + specifier: github:OpenAsar/arrpc#3e22fd776273afaa4a80c51deb86077ffdd4d2ae + version: github.com/OpenAsar/arrpc/3e22fd776273afaa4a80c51deb86077ffdd4d2ae optionalDependencies: '@vencord/venmic': - specifier: ^2.1.2 - version: 2.1.2 + specifier: ^2.1.3 + version: 2.1.3 devDependencies: '@fal-works/esbuild-plugin-global-externals': specifier: ^2.1.2 version: 2.1.2 '@types/node': - specifier: ^20.8.4 - version: 20.8.4 + specifier: ^20.10.0 + version: 20.10.0 '@types/react': - specifier: ^18.2.28 - version: 18.2.28 + specifier: ^18.2.39 + version: 18.2.39 '@typescript-eslint/eslint-plugin': - specifier: ^6.7.5 - version: 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2) + specifier: ^6.13.1 + version: 6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.54.0)(typescript@5.3.2) '@typescript-eslint/parser': - specifier: ^6.7.5 - version: 6.7.5(eslint@8.51.0)(typescript@5.2.2) + specifier: ^6.13.1 + version: 6.13.1(eslint@8.54.0)(typescript@5.3.2) '@vencord/types': specifier: ^0.1.2 version: 0.1.2 @@ -37,20 +37,20 @@ devDependencies: specifier: ^16.3.1 version: 16.3.1 electron: - specifier: ^27.0.0 - version: 27.0.0 + specifier: ^27.1.2 + version: 27.1.2 electron-builder: - specifier: ^24.6.4 - version: 24.6.4 + specifier: ^24.9.1 + version: 24.9.1 esbuild: - specifier: ^0.19.4 - version: 0.19.4 + specifier: ^0.19.8 + version: 0.19.8 eslint: - specifier: ^8.51.0 - version: 8.51.0 + specifier: ^8.54.0 + version: 8.54.0 eslint-config-prettier: specifier: ^9.0.0 - version: 9.0.0(eslint@8.51.0) + version: 9.0.0(eslint@8.54.0) eslint-import-resolver-alias: specifier: ^1.1.2 version: 1.1.2(eslint-plugin-import@2.29.0) @@ -59,36 +59,36 @@ devDependencies: version: 0.6.0 eslint-plugin-path-alias: specifier: ^1.0.0 - version: 1.0.0(eslint@8.51.0) + version: 1.0.0(eslint@8.54.0) eslint-plugin-prettier: specifier: ^5.0.1 - version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3) + version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.54.0)(prettier@3.1.0) eslint-plugin-simple-import-sort: specifier: ^10.0.0 - version: 10.0.0(eslint@8.51.0) + version: 10.0.0(eslint@8.54.0) eslint-plugin-unused-imports: specifier: ^3.0.0 - version: 3.0.0(@typescript-eslint/eslint-plugin@6.7.5)(eslint@8.51.0) + version: 3.0.0(@typescript-eslint/eslint-plugin@6.13.1)(eslint@8.54.0) prettier: - specifier: ^3.0.3 - version: 3.0.3 + specifier: ^3.1.0 + version: 3.1.0 source-map-support: specifier: ^0.5.21 version: 0.5.21 tsx: - specifier: ^3.13.0 - version: 3.13.0 + specifier: ^4.6.0 + version: 4.6.0 type-fest: - specifier: ^4.4.0 - version: 4.4.0 + specifier: ^4.8.2 + version: 4.8.2 typescript: - specifier: ^5.2.2 - version: 5.2.2 + specifier: ^5.3.2 + version: 5.3.2 packages: - /7zip-bin@5.1.1: - resolution: {integrity: sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==} + /7zip-bin@5.2.0: + resolution: {integrity: sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==} dev: true /@aashutoshrathi/word-wrap@1.2.6: @@ -181,8 +181,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.19.4: - resolution: {integrity: sha512-mRsi2vJsk4Bx/AFsNBqOH2fqedxn5L/moT58xgg51DjX1la64Z3Npicut2VbhvDFO26qjWtPMsVxCd80YTFVeg==} + /@esbuild/android-arm64@0.19.8: + resolution: {integrity: sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -199,8 +199,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.19.4: - resolution: {integrity: sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ==} + /@esbuild/android-arm@0.19.8: + resolution: {integrity: sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -217,8 +217,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.19.4: - resolution: {integrity: sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g==} + /@esbuild/android-x64@0.19.8: + resolution: {integrity: sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -235,8 +235,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.19.4: - resolution: {integrity: sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA==} + /@esbuild/darwin-arm64@0.19.8: + resolution: {integrity: sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -253,8 +253,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.19.4: - resolution: {integrity: sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw==} + /@esbuild/darwin-x64@0.19.8: + resolution: {integrity: sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -271,8 +271,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.19.4: - resolution: {integrity: sha512-vz59ijyrTG22Hshaj620e5yhs2dU1WJy723ofc+KUgxVCM6zxQESmWdMuVmUzxtGqtj5heHyB44PjV/HKsEmuQ==} + /@esbuild/freebsd-arm64@0.19.8: + resolution: {integrity: sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -289,8 +289,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.19.4: - resolution: {integrity: sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw==} + /@esbuild/freebsd-x64@0.19.8: + resolution: {integrity: sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -307,8 +307,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.19.4: - resolution: {integrity: sha512-ZWmWORaPbsPwmyu7eIEATFlaqm0QGt+joRE9sKcnVUG3oBbr/KYdNE2TnkzdQwX6EDRdg/x8Q4EZQTXoClUqqA==} + /@esbuild/linux-arm64@0.19.8: + resolution: {integrity: sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -325,8 +325,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.19.4: - resolution: {integrity: sha512-z/4ArqOo9EImzTi4b6Vq+pthLnepFzJ92BnofU1jgNlcVb+UqynVFdoXMCFreTK7FdhqAzH0vmdwW5373Hm9pg==} + /@esbuild/linux-arm@0.19.8: + resolution: {integrity: sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -343,8 +343,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.19.4: - resolution: {integrity: sha512-EGc4vYM7i1GRUIMqRZNCTzJh25MHePYsnQfKDexD8uPTCm9mK56NIL04LUfX2aaJ+C9vyEp2fJ7jbqFEYgO9lQ==} + /@esbuild/linux-ia32@0.19.8: + resolution: {integrity: sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -361,8 +361,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.19.4: - resolution: {integrity: sha512-WVhIKO26kmm8lPmNrUikxSpXcgd6HDog0cx12BUfA2PkmURHSgx9G6vA19lrlQOMw+UjMZ+l3PpbtzffCxFDRg==} + /@esbuild/linux-loong64@0.19.8: + resolution: {integrity: sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -379,8 +379,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.19.4: - resolution: {integrity: sha512-keYY+Hlj5w86hNp5JJPuZNbvW4jql7c1eXdBUHIJGTeN/+0QFutU3GrS+c27L+NTmzi73yhtojHk+lr2+502Mw==} + /@esbuild/linux-mips64el@0.19.8: + resolution: {integrity: sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -397,8 +397,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.19.4: - resolution: {integrity: sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw==} + /@esbuild/linux-ppc64@0.19.8: + resolution: {integrity: sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -415,8 +415,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.19.4: - resolution: {integrity: sha512-tRRBey6fG9tqGH6V75xH3lFPpj9E8BH+N+zjSUCnFOX93kEzqS0WdyJHkta/mmJHn7MBaa++9P4ARiU4ykjhig==} + /@esbuild/linux-riscv64@0.19.8: + resolution: {integrity: sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -433,8 +433,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.19.4: - resolution: {integrity: sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg==} + /@esbuild/linux-s390x@0.19.8: + resolution: {integrity: sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -451,8 +451,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.19.4: - resolution: {integrity: sha512-Mi4aNA3rz1BNFtB7aGadMD0MavmzuuXNTaYL6/uiYIs08U7YMPETpgNn5oue3ICr+inKwItOwSsJDYkrE9ekVg==} + /@esbuild/linux-x64@0.19.8: + resolution: {integrity: sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -469,8 +469,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.19.4: - resolution: {integrity: sha512-9+Wxx1i5N/CYo505CTT7T+ix4lVzEdz0uCoYGxM5JDVlP2YdDC1Bdz+Khv6IbqmisT0Si928eAxbmGkcbiuM/A==} + /@esbuild/netbsd-x64@0.19.8: + resolution: {integrity: sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -487,8 +487,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.19.4: - resolution: {integrity: sha512-MFsHleM5/rWRW9EivFssop+OulYVUoVcqkyOkjiynKBCGBj9Lihl7kh9IzrreDyXa4sNkquei5/DTP4uCk25xw==} + /@esbuild/openbsd-x64@0.19.8: + resolution: {integrity: sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -505,8 +505,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.19.4: - resolution: {integrity: sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw==} + /@esbuild/sunos-x64@0.19.8: + resolution: {integrity: sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -523,8 +523,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.19.4: - resolution: {integrity: sha512-PkIl7Jq4mP6ke7QKwyg4fD4Xvn8PXisagV/+HntWoDEdmerB2LTukRZg728Yd1Fj+LuEX75t/hKXE2Ppk8Hh1w==} + /@esbuild/win32-arm64@0.19.8: + resolution: {integrity: sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -541,8 +541,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.19.4: - resolution: {integrity: sha512-ga676Hnvw7/ycdKB53qPusvsKdwrWzEyJ+AtItHGoARszIqvjffTwaaW3b2L6l90i7MO9i+dlAW415INuRhSGg==} + /@esbuild/win32-ia32@0.19.8: + resolution: {integrity: sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -559,8 +559,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.19.4: - resolution: {integrity: sha512-HP0GDNla1T3ZL8Ko/SHAS2GgtjOg+VmWnnYLhuTksr++EnduYB0f3Y2LzHsUwb2iQ13JGoY6G3R8h6Du/WG6uA==} + /@esbuild/win32-x64@0.19.8: + resolution: {integrity: sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -568,13 +568,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.54.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.51.0 + eslint: 8.54.0 eslint-visitor-keys: 3.4.3 dev: true @@ -583,8 +583,8 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.2: - resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + /@eslint/eslintrc@2.1.3: + resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -600,8 +600,8 @@ packages: - supports-color dev: true - /@eslint/js@8.51.0: - resolution: {integrity: sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==} + /@eslint/js@8.54.0: + resolution: {integrity: sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -609,11 +609,11 @@ packages: resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} dev: true - /@humanwhocodes/config-array@0.11.11: - resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 1.2.1 + '@humanwhocodes/object-schema': 2.0.1 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -625,8 +625,8 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} dev: true /@malept/cross-spawn-promise@1.1.1: @@ -703,7 +703,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.2 '@types/keyv': 3.1.4 - '@types/node': 20.8.4 + '@types/node': 20.10.0 '@types/responselike': 1.0.1 dev: true @@ -716,7 +716,7 @@ packages: /@types/fs-extra@9.0.13: resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} dependencies: - '@types/node': 20.8.4 + '@types/node': 20.10.0 dev: true /@types/http-cache-semantics@4.0.2: @@ -734,7 +734,7 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 20.8.4 + '@types/node': 20.10.0 dev: true /@types/lodash@4.14.199: @@ -749,17 +749,17 @@ packages: resolution: {integrity: sha512-t3rNFBgJRugIhackit2mVcLfF6IRc0JE4oeizPQL8Zrm8n2WY/0wOdpOPhdtG0V9Q2TlW/axbF1MJ6z+Yj/kKQ==} dev: true - /@types/node@20.8.4: - resolution: {integrity: sha512-ZVPnqU58giiCjSxjVUESDtdPk4QR5WQhhINbc9UBrKLU68MX5BF6kbQzTrkwbolyr0X8ChBpXfavr5mZFKZQ5A==} + /@types/node@20.10.0: + resolution: {integrity: sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==} dependencies: - undici-types: 5.25.3 + undici-types: 5.26.5 dev: true /@types/plist@3.0.4: resolution: {integrity: sha512-pTa9xUFQFM9WJGSWHajYNljD+DbVylE1q9IweK1LBhUYJdJ28YNU8j3KZ4Q1Qw+cSl4+QLLLOVmqNjhhvVO8fA==} requiresBuild: true dependencies: - '@types/node': 20.8.4 + '@types/node': 20.10.0 xmlbuilder: 15.1.1 dev: true optional: true @@ -771,7 +771,7 @@ packages: /@types/react-dom@18.2.13: resolution: {integrity: sha512-eJIUv7rPP+EC45uNYp/ThhSpE16k22VJUknt5OLoH9tbXoi8bMhwLf5xRuWMywamNbWzhrSmU7IBJfPup1+3fw==} dependencies: - '@types/react': 18.2.28 + '@types/react': 18.2.39 dev: true /@types/react@17.0.2: @@ -781,8 +781,8 @@ packages: csstype: 3.1.2 dev: true - /@types/react@18.2.28: - resolution: {integrity: sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg==} + /@types/react@18.2.39: + resolution: {integrity: sha512-Oiw+ppED6IremMInLV4HXGbfbG6GyziY3kqAwJYOR0PNbkYDmLWQA3a95EhdSmamsvbkJN96ZNN+YD+fGjzSBA==} dependencies: '@types/prop-types': 15.7.8 '@types/scheduler': 0.16.4 @@ -792,7 +792,7 @@ packages: /@types/responselike@1.0.1: resolution: {integrity: sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg==} dependencies: - '@types/node': 20.8.4 + '@types/node': 20.10.0 dev: true /@types/scheduler@0.16.4: @@ -813,12 +813,12 @@ packages: resolution: {integrity: sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA==} requiresBuild: true dependencies: - '@types/node': 20.8.4 + '@types/node': 20.10.0 dev: true optional: true - /@typescript-eslint/eslint-plugin@6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==} + /@typescript-eslint/eslint-plugin@6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.54.0)(typescript@5.3.2): + resolution: {integrity: sha512-5bQDGkXaxD46bPvQt08BUz9YSaO4S0fB1LB5JHQuXTfkGPI3+UUeS387C/e9jRie5GqT8u5kFTrMvAjtX4O5kA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -829,25 +829,25 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.9.1 - '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.7.5 - '@typescript-eslint/type-utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.5 + '@typescript-eslint/parser': 6.13.1(eslint@8.54.0)(typescript@5.3.2) + '@typescript-eslint/scope-manager': 6.13.1 + '@typescript-eslint/type-utils': 6.13.1(eslint@8.54.0)(typescript@5.3.2) + '@typescript-eslint/utils': 6.13.1(eslint@8.54.0)(typescript@5.3.2) + '@typescript-eslint/visitor-keys': 6.13.1 debug: 4.3.4 - eslint: 8.51.0 + eslint: 8.54.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 + ts-api-utils: 1.0.3(typescript@5.3.2) + typescript: 5.3.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.7.5(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==} + /@typescript-eslint/parser@6.13.1(eslint@8.54.0)(typescript@5.3.2): + resolution: {integrity: sha512-fs2XOhWCzRhqMmQf0eicLa/CWSaYss2feXsy7xBD/pLyWke/jCIVc2s1ikEAtSW7ina1HNhv7kONoEfVNEcdDQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -856,27 +856,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.7.5 - '@typescript-eslint/types': 6.7.5 - '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.5 + '@typescript-eslint/scope-manager': 6.13.1 + '@typescript-eslint/types': 6.13.1 + '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.2) + '@typescript-eslint/visitor-keys': 6.13.1 debug: 4.3.4 - eslint: 8.51.0 - typescript: 5.2.2 + eslint: 8.54.0 + typescript: 5.3.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.7.5: - resolution: {integrity: sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==} + /@typescript-eslint/scope-manager@6.13.1: + resolution: {integrity: sha512-BW0kJ7ceiKi56GbT2KKzZzN+nDxzQK2DS6x0PiSMPjciPgd/JRQGMibyaN2cPt2cAvuoH0oNvn2fwonHI+4QUQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.5 - '@typescript-eslint/visitor-keys': 6.7.5 + '@typescript-eslint/types': 6.13.1 + '@typescript-eslint/visitor-keys': 6.13.1 dev: true - /@typescript-eslint/type-utils@6.7.5(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==} + /@typescript-eslint/type-utils@6.13.1(eslint@8.54.0)(typescript@5.3.2): + resolution: {integrity: sha512-A2qPlgpxx2v//3meMqQyB1qqTg1h1dJvzca7TugM3Yc2USDY+fsRBiojAEo92HO7f5hW5mjAUF6qobOPzlBCBQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -885,23 +885,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.2) + '@typescript-eslint/utils': 6.13.1(eslint@8.54.0)(typescript@5.3.2) debug: 4.3.4 - eslint: 8.51.0 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 + eslint: 8.54.0 + ts-api-utils: 1.0.3(typescript@5.3.2) + typescript: 5.3.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.7.5: - resolution: {integrity: sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==} + /@typescript-eslint/types@6.13.1: + resolution: {integrity: sha512-gjeEskSmiEKKFIbnhDXUyiqVma1gRCQNbVZ1C8q7Zjcxh3WZMbzWVfGE9rHfWd1msQtPS0BVD9Jz9jded44eKg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.7.5(typescript@5.2.2): - resolution: {integrity: sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==} + /@typescript-eslint/typescript-estree@6.13.1(typescript@5.3.2): + resolution: {integrity: sha512-sBLQsvOC0Q7LGcUHO5qpG1HxRgePbT6wwqOiGLpR8uOJvPJbfs0mW3jPA3ujsDvfiVwVlWUDESNXv44KtINkUQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -909,59 +909,63 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.7.5 - '@typescript-eslint/visitor-keys': 6.7.5 + '@typescript-eslint/types': 6.13.1 + '@typescript-eslint/visitor-keys': 6.13.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 + ts-api-utils: 1.0.3(typescript@5.3.2) + typescript: 5.3.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@6.7.5(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==} + /@typescript-eslint/utils@6.13.1(eslint@8.54.0)(typescript@5.3.2): + resolution: {integrity: sha512-ouPn/zVoan92JgAegesTXDB/oUp6BP1v8WpfYcqh649ejNc9Qv+B4FF2Ff626kO1xg0wWwwG48lAJ4JuesgdOw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) '@types/json-schema': 7.0.13 '@types/semver': 7.5.3 - '@typescript-eslint/scope-manager': 6.7.5 - '@typescript-eslint/types': 6.7.5 - '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) - eslint: 8.51.0 + '@typescript-eslint/scope-manager': 6.13.1 + '@typescript-eslint/types': 6.13.1 + '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.2) + eslint: 8.54.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.7.5: - resolution: {integrity: sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==} + /@typescript-eslint/visitor-keys@6.13.1: + resolution: {integrity: sha512-NDhQUy2tg6XGNBGDRm1XybOHSia8mcXmlbKWoQP+nm1BIIMxa55shyJfZkHpEBN62KNPLrocSM2PdPcaLgDKMQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/types': 6.13.1 eslint-visitor-keys: 3.4.3 dev: true + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + /@vencord/types@0.1.2: resolution: {integrity: sha512-C/dqZHn3aod/4izZT9sgZEef4478M7QNKTY8Gx2yB1CRYawJcs6hupXT/1SMmepKqrULbltL04Cnh5ieBm3Ucw==} dependencies: '@types/lodash': 4.14.199 '@types/node': 18.18.4 - '@types/react': 18.2.28 + '@types/react': 18.2.39 '@types/react-dom': 18.2.13 discord-types: 1.3.26 standalone-electron-types: 1.0.0 type-fest: 3.13.1 dev: true - /@vencord/venmic@2.1.2: - resolution: {integrity: sha512-2++ozTgEVORoJ0kJ1DpFy7MJVLoG3qD503CKqG4Ztm7fUCWyxXICWDBdtCIsFzVZCBfScz+c9XXae4gXRBeJ3Q==} + /@vencord/venmic@2.1.3: + resolution: {integrity: sha512-X7VXu4r5v18YK7muusViDJhFccCdfzlHUx5iRKtOfZ7ls93Y+KnrByQU5q88Mpk9w7qY3FXMIveL8mocvzjq+Q==} engines: {node: '>=14.15'} os: [linux] requiresBuild: true @@ -1034,11 +1038,11 @@ packages: resolution: {integrity: sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==} dev: true - /app-builder-lib@24.6.4: - resolution: {integrity: sha512-m9931WXb83teb32N0rKg+ulbn6+Hl8NV5SUpVDOVz9MWOXfhV6AQtTdftf51zJJvCQnQugGtSqoLvgw6mdF/Rg==} + /app-builder-lib@24.9.1: + resolution: {integrity: sha512-Q1nYxZcio4r+W72cnIRVYofEAyjBd3mG47o+zms8HlD51zWtA/YxJb01Jei5F+jkWhge/PTQK+uldsPh6d0/4g==} engines: {node: '>=14.0.0'} dependencies: - 7zip-bin: 5.1.1 + 7zip-bin: 5.2.0 '@develar/schema-utils': 2.6.5 '@electron/notarize': 2.1.0 '@electron/osx-sign': 1.0.5 @@ -1047,12 +1051,12 @@ packages: '@types/fs-extra': 9.0.13 async-exit-hook: 2.0.1 bluebird-lst: 1.0.9 - builder-util: 24.5.0 - builder-util-runtime: 9.2.1 + builder-util: 24.8.1 + builder-util-runtime: 9.2.3 chromium-pickle-js: 0.2.0 debug: 4.3.4 ejs: 3.1.9 - electron-publish: 24.5.0 + electron-publish: 24.8.1 form-data: 4.0.0 fs-extra: 10.1.0 hosted-git-info: 4.1.0 @@ -1323,8 +1327,8 @@ packages: dev: true optional: true - /builder-util-runtime@9.2.1: - resolution: {integrity: sha512-2rLv/uQD2x+dJ0J3xtsmI12AlRyk7p45TEbE/6o/fbb633e/S3pPgm+ct+JHsoY7r39dKHnGEFk/AASRFdnXmA==} + /builder-util-runtime@9.2.3: + resolution: {integrity: sha512-FGhkqXdFFZ5dNC4C+yuQB9ak311rpGAw+/ASz8ZdxwODCv1GGMWgLDeofRkdi0F3VCHQEWy/aXcJQozx2nOPiw==} engines: {node: '>=12.0.0'} dependencies: debug: 4.3.4 @@ -1333,14 +1337,14 @@ packages: - supports-color dev: true - /builder-util@24.5.0: - resolution: {integrity: sha512-STnBmZN/M5vGcv01u/K8l+H+kplTaq4PAIn3yeuufUKSpcdro0DhJWxPI81k5XcNfC//bjM3+n9nr8F9uV4uAQ==} + /builder-util@24.8.1: + resolution: {integrity: sha512-ibmQ4BnnqCnJTNrdmdNlnhF48kfqhNzSeqFMXHLIl+o9/yhn6QfOaVrloZ9YUu3m0k3rexvlT5wcki6LWpjTZw==} dependencies: - 7zip-bin: 5.1.1 + 7zip-bin: 5.2.0 '@types/debug': 4.1.9 app-builder-bin: 4.0.0 bluebird-lst: 1.0.9 - builder-util-runtime: 9.2.1 + builder-util-runtime: 9.2.3 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4 @@ -1661,16 +1665,6 @@ packages: engines: {node: '>=10'} dev: true - /define-data-property@1.1.0: - resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==} - engines: {node: '>= 0.4'} - requiresBuild: true - dependencies: - get-intrinsic: 1.2.1 - gopd: 1.0.1 - has-property-descriptors: 1.0.0 - dev: true - /define-data-property@1.1.1: resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} engines: {node: '>= 0.4'} @@ -1689,8 +1683,8 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.0 - has-property-descriptors: 1.0.0 + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 object-keys: 1.1.1 dev: true @@ -1753,12 +1747,12 @@ packages: moment: 2.29.4 dev: true - /dmg-builder@24.6.4: - resolution: {integrity: sha512-BNcHRc9CWEuI9qt0E655bUBU/j/3wUCYBVKGu1kVpbN5lcUdEJJJeiO0NHK3dgKmra6LUUZlo+mWqc+OCbi0zw==} + /dmg-builder@24.9.1: + resolution: {integrity: sha512-huC+O6hvHd24Ubj3cy2GMiGLe2xGFKN3klqVMLAdcbB6SWMd1yPSdZvV8W1O01ICzCCRlZDHiv4VrNUgnPUfbQ==} dependencies: - app-builder-lib: 24.6.4 - builder-util: 24.5.0 - builder-util-runtime: 9.2.1 + app-builder-lib: 24.9.1 + builder-util: 24.8.1 + builder-util-runtime: 9.2.3 fs-extra: 10.1.0 iconv-lite: 0.6.3 js-yaml: 4.1.0 @@ -1822,16 +1816,16 @@ packages: jake: 10.8.7 dev: true - /electron-builder@24.6.4: - resolution: {integrity: sha512-uNWQoU7pE7qOaIQ6CJHpBi44RJFVG8OHRBIadUxrsDJVwLLo8Nma3K/EEtx5/UyWAQYdcK4nVPYKoRqBb20hbA==} + /electron-builder@24.9.1: + resolution: {integrity: sha512-v7BuakDuY6sKMUYM8mfQGrwyjBpZ/ObaqnenU0H+igEL10nc6ht049rsCw2HghRBdEwJxGIBuzs3jbEhNaMDmg==} engines: {node: '>=14.0.0'} hasBin: true dependencies: - app-builder-lib: 24.6.4 - builder-util: 24.5.0 - builder-util-runtime: 9.2.1 + app-builder-lib: 24.9.1 + builder-util: 24.8.1 + builder-util-runtime: 9.2.3 chalk: 4.1.2 - dmg-builder: 24.6.4 + dmg-builder: 24.9.1 fs-extra: 10.1.0 is-ci: 3.0.1 lazy-val: 1.0.5 @@ -1842,12 +1836,12 @@ packages: - supports-color dev: true - /electron-publish@24.5.0: - resolution: {integrity: sha512-zwo70suH15L15B4ZWNDoEg27HIYoPsGJUF7xevLJLSI7JUPC8l2yLBdLGwqueJ5XkDL7ucYyRZzxJVR8ElV9BA==} + /electron-publish@24.8.1: + resolution: {integrity: sha512-IFNXkdxMVzUdweoLJNXSupXkqnvgbrn3J4vognuOY06LaS/m0xvfFYIf+o1CM8if6DuWYWoQFKPcWZt/FUjZPw==} dependencies: '@types/fs-extra': 9.0.13 - builder-util: 24.5.0 - builder-util-runtime: 9.2.1 + builder-util: 24.8.1 + builder-util-runtime: 9.2.3 chalk: 4.1.2 fs-extra: 10.1.0 lazy-val: 1.0.5 @@ -1856,8 +1850,8 @@ packages: - supports-color dev: true - /electron@27.0.0: - resolution: {integrity: sha512-mr3Zoy82l8XKK/TgguE5FeNeHZ9KHXIGIpUMjbjZWIREfAv+X2Q3vdX6RG0Pmi1K23AFAxANXQezIHBA2Eypwg==} + /electron@27.1.2: + resolution: {integrity: sha512-Dy6BUuGLiIJv+zfsXwr78TV2TNppi24rXF4PIIS+OjDblEKdkI9r1iM8JUd3/x3sbGUy5mdLMSPhvmu//IhkgA==} engines: {node: '>= 12.20.55'} hasBin: true requiresBuild: true @@ -1992,34 +1986,34 @@ packages: '@esbuild/win32-x64': 0.18.20 dev: true - /esbuild@0.19.4: - resolution: {integrity: sha512-x7jL0tbRRpv4QUyuDMjONtWFciygUxWaUM1kMX2zWxI0X2YWOt7MSA0g4UdeSiHM8fcYVzpQhKYOycZwxTdZkA==} + /esbuild@0.19.8: + resolution: {integrity: sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.19.4 - '@esbuild/android-arm64': 0.19.4 - '@esbuild/android-x64': 0.19.4 - '@esbuild/darwin-arm64': 0.19.4 - '@esbuild/darwin-x64': 0.19.4 - '@esbuild/freebsd-arm64': 0.19.4 - '@esbuild/freebsd-x64': 0.19.4 - '@esbuild/linux-arm': 0.19.4 - '@esbuild/linux-arm64': 0.19.4 - '@esbuild/linux-ia32': 0.19.4 - '@esbuild/linux-loong64': 0.19.4 - '@esbuild/linux-mips64el': 0.19.4 - '@esbuild/linux-ppc64': 0.19.4 - '@esbuild/linux-riscv64': 0.19.4 - '@esbuild/linux-s390x': 0.19.4 - '@esbuild/linux-x64': 0.19.4 - '@esbuild/netbsd-x64': 0.19.4 - '@esbuild/openbsd-x64': 0.19.4 - '@esbuild/sunos-x64': 0.19.4 - '@esbuild/win32-arm64': 0.19.4 - '@esbuild/win32-ia32': 0.19.4 - '@esbuild/win32-x64': 0.19.4 + '@esbuild/android-arm': 0.19.8 + '@esbuild/android-arm64': 0.19.8 + '@esbuild/android-x64': 0.19.8 + '@esbuild/darwin-arm64': 0.19.8 + '@esbuild/darwin-x64': 0.19.8 + '@esbuild/freebsd-arm64': 0.19.8 + '@esbuild/freebsd-x64': 0.19.8 + '@esbuild/linux-arm': 0.19.8 + '@esbuild/linux-arm64': 0.19.8 + '@esbuild/linux-ia32': 0.19.8 + '@esbuild/linux-loong64': 0.19.8 + '@esbuild/linux-mips64el': 0.19.8 + '@esbuild/linux-ppc64': 0.19.8 + '@esbuild/linux-riscv64': 0.19.8 + '@esbuild/linux-s390x': 0.19.8 + '@esbuild/linux-x64': 0.19.8 + '@esbuild/netbsd-x64': 0.19.8 + '@esbuild/openbsd-x64': 0.19.8 + '@esbuild/sunos-x64': 0.19.8 + '@esbuild/win32-arm64': 0.19.8 + '@esbuild/win32-ia32': 0.19.8 + '@esbuild/win32-x64': 0.19.8 dev: true /escalade@3.1.1: @@ -2031,13 +2025,13 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@9.0.0(eslint@8.51.0): + /eslint-config-prettier@9.0.0(eslint@8.54.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.51.0 + eslint: 8.54.0 dev: true /eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.29.0): @@ -2046,7 +2040,7 @@ packages: peerDependencies: eslint-plugin-import: '>=1.4.0' dependencies: - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.7.5)(eslint@8.51.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.13.1)(eslint@8.54.0) dev: true /eslint-import-resolver-node@0.3.9: @@ -2059,7 +2053,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.5)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-node@0.3.9)(eslint@8.54.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -2080,15 +2074,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.13.1(eslint@8.54.0)(typescript@5.3.2) debug: 3.2.7 - eslint: 8.51.0 + eslint: 8.54.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.7.5)(eslint@8.51.0): + /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.13.1)(eslint@8.54.0): resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} engines: {node: '>=4'} peerDependencies: @@ -2098,16 +2092,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.13.1(eslint@8.54.0)(typescript@5.3.2) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.51.0 + eslint: 8.54.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.5)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-node@0.3.9)(eslint@8.54.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -2129,18 +2123,18 @@ packages: requireindex: 1.2.0 dev: true - /eslint-plugin-path-alias@1.0.0(eslint@8.51.0): + /eslint-plugin-path-alias@1.0.0(eslint@8.54.0): resolution: {integrity: sha512-FXus57yC+Zd3sMv46pbloXYwFeNVNHJqlACr9V68FG/IzGFBBokGJpmjDbEjpt8ZCeVSndUubeDWWl2A8sCNVQ==} peerDependencies: eslint: ^7 dependencies: - eslint: 8.51.0 + eslint: 8.54.0 nanomatch: 1.2.13 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3): + /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.54.0)(prettier@3.1.0): resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -2154,22 +2148,22 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.51.0 - eslint-config-prettier: 9.0.0(eslint@8.51.0) - prettier: 3.0.3 + eslint: 8.54.0 + eslint-config-prettier: 9.0.0(eslint@8.54.0) + prettier: 3.1.0 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 dev: true - /eslint-plugin-simple-import-sort@10.0.0(eslint@8.51.0): + /eslint-plugin-simple-import-sort@10.0.0(eslint@8.54.0): resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 8.51.0 + eslint: 8.54.0 dev: true - /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.7.5)(eslint@8.51.0): + /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.13.1)(eslint@8.54.0): resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2179,8 +2173,8 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2) - eslint: 8.51.0 + '@typescript-eslint/eslint-plugin': 6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.54.0)(typescript@5.3.2) + eslint: 8.54.0 eslint-rule-composer: 0.3.0 dev: true @@ -2202,18 +2196,19 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.51.0: - resolution: {integrity: sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==} + /eslint@8.54.0: + resolution: {integrity: sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) '@eslint-community/regexpp': 4.9.1 - '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.51.0 - '@humanwhocodes/config-array': 0.11.11 + '@eslint/eslintrc': 2.1.3 + '@eslint/js': 8.54.0 + '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 @@ -2513,11 +2508,6 @@ packages: dev: true optional: true - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - requiresBuild: true - dev: true - /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} dev: true @@ -2556,16 +2546,6 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - /get-intrinsic@1.2.1: - resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} - requiresBuild: true - dependencies: - function-bind: 1.1.1 - has: 1.0.4 - has-proto: 1.0.1 - has-symbols: 1.0.3 - dev: true - /get-intrinsic@1.2.2: resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} dependencies: @@ -2674,7 +2654,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.2 dev: true /got@11.8.6: @@ -2710,13 +2690,6 @@ packages: engines: {node: '>=8'} dev: true - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - requiresBuild: true - dependencies: - get-intrinsic: 1.2.1 - dev: true - /has-property-descriptors@1.0.1: resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: @@ -2777,12 +2750,6 @@ packages: kind-of: 4.0.0 dev: true - /has@1.0.4: - resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} - engines: {node: '>= 0.4.0'} - requiresBuild: true - dev: true - /hasown@2.0.0: resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} engines: {node: '>= 0.4'} @@ -3755,8 +3722,8 @@ packages: fast-diff: 1.3.0 dev: true - /prettier@3.0.3: - resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + /prettier@3.1.0: + resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==} engines: {node: '>=14'} hasBin: true dev: true @@ -4357,13 +4324,13 @@ packages: utf8-byte-length: 1.0.4 dev: true - /ts-api-utils@1.0.3(typescript@5.2.2): + /ts-api-utils@1.0.3(typescript@5.3.2): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.2.2 + typescript: 5.3.2 dev: true /tsconfig-paths@3.14.2: @@ -4379,13 +4346,13 @@ packages: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true - /tsx@3.13.0: - resolution: {integrity: sha512-rjmRpTu3as/5fjNq/kOkOtihgLxuIz6pbKdj9xwP4J5jOLkBxw/rjN5ANw+KyrrOXV5uB7HC8+SrrSJxT65y+A==} + /tsx@4.6.0: + resolution: {integrity: sha512-HLHaDQ78mly4Pd5co6tWQOiNVYoYYAPUcwSSZK4bcs3zSEsg+/67LS/ReHook0E7DKPfe1J5jc0ocIhUrnaR4w==} + engines: {node: '>=18.0.0'} hasBin: true dependencies: esbuild: 0.18.20 get-tsconfig: 4.7.2 - source-map-support: 0.5.21 optionalDependencies: fsevents: 2.3.3 dev: true @@ -4414,8 +4381,8 @@ packages: engines: {node: '>=14.16'} dev: true - /type-fest@4.4.0: - resolution: {integrity: sha512-HT3RRs7sTfY22KuPQJkD/XjbTbxgP2Je5HPt6H6JEGvcjHd5Lqru75EbrP3tb4FYjNJ+DjLp+MNQTFQU0mhXNw==} + /type-fest@4.8.2: + resolution: {integrity: sha512-mcvrCjixA5166hSrUoJgGb9gBQN4loMYyj9zxuMs/66ibHNEFd5JXMw37YVDx58L4/QID9jIzdTBB4mDwDJ6KQ==} engines: {node: '>=16'} dev: true @@ -4463,8 +4430,8 @@ packages: hasBin: true dev: true - /typescript@5.2.2: - resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + /typescript@5.3.2: + resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} engines: {node: '>=14.17'} hasBin: true dev: true @@ -4478,8 +4445,8 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /undici-types@5.25.3: - resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} dev: true /union-value@1.0.1: @@ -4659,8 +4626,8 @@ packages: engines: {node: '>=10'} dev: true - github.com/OpenAsar/arrpc/89f4da610ccfac93f461826a446a17cd3b23953d: - resolution: {tarball: https://codeload.github.com/OpenAsar/arrpc/tar.gz/89f4da610ccfac93f461826a446a17cd3b23953d} + github.com/OpenAsar/arrpc/3e22fd776273afaa4a80c51deb86077ffdd4d2ae: + resolution: {tarball: https://codeload.github.com/OpenAsar/arrpc/tar.gz/3e22fd776273afaa4a80c51deb86077ffdd4d2ae} name: arrpc version: 3.2.0 hasBin: true diff --git a/scripts/build/build.mts b/scripts/build/build.mts index cd46ad8..27f45cc 100644 --- a/scripts/build/build.mts +++ b/scripts/build/build.mts @@ -78,8 +78,6 @@ await Promise.all([ inject: ["./scripts/build/injectReact.mjs"], jsxFactory: "VencordCreateElement", jsxFragment: "VencordFragment", - // Work around https://github.com/evanw/esbuild/issues/2460 - tsconfig: "./scripts/build/tsconfig.esbuild.json", external: ["@vencord/types/*"], plugins: [vencordDep], footer: { js: "//# sourceURL=VCDRenderer" } diff --git a/scripts/build/tsconfig.esbuild.json b/scripts/build/tsconfig.esbuild.json deleted file mode 100644 index e3e28a1..0000000 --- a/scripts/build/tsconfig.esbuild.json +++ /dev/null @@ -1,7 +0,0 @@ -// Work around https://github.com/evanw/esbuild/issues/2460 -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "jsx": "react" - } -} diff --git a/src/shared/utils/SettingsStore.ts b/src/shared/utils/SettingsStore.ts index 87fe0b6..89c57dd 100644 --- a/src/shared/utils/SettingsStore.ts +++ b/src/shared/utils/SettingsStore.ts @@ -12,8 +12,8 @@ type ResolvePropDeep = P extends `${infer Pre}.${infer Suf}` ? ResolvePropDeep : any : P extends keyof T - ? T[P] - : any; + ? T[P] + : any; /** * The SettingsStore allows you to easily create a mutable store that From 7efa54687a3cb42ab662bc57c7b3ca1d951ace29 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 2 Dec 2023 17:27:20 +0100 Subject: [PATCH 06/26] bump to v0.4.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index eaf510d..f6eacd6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "VencordDesktop", - "version": "0.4.3", + "version": "0.4.4", "private": true, "description": "", "keywords": [], From ee7e71b9fb14fb4ca0ed9ae6fa571a61a638dcb1 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 2 Dec 2023 17:41:38 +0100 Subject: [PATCH 07/26] ci: stop using action-electron-builder --- .github/workflows/release.yml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 459edac..b58363a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,7 +22,15 @@ jobs: node-version: 18 - name: Run Electron Builder - uses: samuelmeuli/action-electron-builder@e4b12cd06ddf023422f1ac4e39632bd76f6e6928 - with: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - RELEASE: true + run: | + case "${{ matrix.os }}" in + macos-latest) platform=mac ;; + ubuntu-latest) platform=linux ;; + windows-latest) platform=windows ;; + esac + + pnpm install + pnpm build + pnpm electron-builder --$platform --publish always + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 498816374408065b169bb0e41cca2e5d5955df00 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 2 Dec 2023 17:44:52 +0100 Subject: [PATCH 08/26] fix ci --- .github/workflows/release.yml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b58363a..76d32f0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,12 +14,20 @@ jobs: os: [macos-latest, ubuntu-latest, windows-latest] steps: - - name: Check out Git repository - uses: actions/checkout@v3 + - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v2 # Install pnpm using packageManager key in package.json - - uses: actions/setup-node@v3 + - name: Use Node.js 18 + uses: actions/setup-node@v3 with: node-version: 18 + cache: "pnpm" + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build + run: pnpm build - name: Run Electron Builder run: | @@ -29,8 +37,6 @@ jobs: windows-latest) platform=windows ;; esac - pnpm install - pnpm build pnpm electron-builder --$platform --publish always env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 032b94e81da03b501fd69c46790fed9f2fac8090 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 2 Dec 2023 17:52:13 +0100 Subject: [PATCH 09/26] fix ci part 2 --- .github/workflows/release.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 76d32f0..249492f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,6 +12,13 @@ jobs: strategy: matrix: os: [macos-latest, ubuntu-latest, windows-latest] + include: + - os: macos-latest + platform: mac + - os: ubuntu-latest + platform: linux + - os: windows-latest + platform: windows steps: - uses: actions/checkout@v3 @@ -31,12 +38,6 @@ jobs: - name: Run Electron Builder run: | - case "${{ matrix.os }}" in - macos-latest) platform=mac ;; - ubuntu-latest) platform=linux ;; - windows-latest) platform=windows ;; - esac - - pnpm electron-builder --$platform --publish always + pnpm electron-builder --${{ matrix.platform }} --publish always env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 208158f4d1822fdec673609eb371eebe813d826b Mon Sep 17 00:00:00 2001 From: Vendicated Date: Mon, 4 Dec 2023 11:34:39 +0100 Subject: [PATCH 10/26] fix shiggy looking creepy --- static/views/splash.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/views/splash.html b/static/views/splash.html index a82ff33..94ef13e 100644 --- a/static/views/splash.html +++ b/static/views/splash.html @@ -22,8 +22,8 @@ } img { - width: 6em; - height: 6em; + width: 128px; + height: 128px; image-rendering: pixelated; } From fdf454722fd8d268f0cbf0a974571c4321968168 Mon Sep 17 00:00:00 2001 From: Lewis Crichton Date: Mon, 4 Dec 2023 13:17:46 +0000 Subject: [PATCH 11/26] readme: add flathub badge (#269) --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c776011..9c941dd 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,8 @@ Download and run Vesktop-VERSION.dmg from [releases](https://github.com/Vencord/ ### Linux +[![](https://dl.flathub.org/assets/badges/flathub-badge-en.svg)](https://flathub.org/apps/dev.vencord.Vesktop) + #### Arch based Install [vencord-desktop-git](https://aur.archlinux.org/packages/vencord-desktop-git) from the AUR using your favourite AUR helper, for example [yay](https://github.com/Jguer/yay) @@ -39,7 +41,7 @@ Download Vesktop-VERSION.rpm from [releases](https://github.com/Vencord/Vesktop/ Either download Vesktop-VERSION.AppImage and just run it directly or grab Vesktop-VERSION.tar.gz, extract it somewhere and run `vencorddesktop`. -A flatpak is planned, if you want packages for other repos, feel free to create them and they can be linked as unofficial here +If other packages are created, feel free to open an issue and we'll link them here. ## Building From 0f804f9f6e6e9f19ae152f183fcb037499a183b0 Mon Sep 17 00:00:00 2001 From: Lewis Crichton Date: Mon, 4 Dec 2023 21:05:09 +0000 Subject: [PATCH 12/26] feat: autogenerated release notes --- meta/dev.vencord.Vesktop.metainfo.xml | 169 ++++++++++++++++++++++++++ package.json | 3 +- pnpm-lock.yaml | 15 +++ scripts/utils/updateMeta.mts | 93 ++++++++++++++ 4 files changed, 279 insertions(+), 1 deletion(-) create mode 100644 meta/dev.vencord.Vesktop.metainfo.xml create mode 100644 scripts/utils/updateMeta.mts diff --git a/meta/dev.vencord.Vesktop.metainfo.xml b/meta/dev.vencord.Vesktop.metainfo.xml new file mode 100644 index 0000000..cb04ef7 --- /dev/null +++ b/meta/dev.vencord.Vesktop.metainfo.xml @@ -0,0 +1,169 @@ + + + + dev.vencord.Vesktop + Vesktop + Snappier Discord app with Vencord + Vencord Contributors + dev.vencord.Vesktop.desktop + CC0-1.0 + GPL-3.0 + Vencord + +

Vesktop is a cross platform desktop app aiming to give you a snappier Discord experience with Vencord pre-installed.

+

Vesktop comes bundled with Venmic, a purpose-built library to provide functioning audio screenshare.

+
+ + + Vencord settings page and about window open + https://vencord.dev/assets/screenshots/vesktop-1-appstream.png + + + A dialog showing screenshare options + https://vencord.dev/assets/screenshots/vesktop-2-appstream.png + + + A screenshot of a Discord server + https://vencord.dev/assets/screenshots/vesktop-3-appstream.png + + + + + + https://github.com/Vencord/Vesktop/releases/tag/v0.4.4 + +

What's Changed

+
    +
  • improve venmic system compatibility by @Curve in https://github.com/Vencord/Vesktop/pull/230
  • +
  • Update steamdeck controller layout by @AAGaming00 in https://github.com/Vencord/Vesktop/pull/236
  • +
  • feat: Add option to disable smooth scrolling by @ZirixCZ in https://github.com/Vencord/Vesktop/pull/255
  • +
  • unblur shiggy in splash screen by @viacoro in https://github.com/Vencord/Vesktop/pull/221
  • +
  • update electron & arrpc @D3SOX in https://github.com/Vencord/Vesktop/pull/258
  • +
+
+
+ + + https://github.com/Vencord/Vesktop/releases/tag/v0.4.3 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.4.2 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.4.1 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.4.0 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.3.3 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.3.2 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.3.1 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.3.0 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.2.9 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.2.8 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.2.7 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.2.6 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.2.5 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.2.4 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.2.3 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.2.2 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.2.1 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.2.0 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.1.9 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.1.8 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.1.7 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.1.6 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.1.5 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.1.4 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.1.3 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.1.2 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.1.1 + + + https://github.com/Vencord/Vesktop/releases/tag/v0.1.0 + +
+ https://vencord.dev/ + https://github.com/Vencord/Vesktop/issues + https://vencord.dev/faq/ + https://github.com/Vencord/Vesktop/issues + https://github.com/sponsors/Vendicated + https://github.com/Vencord/Vesktop + + InstantMessaging + AudioVideo + + + pointing + keyboard + 420 + always + + + voice + 760 + 1200 + always + + + always + + + intense + intense + intense + intense + + + Discord + Vencord + Vesktop + Privacy + Mod + +
\ No newline at end of file diff --git a/package.json b/package.json index 2fe0c75..d5cbc9f 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,8 @@ "source-map-support": "^0.5.21", "tsx": "^3.13.0", "type-fest": "^4.4.0", - "typescript": "^5.2.2" + "typescript": "^5.2.2", + "xml-formatter": "^3.6.0" }, "packageManager": "pnpm@8.6.11", "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b3d4db8..0983412 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,6 +84,9 @@ devDependencies: typescript: specifier: ^5.2.2 version: 5.2.2 + xml-formatter: + specifier: ^3.6.0 + version: 3.6.0 packages: @@ -4618,6 +4621,18 @@ packages: optional: true dev: false + /xml-formatter@3.6.0: + resolution: {integrity: sha512-Wic80ENNLF/5mLcc82hVLmoOWQlLDJtVv+N1/hkP4hBuVXPLKrXo92/4V23QYPKfUxvCU6Y2AcdpHCIA/xexFw==} + engines: {node: '>= 14'} + dependencies: + xml-parser-xo: 4.1.1 + dev: true + + /xml-parser-xo@4.1.1: + resolution: {integrity: sha512-Ggf2y90+Y6e9IK5hoPuembVHJ03PhDSdhldEmgzbihzu9k0XBo0sfcFxaSi4W1PlUSSI1ok+MJ0JCXUn+U4Ilw==} + engines: {node: '>= 14'} + dev: true + /xmlbuilder@15.1.1: resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} diff --git a/scripts/utils/updateMeta.mts b/scripts/utils/updateMeta.mts new file mode 100644 index 0000000..1d87482 --- /dev/null +++ b/scripts/utils/updateMeta.mts @@ -0,0 +1,93 @@ +/* + * SPDX-License-Identifier: GPL-3.0 + * Vesktop, a desktop app aiming to give you a snappier Discord Experience + * Copyright (c) 2023 Vendicated and Vencord contributors + */ + +import { promises as fs } from "node:fs"; + +import { DOMParser, XMLSerializer } from "@xmldom/xmldom"; +import xmlFormat from "xml-formatter"; + +function generateDescription(description: string, descriptionNode: Element) { + const lines = description.replace(/\r/g, "").split("\n"); + let currentList: Element | null = null; + + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + + if (line.includes("New Contributors")) { + // we're done, don't parse any more since the new contributors section is the last one + break; + } + + if (line.startsWith("## ")) { + const pNode = descriptionNode.ownerDocument.createElement("p"); + pNode.textContent = line.slice(3); + descriptionNode.appendChild(pNode); + } else if (line.startsWith("* ")) { + const liNode = descriptionNode.ownerDocument.createElement("li"); + liNode.textContent = line.slice(2); + + if (!currentList) { + currentList = descriptionNode.ownerDocument.createElement("ul"); + } + + currentList.appendChild(liNode); + } + + if (currentList && !lines[i + 1].startsWith("* ")) { + descriptionNode.appendChild(currentList); + currentList = null; + } + } +} + +const latestReleaseInformation = await fetch("https://api.github.com/repos/Vencord/Vesktop/releases/latest", { + headers: { + Accept: "application/vnd.github+json", + "X-Github-Api-Version": "2022-11-28" + } +}).then(res => res.json()); + +const metaInfo = await fs.readFile("./meta/dev.vencord.Vesktop.metainfo.xml", "utf-8"); + +const parser = new DOMParser().parseFromString(metaInfo, "text/xml"); + +const releaseList = parser.getElementsByTagName("releases")[0]; + +for (let i = 0; i < releaseList.childNodes.length; i++) { + const release = releaseList.childNodes[i] as Element; + + if (release.nodeType === 1 && release.getAttribute("version") === latestReleaseInformation.name) { + console.log("Latest release already added, nothing to be done"); + process.exit(0); + } +} + +const release = parser.createElement("release"); +release.setAttribute("version", latestReleaseInformation.name); +release.setAttribute("date", latestReleaseInformation.published_at.split("T")[0]); +release.setAttribute("type", "stable"); + +const releaseUrl = parser.createElement("url"); +releaseUrl.textContent = latestReleaseInformation.html_url; + +release.appendChild(releaseUrl); + +const description = parser.createElement("description"); + +// we're not using a full markdown parser here since we don't have a lot of formatting options to begin with +generateDescription(latestReleaseInformation.body, description); + +release.appendChild(description); + +releaseList.insertBefore(release, releaseList.childNodes[2]); + +const output = xmlFormat(new XMLSerializer().serializeToString(parser), { + lineSeparator: "\n", + collapseContent: true, + indentation: " " +}); + +await fs.writeFile("./meta/dev.vencord.Vesktop.metainfo.xml", output, "utf-8"); From 5dc57417719eab4c9b8eb419007112c4fcb90484 Mon Sep 17 00:00:00 2001 From: Lewis Crichton Date: Mon, 4 Dec 2023 21:16:43 +0000 Subject: [PATCH 13/26] ci: add metainfo auto updating --- .github/workflows/meta.yml | 36 +++++++++++++++++++++++++++ meta/dev.vencord.Vesktop.metainfo.xml | 13 ---------- package.json | 3 ++- 3 files changed, 38 insertions(+), 14 deletions(-) create mode 100644 .github/workflows/meta.yml diff --git a/.github/workflows/meta.yml b/.github/workflows/meta.yml new file mode 100644 index 0000000..3ee7562 --- /dev/null +++ b/.github/workflows/meta.yml @@ -0,0 +1,36 @@ +name: Update metainfo on release + +on: + release: + types: + - published + workflow_dispatch: + +jobs: + update: + runs-on: ubuntu-latest + permissions: + contents: write + + steps: + - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v2 # Install pnpm using packageManager key in package.json + + - name: Use Node.js 18 + uses: actions/setup-node@v3 + with: + node-version: 18 + + - name: Install dependencies + run: pnpm i + + - name: Update metainfo + run: pnpm updateMeta + + - name: Commit and push changes + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add meta/dev.vencord.Vesktop.metainfo.xml + git commit -m "Insert release changes for ${{ github.event.release.tag_name }} [skip ci]" + git push \ No newline at end of file diff --git a/meta/dev.vencord.Vesktop.metainfo.xml b/meta/dev.vencord.Vesktop.metainfo.xml index cb04ef7..f725f58 100644 --- a/meta/dev.vencord.Vesktop.metainfo.xml +++ b/meta/dev.vencord.Vesktop.metainfo.xml @@ -29,19 +29,6 @@ - - https://github.com/Vencord/Vesktop/releases/tag/v0.4.4 - -

What's Changed

-
    -
  • improve venmic system compatibility by @Curve in https://github.com/Vencord/Vesktop/pull/230
  • -
  • Update steamdeck controller layout by @AAGaming00 in https://github.com/Vencord/Vesktop/pull/236
  • -
  • feat: Add option to disable smooth scrolling by @ZirixCZ in https://github.com/Vencord/Vesktop/pull/255
  • -
  • unblur shiggy in splash screen by @viacoro in https://github.com/Vencord/Vesktop/pull/221
  • -
  • update electron & arrpc @D3SOX in https://github.com/Vencord/Vesktop/pull/258
  • -
-
-
https://github.com/Vencord/Vesktop/releases/tag/v0.4.3 diff --git a/package.json b/package.json index 68fadf6..fb23c98 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "start:watch": "pnpm build:dev && tsx scripts/startWatch.mts", "test": "pnpm lint && pnpm testTypes", "testTypes": "tsc --noEmit", - "watch": "pnpm build --watch" + "watch": "pnpm build --watch", + "updateMeta": "tsx scripts/utils/updateMeta.mts" }, "dependencies": { "arrpc": "github:OpenAsar/arrpc#3e22fd776273afaa4a80c51deb86077ffdd4d2ae" From de2b4b7dd8cac887da8d3ec88cba36e3bced3a06 Mon Sep 17 00:00:00 2001 From: Lewis Crichton Date: Mon, 4 Dec 2023 21:28:34 +0000 Subject: [PATCH 14/26] ci: create a PR to merge in metainfo automatically [skip ci] --- .github/workflows/meta.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/meta.yml b/.github/workflows/meta.yml index 3ee7562..866785c 100644 --- a/.github/workflows/meta.yml +++ b/.github/workflows/meta.yml @@ -9,8 +9,6 @@ on: jobs: update: runs-on: ubuntu-latest - permissions: - contents: write steps: - uses: actions/checkout@v3 @@ -27,10 +25,14 @@ jobs: - name: Update metainfo run: pnpm updateMeta - - name: Commit and push changes + - name: Commit and merge in changes run: | git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git checkout -b ci/meta-update git add meta/dev.vencord.Vesktop.metainfo.xml git commit -m "Insert release changes for ${{ github.event.release.tag_name }} [skip ci]" - git push \ No newline at end of file + gh pr create -B main -H ci/meta-update -t "Update metainfo for release ${{ github.event.release.tag_name }}" + gh pr merge --admin -d -r + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 017c2c847f3c396742c0a9de270648ac9f4fb335 Mon Sep 17 00:00:00 2001 From: Lewis Crichton Date: Mon, 4 Dec 2023 21:30:06 +0000 Subject: [PATCH 15/26] ci: fix command [skip ci] --- .github/workflows/meta.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/meta.yml b/.github/workflows/meta.yml index 866785c..bc59d3d 100644 --- a/.github/workflows/meta.yml +++ b/.github/workflows/meta.yml @@ -32,7 +32,7 @@ jobs: git checkout -b ci/meta-update git add meta/dev.vencord.Vesktop.metainfo.xml git commit -m "Insert release changes for ${{ github.event.release.tag_name }} [skip ci]" - gh pr create -B main -H ci/meta-update -t "Update metainfo for release ${{ github.event.release.tag_name }}" + gh pr create -B main -H ci/meta-update -t "Metainfo for ${{ github.event.release.tag_name }}" -b "This PR updates the metainfo for release ${{ github.event.release.tag_name }}." gh pr merge --admin -d -r env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 35d2dd6505b89b3c72e22a941c6f052d2d7b2a21 Mon Sep 17 00:00:00 2001 From: Lewis Crichton Date: Mon, 4 Dec 2023 21:33:30 +0000 Subject: [PATCH 16/26] ci: is very hard to get right [skip ci] --- .github/workflows/meta.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/meta.yml b/.github/workflows/meta.yml index bc59d3d..8aa834d 100644 --- a/.github/workflows/meta.yml +++ b/.github/workflows/meta.yml @@ -32,6 +32,7 @@ jobs: git checkout -b ci/meta-update git add meta/dev.vencord.Vesktop.metainfo.xml git commit -m "Insert release changes for ${{ github.event.release.tag_name }} [skip ci]" + git push origin ci/meta-update gh pr create -B main -H ci/meta-update -t "Metainfo for ${{ github.event.release.tag_name }}" -b "This PR updates the metainfo for release ${{ github.event.release.tag_name }}." gh pr merge --admin -d -r env: From 378a1f7464cc5eefffaebca35ada776e8c25df44 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 4 Dec 2023 21:34:01 +0000 Subject: [PATCH 17/26] Insert release changes for [skip ci] --- meta/dev.vencord.Vesktop.metainfo.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/meta/dev.vencord.Vesktop.metainfo.xml b/meta/dev.vencord.Vesktop.metainfo.xml index f725f58..cb04ef7 100644 --- a/meta/dev.vencord.Vesktop.metainfo.xml +++ b/meta/dev.vencord.Vesktop.metainfo.xml @@ -29,6 +29,19 @@ + + https://github.com/Vencord/Vesktop/releases/tag/v0.4.4 + +

What's Changed

+
    +
  • improve venmic system compatibility by @Curve in https://github.com/Vencord/Vesktop/pull/230
  • +
  • Update steamdeck controller layout by @AAGaming00 in https://github.com/Vencord/Vesktop/pull/236
  • +
  • feat: Add option to disable smooth scrolling by @ZirixCZ in https://github.com/Vencord/Vesktop/pull/255
  • +
  • unblur shiggy in splash screen by @viacoro in https://github.com/Vencord/Vesktop/pull/221
  • +
  • update electron & arrpc @D3SOX in https://github.com/Vencord/Vesktop/pull/258
  • +
+
+
https://github.com/Vencord/Vesktop/releases/tag/v0.4.3 From 49cd558fa1fb912ecf11b309f54c3f6a02990822 Mon Sep 17 00:00:00 2001 From: Lewis Crichton Date: Mon, 4 Dec 2023 21:41:01 +0000 Subject: [PATCH 18/26] ci: let it run CI and do an automerge [skip ci] --- .github/workflows/meta.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/meta.yml b/.github/workflows/meta.yml index 8aa834d..aea1201 100644 --- a/.github/workflows/meta.yml +++ b/.github/workflows/meta.yml @@ -31,9 +31,9 @@ jobs: git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git checkout -b ci/meta-update git add meta/dev.vencord.Vesktop.metainfo.xml - git commit -m "Insert release changes for ${{ github.event.release.tag_name }} [skip ci]" + git commit -m "Insert release changes for ${{ github.event.release.tag_name }}" git push origin ci/meta-update gh pr create -B main -H ci/meta-update -t "Metainfo for ${{ github.event.release.tag_name }}" -b "This PR updates the metainfo for release ${{ github.event.release.tag_name }}." - gh pr merge --admin -d -r + gh pr merge --auto -d -r env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From e02acda6fa840503e3f00d7ff37c57865c16631d Mon Sep 17 00:00:00 2001 From: Lewis Crichton Date: Mon, 4 Dec 2023 22:27:01 +0000 Subject: [PATCH 19/26] ci(updateMeta): fix invalid appstream gen --- .vscode/settings.json | 50 +++++++++++++-------------- meta/dev.vencord.Vesktop.metainfo.xml | 15 -------- scripts/utils/updateMeta.mts | 4 +-- 3 files changed, 27 insertions(+), 42 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index e729f08..1a277b4 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,25 +1,25 @@ -{ - "editor.formatOnSave": true, - "editor.codeActionsOnSave": { - "source.fixAll.eslint": true - }, - "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[javascript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[typescriptreact]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[javascriptreact]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[json]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[jsonc]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "cSpell.words": ["Vesktop"] -} +{ + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit" + }, + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[jsonc]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "cSpell.words": ["Vesktop"] +} diff --git a/meta/dev.vencord.Vesktop.metainfo.xml b/meta/dev.vencord.Vesktop.metainfo.xml index cb04ef7..44d1b54 100644 --- a/meta/dev.vencord.Vesktop.metainfo.xml +++ b/meta/dev.vencord.Vesktop.metainfo.xml @@ -28,21 +28,6 @@ - - - https://github.com/Vencord/Vesktop/releases/tag/v0.4.4 - -

What's Changed

-
    -
  • improve venmic system compatibility by @Curve in https://github.com/Vencord/Vesktop/pull/230
  • -
  • Update steamdeck controller layout by @AAGaming00 in https://github.com/Vencord/Vesktop/pull/236
  • -
  • feat: Add option to disable smooth scrolling by @ZirixCZ in https://github.com/Vencord/Vesktop/pull/255
  • -
  • unblur shiggy in splash screen by @viacoro in https://github.com/Vencord/Vesktop/pull/221
  • -
  • update electron & arrpc @D3SOX in https://github.com/Vencord/Vesktop/pull/258
  • -
-
-
- https://github.com/Vencord/Vesktop/releases/tag/v0.4.3 diff --git a/scripts/utils/updateMeta.mts b/scripts/utils/updateMeta.mts index 1d87482..44327b7 100644 --- a/scripts/utils/updateMeta.mts +++ b/scripts/utils/updateMeta.mts @@ -27,7 +27,7 @@ function generateDescription(description: string, descriptionNode: Element) { descriptionNode.appendChild(pNode); } else if (line.startsWith("* ")) { const liNode = descriptionNode.ownerDocument.createElement("li"); - liNode.textContent = line.slice(2); + liNode.textContent = line.slice(2).split("in https://github.com")[0].trim(); // don't include links to github if (!currentList) { currentList = descriptionNode.ownerDocument.createElement("ul"); @@ -82,7 +82,7 @@ generateDescription(latestReleaseInformation.body, description); release.appendChild(description); -releaseList.insertBefore(release, releaseList.childNodes[2]); +releaseList.insertBefore(release, releaseList.childNodes[0]); const output = xmlFormat(new XMLSerializer().serializeToString(parser), { lineSeparator: "\n", From fc33050496ccae3f96774fbe4667cf903b8a9c37 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 4 Dec 2023 22:27:51 +0000 Subject: [PATCH 20/26] Insert release changes for --- meta/dev.vencord.Vesktop.metainfo.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/meta/dev.vencord.Vesktop.metainfo.xml b/meta/dev.vencord.Vesktop.metainfo.xml index 44d1b54..d897226 100644 --- a/meta/dev.vencord.Vesktop.metainfo.xml +++ b/meta/dev.vencord.Vesktop.metainfo.xml @@ -28,6 +28,19 @@ + + https://github.com/Vencord/Vesktop/releases/tag/v0.4.4 + +

What's Changed

+
    +
  • improve venmic system compatibility by @Curve
  • +
  • Update steamdeck controller layout by @AAGaming00
  • +
  • feat: Add option to disable smooth scrolling by @ZirixCZ
  • +
  • unblur shiggy in splash screen by @viacoro
  • +
  • update electron & arrpc @D3SOX
  • +
+
+
https://github.com/Vencord/Vesktop/releases/tag/v0.4.3 From 623fa5d709f32906add5a50a8ee154c51b09ea3a Mon Sep 17 00:00:00 2001 From: Lewis Crichton Date: Mon, 4 Dec 2023 22:35:29 +0000 Subject: [PATCH 21/26] ci: notify us when PR is open [skip ci] annoyingly, github actions can't skip pull request checks and it cannot commit to the main branch due to protection, so we have to MANUALLY accept the changes in. on the bright side, we can check what it's generated in case it's wrong. --- .github/workflows/meta.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/meta.yml b/.github/workflows/meta.yml index aea1201..bc2af86 100644 --- a/.github/workflows/meta.yml +++ b/.github/workflows/meta.yml @@ -33,7 +33,6 @@ jobs: git add meta/dev.vencord.Vesktop.metainfo.xml git commit -m "Insert release changes for ${{ github.event.release.tag_name }}" git push origin ci/meta-update - gh pr create -B main -H ci/meta-update -t "Metainfo for ${{ github.event.release.tag_name }}" -b "This PR updates the metainfo for release ${{ github.event.release.tag_name }}." - gh pr merge --auto -d -r + gh pr create -B main -H ci/meta-update -t "Metainfo for ${{ github.event.release.tag_name }}" -b "This PR updates the metainfo for release ${{ github.event.release.tag_name }}. @lewisakura @Vendicated" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 4974848a5683798a8d12f7fe23feafdf9ca1bac7 Mon Sep 17 00:00:00 2001 From: Lewis Crichton Date: Sat, 9 Dec 2023 13:34:04 +0000 Subject: [PATCH 22/26] ci: pin to node v18.18.2 --- .github/workflows/meta.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- .github/workflows/test.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/meta.yml b/.github/workflows/meta.yml index bc2af86..5287c23 100644 --- a/.github/workflows/meta.yml +++ b/.github/workflows/meta.yml @@ -14,10 +14,10 @@ jobs: - uses: actions/checkout@v3 - uses: pnpm/action-setup@v2 # Install pnpm using packageManager key in package.json - - name: Use Node.js 18 + - name: Use Node.js 18.18.2 uses: actions/setup-node@v3 with: - node-version: 18 + node-version: 18.18.2 - name: Install dependencies run: pnpm i diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 249492f..6054a10 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,10 +24,10 @@ jobs: - uses: actions/checkout@v3 - uses: pnpm/action-setup@v2 # Install pnpm using packageManager key in package.json - - name: Use Node.js 18 + - name: Use Node.js 18.18.2 uses: actions/setup-node@v3 with: - node-version: 18 + node-version: 18.18.2 cache: "pnpm" - name: Install dependencies diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index efd7fff..6d88280 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,10 +14,10 @@ jobs: - uses: actions/checkout@v3 - uses: pnpm/action-setup@v2 # Install pnpm using packageManager key in package.json - - name: Use Node.js 18 + - name: Use Node.js 18.18.2 uses: actions/setup-node@v3 with: - node-version: 18 + node-version: 18.18.2 cache: "pnpm" - name: Install dependencies From 40b952d8bf75d437b2e6425c2a116ddead66c3f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Vani=C5=A1?= Date: Sat, 9 Dec 2023 14:42:44 +0100 Subject: [PATCH 23/26] feat: Add start as minimized toggle to settings (#248) Co-authored-by: TheKodeToad Co-authored-by: V Co-authored-by: Lewis Crichton --- src/main/mainWindow.ts | 14 +++++++++----- src/main/splash.ts | 5 +++-- src/renderer/components/Settings.tsx | 3 ++- src/shared/settings.d.ts | 1 + 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/mainWindow.ts b/src/main/mainWindow.ts index 8fdb6ee..6e9a05c 100644 --- a/src/main/mainWindow.ts +++ b/src/main/mainWindow.ts @@ -442,7 +442,8 @@ function createMainWindow() { const runVencordMain = once(() => require(join(VENCORD_FILES_DIR, "vencordDesktopMain.js"))); export async function createWindows() { - const splash = createSplashWindow(); + const { startMinimized } = Settings.store; + const splash = createSplashWindow(startMinimized); // SteamOS letterboxes and scales it terribly, so just full screen it if (isDeckGameMode) splash.setFullScreen(true); await ensureVencordFiles(); @@ -452,11 +453,8 @@ export async function createWindows() { mainWin.webContents.on("did-finish-load", () => { splash.destroy(); - mainWin!.show(); - if (Settings.store.maximized && !isDeckGameMode) { - mainWin!.maximize(); - } + if (!startMinimized || isDeckGameMode) mainWin!.show(); if (isDeckGameMode) { // always use entire display @@ -466,5 +464,11 @@ export async function createWindows() { } }); + mainWin.once("show", () => { + if (Settings.store.maximized && !mainWin!.isMaximized() && !isDeckGameMode) { + mainWin!.maximize(); + } + }); + initArRPC(); } diff --git a/src/main/splash.ts b/src/main/splash.ts index f21799d..7c05de9 100644 --- a/src/main/splash.ts +++ b/src/main/splash.ts @@ -11,10 +11,11 @@ import { ICON_PATH, VIEW_DIR } from "shared/paths"; import { Settings } from "./settings"; -export function createSplashWindow() { +export function createSplashWindow(startMinimized = false) { const splash = new BrowserWindow({ ...SplashProps, - icon: ICON_PATH + icon: ICON_PATH, + show: !startMinimized }); splash.loadFile(join(VIEW_DIR, "splash.html")); diff --git a/src/renderer/components/Settings.tsx b/src/renderer/components/Settings.tsx index f818c3c..b90c746 100644 --- a/src/renderer/components/Settings.tsx +++ b/src/renderer/components/Settings.tsx @@ -49,7 +49,8 @@ export default function SettingsUi() { "Open Links in app (experimental)", "Opens links in a new Vesktop window instead of your web browser" ], - ["checkUpdates", "Check for updates", "Automatically check for Vesktop updates", true] + ["checkUpdates", "Check for updates", "Automatically check for Vesktop updates", true], + ["startMinimized", "Start minimized", "Vesktop remains in minimized mode on start", false] ]; const switches = allSwitches.filter(isTruthy); diff --git a/src/shared/settings.d.ts b/src/shared/settings.d.ts index 5cb6ca0..236cdfc 100644 --- a/src/shared/settings.d.ts +++ b/src/shared/settings.d.ts @@ -19,6 +19,7 @@ export interface Settings { arRPC?: boolean; appBadge?: boolean; discordWindowsTitleBar?: boolean; + startMinimized?: boolean; maximized?: boolean; minimized?: boolean; From aa397d003cbb0e897020d36bc5375551c9f7cf5f Mon Sep 17 00:00:00 2001 From: AAGaming Date: Fri, 22 Dec 2023 08:56:11 -0500 Subject: [PATCH 24/26] SteamOS: add flatpak support using steam.pipe (#283) --- src/main/ipc.ts | 8 ++++-- src/main/utils/makeLinksOpenExternally.ts | 16 +++++++++-- src/main/utils/steamOS.ts | 33 ++++++++++++++--------- 3 files changed, 41 insertions(+), 16 deletions(-) diff --git a/src/main/ipc.ts b/src/main/ipc.ts index 84755f4..504bd10 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -21,6 +21,7 @@ import { VENCORD_FILES_DIR, VENCORD_QUICKCSS_FILE, VENCORD_THEMES_DIR } from "./ import { mainWin } from "./mainWindow"; import { Settings } from "./settings"; import { handle, handleSync } from "./utils/ipcWrappers"; +import { isDeckGameMode, showGamePage } from "./utils/steamOS"; import { isValidVencordInstall } from "./utils/vencordLoader"; handleSync(IpcEvents.GET_VENCORD_PRELOAD_FILE, () => join(VENCORD_FILES_DIR, "vencordDesktopPreload.js")); @@ -47,11 +48,14 @@ handle(IpcEvents.SET_SETTINGS, (_, settings: typeof Settings.store, path?: strin Settings.setData(settings, path); }); -handle(IpcEvents.RELAUNCH, () => { +handle(IpcEvents.RELAUNCH, async () => { const options: RelaunchOptions = { args: process.argv.slice(1).concat(["--relaunch"]) }; - if (app.isPackaged && process.env.APPIMAGE) { + if (isDeckGameMode) { + // We can't properly relaunch when running under gamescope, but we can at least navigate to our page in Steam. + await showGamePage(); + } else if (app.isPackaged && process.env.APPIMAGE) { execFile(process.env.APPIMAGE, options.args); } else { app.relaunch(options); diff --git a/src/main/utils/makeLinksOpenExternally.ts b/src/main/utils/makeLinksOpenExternally.ts index b30b865..5197261 100644 --- a/src/main/utils/makeLinksOpenExternally.ts +++ b/src/main/utils/makeLinksOpenExternally.ts @@ -7,6 +7,7 @@ import { BrowserWindow, shell } from "electron"; import { Settings } from "../settings"; +import { execSteamURL, isDeckGameMode, steamOpenURL } from "./steamOS"; export function makeLinksOpenExternally(win: BrowserWindow) { win.webContents.setWindowOpenHandler(({ url }) => { @@ -30,9 +31,20 @@ export function makeLinksOpenExternally(win: BrowserWindow) { } // eslint-disable-next-line no-fallthrough case "mailto:": - case "steam:": case "spotify:": - shell.openExternal(url); + if (isDeckGameMode) { + steamOpenURL(url); + } else { + shell.openExternal(url); + } + break; + case "steam:": + if (isDeckGameMode) { + execSteamURL(url); + } else { + shell.openExternal(url); + } + break; } return { action: "deny" }; diff --git a/src/main/utils/steamOS.ts b/src/main/utils/steamOS.ts index feeafe4..44eadac 100644 --- a/src/main/utils/steamOS.ts +++ b/src/main/utils/steamOS.ts @@ -4,16 +4,13 @@ * Copyright (c) 2023 Vendicated and Vencord contributors */ -import { exec as callbackExec } from "child_process"; import { BrowserWindow, dialog } from "electron"; -import { sleep } from "shared/utils/sleep"; -import { promisify } from "util"; +import { writeFile } from "fs/promises"; +import { join } from "path"; import { MessageBoxChoice } from "../constants"; import { Settings } from "../settings"; -const exec = promisify(callbackExec); - // Bump this to re-show the prompt const layoutVersion = 2; // Get this from "show details" on the profile after exporting as a shared personal layout or using share with community @@ -42,16 +39,28 @@ function getAppId(): string | null { return null; } -async function execSteamURL(url: string): Promise { - await exec(`steam -ifrunning ${url}`); +export async function execSteamURL(url: string): Promise { + // This doesn't allow arbitrary execution despite the weird syntax. + await writeFile( + join(process.env.HOME || "/home/deck", ".steam", "steam.pipe"), + // replace ' to prevent argument injection + `'${process.env.HOME}/.local/share/Steam/ubuntu12_32/steam' '-ifrunning' '${url.replaceAll("'", "%27")}'\n`, + "utf-8" + ); +} + +export async function steamOpenURL(url: string) { + await execSteamURL(`steam://openurl/${url}`); +} + +export async function showGamePage() { + const appId = getAppId(); + if (!appId) return; + await execSteamURL(`steam://nav/games/details/${appId}`); } async function showLayout(appId: string) { - await execSteamURL(`steam://controllerconfig/${appId}/${layoutId}`); - // because the UI doesn't consistently reload after the data for the config has loaded... - // HOW HAS NOBODY AT VALVE RUN INTO THIS YET - await sleep(100); - await execSteamURL(`steam://controllerconfig/${appId}/${layoutId}`); + execSteamURL(`steam://controllerconfig/${appId}/${layoutId}`); } export async function askToApplySteamLayout(win: BrowserWindow) { From 1429815fd126d802235b1dba041d6509ea6cd312 Mon Sep 17 00:00:00 2001 From: V Date: Sun, 24 Dec 2023 00:15:26 +0100 Subject: [PATCH 25/26] README: remove outdated section (#303) --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 9c941dd..c63c163 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,3 @@ pnpm package:dir ## Motivation The official Discord Desktop app is very resource heavy compared to Discord in your Browser. There are multiple alternative Electron apps (ArmCord, WebCord, probably more) that prove how much of a performance gain you can gain by using a custom app. ArmCord already supports Vencord but makes it pretty limited for us. Making our own standalone app gives us much more control. - -This is just a random idea I (V) got, and might not actually ever be finished heh - -Gluon also seems very attractive for this because of how lightweight it can be and because unlike electron, streaming just works out of the box like in any chromium browser. However, at the time of writing this, it still lacks some features necessary to make it work (synchronous ipc or a way to get node process variables into the onLoad function for instance, plus onLoad seems to load a little too late sometimes) From dfc6970756074f3a9e65b6364b08824444b1b7d5 Mon Sep 17 00:00:00 2001 From: Lewis Crichton Date: Thu, 28 Dec 2023 00:38:31 +0000 Subject: [PATCH 26/26] fix(security): use promise queue for steam pipe (#300) this prevents an (unlikely) race condition where writing multiple large payloads to the pipe simultaneously could lead to jambled data => argument injection --- src/main/utils/steamOS.ts | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/utils/steamOS.ts b/src/main/utils/steamOS.ts index 44eadac..8145e5a 100644 --- a/src/main/utils/steamOS.ts +++ b/src/main/utils/steamOS.ts @@ -17,6 +17,8 @@ const layoutVersion = 2; const layoutId = "3080264545"; // Vesktop Layout v2 const numberRegex = /^[0-9]*$/; +let steamPipeQueue = Promise.resolve(); + export const isDeckGameMode = process.env.SteamOS === "1" && process.env.SteamGamepadUI === "1"; export function applyDeckKeyboardFix() { @@ -39,18 +41,20 @@ function getAppId(): string | null { return null; } -export async function execSteamURL(url: string): Promise { +export function execSteamURL(url: string) { // This doesn't allow arbitrary execution despite the weird syntax. - await writeFile( - join(process.env.HOME || "/home/deck", ".steam", "steam.pipe"), - // replace ' to prevent argument injection - `'${process.env.HOME}/.local/share/Steam/ubuntu12_32/steam' '-ifrunning' '${url.replaceAll("'", "%27")}'\n`, - "utf-8" + steamPipeQueue = steamPipeQueue.then(() => + writeFile( + join(process.env.HOME || "/home/deck", ".steam", "steam.pipe"), + // replace ' to prevent argument injection + `'${process.env.HOME}/.local/share/Steam/ubuntu12_32/steam' '-ifrunning' '${url.replaceAll("'", "%27")}'\n`, + "utf-8" + ) ); } -export async function steamOpenURL(url: string) { - await execSteamURL(`steam://openurl/${url}`); +export function steamOpenURL(url: string) { + execSteamURL(`steam://openurl/${url}`); } export async function showGamePage() {