Compare commits
	
		
			No commits in common. "main" and "v1.5.3" have entirely different histories.
		
	
	
		
	
		
					 17 changed files with 1278 additions and 1824 deletions
				
			
		
							
								
								
									
										69
									
								
								.eslintrc.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								.eslintrc.json
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,69 @@ | |||
| { | ||||
|     "root": true, | ||||
|     "parser": "@typescript-eslint/parser", | ||||
|     "ignorePatterns": ["dist", "node_modules"], | ||||
|     "plugins": [ | ||||
|         "@typescript-eslint", | ||||
|         "license-header", | ||||
|         "simple-import-sort", | ||||
|         "unused-imports", | ||||
|         "path-alias", | ||||
|         "prettier" | ||||
|     ], | ||||
|     "settings": { | ||||
|         "import/resolver": { | ||||
|             "alias": { | ||||
|                 "map": [] | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|     "rules": { | ||||
|         "license-header/header": ["error", "scripts/header.txt"], | ||||
|         "eqeqeq": ["error", "always", { "null": "ignore" }], | ||||
|         "spaced-comment": ["error", "always", { "markers": ["!"] }], | ||||
|         "yoda": "error", | ||||
|         "prefer-destructuring": [ | ||||
|             "error", | ||||
|             { | ||||
|                 "VariableDeclarator": { "array": false, "object": true }, | ||||
|                 "AssignmentExpression": { "array": false, "object": false } | ||||
|             } | ||||
|         ], | ||||
|         "operator-assignment": ["error", "always"], | ||||
|         "no-useless-computed-key": "error", | ||||
|         "no-unneeded-ternary": ["error", { "defaultAssignment": false }], | ||||
|         "no-invalid-regexp": "error", | ||||
|         "no-constant-condition": ["error", { "checkLoops": false }], | ||||
|         "no-duplicate-imports": "error", | ||||
|         "no-extra-semi": "error", | ||||
|         "dot-notation": "error", | ||||
|         "no-useless-escape": "error", | ||||
|         "no-fallthrough": "error", | ||||
|         "for-direction": "error", | ||||
|         "no-async-promise-executor": "error", | ||||
|         "no-cond-assign": "error", | ||||
|         "no-dupe-else-if": "error", | ||||
|         "no-duplicate-case": "error", | ||||
|         "no-irregular-whitespace": "error", | ||||
|         "no-loss-of-precision": "error", | ||||
|         "no-misleading-character-class": "error", | ||||
|         "no-prototype-builtins": "error", | ||||
|         "no-regex-spaces": "error", | ||||
|         "no-shadow-restricted-names": "error", | ||||
|         "no-unexpected-multiline": "error", | ||||
|         "no-unsafe-optional-chaining": "error", | ||||
|         "no-useless-backreference": "error", | ||||
|         "use-isnan": "error", | ||||
|         "prefer-const": "error", | ||||
|         "prefer-spread": "error", | ||||
| 
 | ||||
|         "simple-import-sort/imports": "error", | ||||
|         "simple-import-sort/exports": "error", | ||||
| 
 | ||||
|         "unused-imports/no-unused-imports": "error", | ||||
| 
 | ||||
|         "path-alias/no-relative": "error", | ||||
| 
 | ||||
|         "prettier/prettier": "error" | ||||
|     } | ||||
| } | ||||
|  | @ -1,32 +0,0 @@ | |||
| name: Build Pacman Package | ||||
| 
 | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - main | ||||
|   pull_request: | ||||
|     branches: | ||||
|       - main | ||||
| 
 | ||||
| jobs: | ||||
|   build: | ||||
|     runs-on: docker | ||||
| 
 | ||||
|     steps: | ||||
|       - name: Checkout repository | ||||
|         uses: actions/checkout@v2 | ||||
| 
 | ||||
|       - name: Setup Node.js | ||||
|         uses: actions/setup-node@v2 | ||||
|         with: | ||||
|           node-version: '22'  # Specify the Node.js version you need | ||||
| 
 | ||||
|       - name: Install pnpm | ||||
|         run: npm install -g pnpm | ||||
| 
 | ||||
|       - name: Install dependencies | ||||
|         run: pnpm i | ||||
| 
 | ||||
|       - name: Build Pacman package | ||||
|         run: pnpm package --linux pacman | ||||
| 
 | ||||
							
								
								
									
										31
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
								
							|  | @ -14,29 +14,15 @@ body: | |||
|               Make sure both Vesktop and Vencord are fully up to date. You can update Vencord by right-clicking the Vesktop tray icon and pressing "Update Vencord" | ||||
| 
 | ||||
|               **DO NOT REPORT** any of the following issues: | ||||
|               - Purely graphical glitches like flickering, scaling issues[^1] | ||||
|               - App crashing / not showing window with mentions of the gpu process in the stacktrace[^1] | ||||
|               - Screenshare not starting, black screening or crashing[^2] | ||||
|               - Purely graphical glitches like flickering, scaling issues, etc: Issue with your gpu. Nothing we can do, update drivers or disable hardware acceleration | ||||
|               - Vencord related issues: This is the Vesktop repo, not Vencord | ||||
|               - Captchas[^3] | ||||
|               - Issues with opening URLs[^4] | ||||
|               - Issues with Notifications[^4] | ||||
|               - Issues with Input Methods[^4] | ||||
|               - Issues with File Drag and Drop[^5]  | ||||
|               - Network Errors[^6] | ||||
|               - **SCREENSHARE NOT STARTING** / black screening on Linux: Issue with your desktop environment, specifically its xdg-desktop-portal. | ||||
|                 If you're on flatpak, try using native version. If that also doesn't work, you have to fix your systen. Inspect errors and google around. | ||||
| 
 | ||||
|               Linux users: Please only report issues with supported packages (flatpak and any builds from the README / releases). | ||||
|               We do not support other packages, like the AUR or Nix packages, so please first make sure your issue is reproducible with official releases, | ||||
|               like [our Flatpak](https://flathub.org/apps/dev.vencord.Vesktop) or [AppImage](https://vencord.dev/download/vesktop/amd64/appimage) | ||||
| 
 | ||||
| 
 | ||||
|               [^1]: GPU issue. Disable hardware acceleration in Vesktop Settings or run with `--disable-gpu` | ||||
|               [^2]: System issue. You will have to fix it | ||||
|               [^3]: If you are receiving a lot of captchas, it means Discord thinks you might be a bot. Make sure you're not using a VPN/Proxy | ||||
|               [^4]: These things are handled by Chromium / Electron, not us. If they don't work, it's either an issue with your system or a bug with Chromium. | ||||
|               [^5]: You are likely using the Vesktop flatpak and trying to drop a file the flatpak can't access. You can fix this by installing Flatseal and using it to grant Vesktop full access to your files | ||||
|               [^6]: Issue on your end, you have to fix it. Try changing your DNS to [1.1.1.1 (Cloudflare DNS)](https://developers.cloudflare.com/1.1.1.1/setup/) | ||||
|                | ||||
|     - type: input | ||||
|       id: discord | ||||
|       attributes: | ||||
|  | @ -64,15 +50,6 @@ body: | |||
|       validations: | ||||
|           required: false | ||||
| 
 | ||||
|     - type: input | ||||
|       id: install-type | ||||
|       attributes: | ||||
|           label: Package Type | ||||
|           description: What kind of Vesktop package are you using? (Setup exe, Portable, Flatpak, AppImage, Deb, etc) | ||||
|           placeholder: Flatpak | ||||
|       validations: | ||||
|           required: true | ||||
| 
 | ||||
|     - type: textarea | ||||
|       id: bug-description | ||||
|       attributes: | ||||
|  | @ -108,7 +85,7 @@ body: | |||
|       id: debug-logs | ||||
|       attributes: | ||||
|           label: Debug Logs | ||||
|           description: Run vesktop from the command line. Include the relevant command line output here. If there are any lines that seem relevant, try googling them or searching existing issues | ||||
|           description: Run vesktop from the command line. Include the relevant command line output here | ||||
|           value: | | ||||
|               ``` | ||||
|               Replace this text with your crash-log. Do not remove the backticks | ||||
|  |  | |||
							
								
								
									
										2
									
								
								.github/ISSUE_TEMPLATE/feature-request.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/ISSUE_TEMPLATE/feature-request.yml
									
									
									
									
										vendored
									
									
								
							|  | @ -14,8 +14,6 @@ body: | |||
|               This form is only meant for **Vesktop feature requests**. | ||||
|               For plugin requests or Vencord feature requests, go [here](https://github.com/Vencord/plugin-requests/issues/new?template=request.yml) instead! | ||||
| 
 | ||||
|               **DO NOT** make any icon related requests or you will be blocked. | ||||
| 
 | ||||
|     - type: input | ||||
|       id: discord | ||||
|       attributes: | ||||
|  |  | |||
							
								
								
									
										10
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							|  | @ -47,13 +47,7 @@ jobs: | |||
|             - name: Run Electron Builder | ||||
|               if: ${{ matrix.platform == 'mac' }} | ||||
|               run: | | ||||
|                   echo "$API_KEY" > apple.p8 | ||||
|                   pnpm electron-builder --${{ matrix.platform }} --publish always | ||||
|               env: | ||||
|                 GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|                 CSC_LINK: ${{ secrets.APPLE_SIGNING_CERT }} | ||||
|                 CSC_KEY_PASSWORD: ${{ secrets.APPLE_SIGNING_CERT_PASSWORD }} | ||||
|                 API_KEY: ${{ secrets.APPLE_API_KEY }} | ||||
|                 APPLE_API_KEY: apple.p8 | ||||
|                 APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }} | ||||
|                 APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }} | ||||
|                   GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|                   CSC_LINK: ${{ secrets.APPLE_SIGNING_CERT }} | ||||
|  |  | |||
							
								
								
									
										2
									
								
								.github/workflows/winget-submission.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/winget-submission.yml
									
									
									
									
										vendored
									
									
								
							|  | @ -16,7 +16,7 @@ jobs: | |||
|     runs-on: windows-latest | ||||
|     steps: | ||||
|       - name: Submit package to Winget Community Repo | ||||
|         uses: vedantmgoyal2009/winget-releaser@0db4f0a478166abd0fa438c631849f0b8dcfb99f | ||||
|         uses: vedantmgoyal2009/winget-releaser@4614300d5812e5df91cb02ef0edbece623d5dea8 | ||||
|         with: | ||||
|           identifier: Vencord.Vesktop | ||||
|           token: ${{ secrets.WINGET_PAT }} | ||||
|  |  | |||
							
								
								
									
										13
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								README.md
									
									
									
									
									
								
							|  | @ -21,14 +21,15 @@ Vesktop is a custom Discord desktop app | |||
| 
 | ||||
| If you don't know the difference, pick the Installer. | ||||
| 
 | ||||
| - [Installer](https://vencord.dev/download/vesktop/universal/windows) | ||||
| - Portable: | ||||
|   - [x64 / amd64](https://vencord.dev/download/vesktop/amd64/windows-portable) | ||||
|   - [Arm® 64](https://vencord.dev/download/vesktop/arm64/windows-portable) | ||||
| - [Installer](https://vencord.dev/download/vesktop/amd64/windows) | ||||
| - [Portable](https://vencord.dev/download/vesktop/amd64/windows-portable) | ||||
| 
 | ||||
| ### Mac | ||||
| 
 | ||||
| [Vesktop.dmg](https://vencord.dev/download/vesktop/universal/dmg) | ||||
| If you don't know the difference, pick the Intel build. | ||||
| 
 | ||||
| - [Intel build (amd64)](https://vencord.dev/download/vesktop/amd64/dmg) | ||||
| - [Apple Silicon (arm64)](https://vencord.dev/download/vesktop/arm64/dmg) | ||||
| 
 | ||||
| ### Linux | ||||
| 
 | ||||
|  | @ -41,7 +42,7 @@ If you don't know the difference, pick amd64. | |||
|   - [Ubuntu/Debian (.deb)](https://vencord.dev/download/vesktop/amd64/deb) | ||||
|   - [Fedora/RHEL (.rpm)](https://vencord.dev/download/vesktop/amd64/rpm) | ||||
|   - [tarball](https://vencord.dev/download/vesktop/amd64/tar) | ||||
| - Arm® 64 / aarch64 | ||||
| - arm64 / aarch64 | ||||
|   - [AppImage](https://vencord.dev/download/vesktop/arm64/appimage) | ||||
|   - [Ubuntu/Debian (.deb)](https://vencord.dev/download/vesktop/arm64/deb) | ||||
|   - [Fedora/RHEL (.rpm)](https://vencord.dev/download/vesktop/arm64/rpm) | ||||
|  |  | |||
|  | @ -1,102 +0,0 @@ | |||
| /* | ||||
|  * 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 | ||||
|  */ | ||||
| 
 | ||||
| //@ts-check
 | ||||
| 
 | ||||
| import stylistic from "@stylistic/eslint-plugin"; | ||||
| import pathAlias from "eslint-plugin-path-alias"; | ||||
| import header from "eslint-plugin-simple-header"; | ||||
| import importSort from "eslint-plugin-simple-import-sort"; | ||||
| import unusedImports from "eslint-plugin-unused-imports"; | ||||
| import tseslint from "typescript-eslint"; | ||||
| import prettier from "eslint-plugin-prettier"; | ||||
| 
 | ||||
| export default tseslint.config( | ||||
|     { ignores: ["dist"] }, | ||||
| 
 | ||||
|     { | ||||
|         files: ["src/**/*.{tsx,ts,mts,mjs,js,jsx}"], | ||||
|         plugins: { | ||||
|             header, | ||||
|             stylistic, | ||||
|             importSort, | ||||
|             unusedImports, | ||||
|             pathAlias, | ||||
|             prettier | ||||
|         }, | ||||
|         settings: { | ||||
|             "import/resolver": { | ||||
|                 alias: { | ||||
|                     map: [] | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         languageOptions: { | ||||
|             parser: tseslint.parser, | ||||
|             parserOptions: { | ||||
|                 project: true, | ||||
|                 tsconfigRootDir: import.meta.dirname | ||||
|             } | ||||
|         }, | ||||
|         rules: { | ||||
|             "header/header": [ | ||||
|                 "error", | ||||
|                 { | ||||
|                     files: ["scripts/header.txt"] | ||||
|                 } | ||||
|             ], | ||||
| 
 | ||||
|             // ESLint Rules
 | ||||
| 
 | ||||
|             yoda: "error", | ||||
|             eqeqeq: ["error", "always", { null: "ignore" }], | ||||
|             "prefer-destructuring": [ | ||||
|                 "error", | ||||
|                 { | ||||
|                     VariableDeclarator: { array: false, object: true }, | ||||
|                     AssignmentExpression: { array: false, object: false } | ||||
|                 } | ||||
|             ], | ||||
|             "operator-assignment": ["error", "always"], | ||||
|             "no-useless-computed-key": "error", | ||||
|             "no-unneeded-ternary": ["error", { defaultAssignment: false }], | ||||
|             "no-invalid-regexp": "error", | ||||
|             "no-constant-condition": ["error", { checkLoops: false }], | ||||
|             "no-duplicate-imports": "error", | ||||
|             "dot-notation": "error", | ||||
|             "no-useless-escape": "error", | ||||
|             "no-fallthrough": "error", | ||||
|             "for-direction": "error", | ||||
|             "no-async-promise-executor": "error", | ||||
|             "no-cond-assign": "error", | ||||
|             "no-dupe-else-if": "error", | ||||
|             "no-duplicate-case": "error", | ||||
|             "no-irregular-whitespace": "error", | ||||
|             "no-loss-of-precision": "error", | ||||
|             "no-misleading-character-class": "error", | ||||
|             "no-prototype-builtins": "error", | ||||
|             "no-regex-spaces": "error", | ||||
|             "no-shadow-restricted-names": "error", | ||||
|             "no-unexpected-multiline": "error", | ||||
|             "no-unsafe-optional-chaining": "error", | ||||
|             "no-useless-backreference": "error", | ||||
|             "use-isnan": "error", | ||||
|             "prefer-const": "error", | ||||
|             "prefer-spread": "error", | ||||
| 
 | ||||
|             // Styling Rules
 | ||||
|             "stylistic/spaced-comment": ["error", "always", { markers: ["!"] }], | ||||
|             "stylistic/no-extra-semi": "error", | ||||
| 
 | ||||
|             // Plugin Rules
 | ||||
|             "importSort/imports": "error", | ||||
|             "importSort/exports": "error", | ||||
|             "unusedImports/no-unused-imports": "error", | ||||
|             "pathAlias/no-relative": "error", | ||||
|             "prettier/prettier": "error" | ||||
|         } | ||||
|     } | ||||
| ); | ||||
|  | @ -28,34 +28,6 @@ | |||
|     </screenshot> | ||||
|   </screenshots> | ||||
|   <releases> | ||||
|     <release version="1.5.3" date="2024-07-04" type="stable"> | ||||
|       <url>https://github.com/Vencord/Vesktop/releases/tag/v1.5.3</url> | ||||
|       <description> | ||||
|         <p>Features</p> | ||||
|         <ul> | ||||
|           <li>added arm64 Windows support</li> | ||||
|           <li>windows & macOS builds are now universal</li> | ||||
|           <li>added option to configure spellcheck languages</li> | ||||
|           <li>will auto-update from now on</li> | ||||
|           <li>updated electron to 31 & Chromium to 126</li> | ||||
|           <li>macOS: Added customized dmg background by @khcrysalis</li> | ||||
|           <li>Windows Portable: store settings in portable folder by @MrGarlic1</li> | ||||
|           <li>linux audioshare: added granular selection, more options, better ui by @Curve</li> | ||||
|           <li>changed default screen-sharing quality to 720p 30 FPS by @Tiagoquix</li> | ||||
|         </ul> | ||||
|         <p>Fixes</p> | ||||
|         <ul> | ||||
|           <li>macOS: Added workaround for making things in draggable area clickable by @HAHALOSAH</li> | ||||
|           <li>fixed Screenshare UI for non-linux systems by @PolisanTheEasyNick</li> | ||||
|           <li>fixed opening on screen that was disconnected by @MrGarlic1</li> | ||||
|           <li>mac: hide native window controls with custom titlebar enabled by @MrGarlic1</li> | ||||
|           <li>fixed some broken patches by @D3SOX</li> | ||||
|           <li>fixed framerate in constraints by @kittykel</li> | ||||
|           <li>fixed some first launch switches not applying</li> | ||||
|           <li>fixed potential sandbox escape via custom vencord location</li> | ||||
|         </ul> | ||||
|       </description> | ||||
|     </release> | ||||
|     <release version="1.5.2" date="2024-05-01" type="stable"> | ||||
|       <url>https://github.com/Vencord/Vesktop/releases/tag/v1.5.2</url> | ||||
|       <description> | ||||
|  | @ -236,4 +208,4 @@ | |||
|     <keyword>Privacy</keyword> | ||||
|     <keyword>Mod</keyword> | ||||
|   </keywords> | ||||
| </component> | ||||
| </component> | ||||
|  |  | |||
							
								
								
									
										62
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										62
									
								
								package.json
									
									
									
									
									
								
							|  | @ -1,12 +1,8 @@ | |||
| { | ||||
|     "name": "vesktop", | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
|     "url": "git+https://git.baltrust.eu.org/Baltrust/Vesktop.git" | ||||
|   }, | ||||
|     "version": "1.5.3", | ||||
|     "private": true, | ||||
|     "description": "Vesktop is a custom Discord desktop app", | ||||
|     "description": "", | ||||
|     "keywords": [], | ||||
|     "homepage": "https://vencord.dev/", | ||||
|     "license": "GPL-3.0", | ||||
|  | @ -17,7 +13,7 @@ | |||
|         "build:dev": "pnpm build --dev", | ||||
|         "package": "pnpm build && electron-builder", | ||||
|         "package:dir": "pnpm build && electron-builder --dir", | ||||
|         "lint": "eslint", | ||||
|         "lint": "eslint . --ext .js,.jsx,.ts,.tsx,.mts,.mjs", | ||||
|         "lint:fix": "pnpm lint --fix", | ||||
|         "start": "pnpm build && electron .", | ||||
|         "start:dev": "pnpm build:dev && electron .", | ||||
|  | @ -28,36 +24,37 @@ | |||
|         "updateMeta": "tsx scripts/utils/updateMeta.mts" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "arrpc": "github:OpenAsar/arrpc#5aadc307cb9bf4479f0a12364a253b07a77ace22", | ||||
|         "electron-updater": "^6.3.4" | ||||
|         "arrpc": "github:OpenAsar/arrpc#c62ec6a04c8d870530aa6944257fe745f6c59a24", | ||||
|         "electron-updater": "^6.2.1" | ||||
|     }, | ||||
|     "optionalDependencies": { | ||||
|         "@vencord/venmic": "^6.1.0" | ||||
|     }, | ||||
|     "devDependencies": { | ||||
|         "@fal-works/esbuild-plugin-global-externals": "^2.1.2", | ||||
|         "@stylistic/eslint-plugin": "^2.8.0", | ||||
|         "@types/node": "^22.5.5", | ||||
|         "@types/react": "^18.3.8", | ||||
|         "@types/node": "^20.11.26", | ||||
|         "@types/react": "^18.2.0", | ||||
|         "@typescript-eslint/eslint-plugin": "^7.2.0", | ||||
|         "@typescript-eslint/parser": "^7.2.0", | ||||
|         "@vencord/types": "^1.8.4", | ||||
|         "dotenv": "^16.4.5", | ||||
|         "electron": "^32.1.2", | ||||
|         "electron-builder": "^25.0.5", | ||||
|         "esbuild": "^0.23.1", | ||||
|         "eslint": "^9.11.0", | ||||
|         "electron": "^31.1.0", | ||||
|         "electron-builder": "^24.13.3", | ||||
|         "esbuild": "^0.20.1", | ||||
|         "eslint": "^8.57.0", | ||||
|         "eslint-config-prettier": "^9.1.0", | ||||
|         "eslint-import-resolver-alias": "^1.1.2", | ||||
|         "eslint-plugin-path-alias": "^2.1.0", | ||||
|         "eslint-plugin-prettier": "^5.2.1", | ||||
|         "eslint-plugin-simple-header": "^1.2.1", | ||||
|         "eslint-plugin-simple-import-sort": "^12.1.1", | ||||
|         "eslint-plugin-unused-imports": "^4.1.4", | ||||
|         "prettier": "^3.3.3", | ||||
|         "eslint-plugin-license-header": "^0.6.0", | ||||
|         "eslint-plugin-path-alias": "^1.0.0", | ||||
|         "eslint-plugin-prettier": "^5.1.3", | ||||
|         "eslint-plugin-simple-import-sort": "^12.0.0", | ||||
|         "eslint-plugin-unused-imports": "^3.1.0", | ||||
|         "prettier": "^3.2.5", | ||||
|         "source-map-support": "^0.5.21", | ||||
|         "tsx": "^4.19.1", | ||||
|         "type-fest": "^4.26.1", | ||||
|         "typescript": "^5.6.2", | ||||
|         "typescript-eslint": "^8.6.0", | ||||
|         "xml-formatter": "^3.6.3" | ||||
|         "tsx": "^4.7.1", | ||||
|         "type-fest": "^4.12.0", | ||||
|         "typescript": "^5.4.2", | ||||
|         "xml-formatter": "^3.6.2" | ||||
|     }, | ||||
|     "packageManager": "pnpm@9.1.0", | ||||
|     "engines": { | ||||
|  | @ -127,15 +124,13 @@ | |||
|                     ] | ||||
|                 } | ||||
|             ], | ||||
|             "category": "public.app-category.social-networking", | ||||
|             "darkModeSupport": true, | ||||
|             "category": "Network", | ||||
|             "extendInfo": { | ||||
|                 "NSMicrophoneUsageDescription": "This app needs access to the microphone", | ||||
|                 "NSCameraUsageDescription": "This app needs access to the camera", | ||||
|                 "com.apple.security.device.audio-input": true, | ||||
|                 "com.apple.security.device.camera": true | ||||
|             }, | ||||
|             "notarize": true | ||||
|             } | ||||
|         }, | ||||
|         "dmg": { | ||||
|             "background": "build/background.tiff", | ||||
|  | @ -182,16 +177,11 @@ | |||
|         }, | ||||
|         "publish": { | ||||
|             "provider": "github" | ||||
|         }, | ||||
|         "rpm": { | ||||
|             "fpm": [ | ||||
|                 "--rpm-rpmbuild-define=_build_id_links none" | ||||
|             ] | ||||
|         } | ||||
|     }, | ||||
|     "pnpm": { | ||||
|         "patchedDependencies": { | ||||
|             "arrpc@3.5.0": "patches/arrpc@3.5.0.patch" | ||||
|             "arrpc@3.4.0": "patches/arrpc@3.4.0.patch" | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  |  | |||
							
								
								
									
										2651
									
								
								pnpm-lock.yaml
									
									
									
									
									
								
							
							
						
						
									
										2651
									
								
								pnpm-lock.yaml
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -61,11 +61,11 @@ export const DEFAULT_HEIGHT = 720; | |||
| 
 | ||||
| export const DISCORD_HOSTNAMES = ["discord.com", "canary.discord.com", "ptb.discord.com"]; | ||||
| 
 | ||||
| const VersionString = `AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${process.versions.chrome.split(".")[0]}.0.0.0 Safari/537.36`; | ||||
| const BrowserUserAgents = { | ||||
|     darwin: `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ${VersionString}`, | ||||
|     linux: `Mozilla/5.0 (X11; Linux x86_64) ${VersionString}`, | ||||
|     windows: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) ${VersionString}` | ||||
|     darwin: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36", | ||||
|     linux: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36", | ||||
|     windows: | ||||
|         "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36" | ||||
| }; | ||||
| 
 | ||||
| export const BrowserUserAgent = BrowserUserAgents[process.platform] || BrowserUserAgents.windows; | ||||
|  |  | |||
|  | @ -499,17 +499,5 @@ export async function createWindows() { | |||
|         }); | ||||
|     }); | ||||
| 
 | ||||
|     // evil hack to fix electron 32 regression that makes devtools always light theme
 | ||||
|     // https://github.com/electron/electron/issues/43367
 | ||||
|     // TODO: remove once fixed
 | ||||
|     mainWin.webContents.on("devtools-opened", () => { | ||||
|         if (!nativeTheme.shouldUseDarkColors) return; | ||||
| 
 | ||||
|         nativeTheme.themeSource = "light"; | ||||
|         setTimeout(() => { | ||||
|             nativeTheme.themeSource = "dark"; | ||||
|         }, 100); | ||||
|     }); | ||||
| 
 | ||||
|     initArRPC(); | ||||
| } | ||||
|  |  | |||
|  | @ -72,7 +72,7 @@ ipcMain.handle(IpcEvents.VIRT_MIC_LIST, () => { | |||
|     const { granularSelect } = Settings.store.audio ?? {}; | ||||
| 
 | ||||
|     const targets = obtainVenmic() | ||||
|         ?.list(granularSelect ? ["node.name"] : undefined) | ||||
|         ?.list(granularSelect ? ["application.process.id"] : undefined) | ||||
|         .filter(s => s["application.process.id"] !== audioPid); | ||||
| 
 | ||||
|     return targets ? { ok: true, targets, hasPipewirePulse } : { ok: false, isGlibCxxOutdated }; | ||||
|  |  | |||
|  | @ -254,13 +254,7 @@ function AudioSettingsModal({ | |||
|                 </Switch> | ||||
|                 <Switch | ||||
|                     hideBorder | ||||
|                     onChange={v => | ||||
|                         (Settings.audio = { | ||||
|                             ...Settings.audio, | ||||
|                             ignoreDevices: v, | ||||
|                             deviceSelect: v ? false : Settings.audio?.deviceSelect | ||||
|                         }) | ||||
|                     } | ||||
|                     onChange={v => (Settings.audio = { ...Settings.audio, ignoreDevices: v })} | ||||
|                     value={Settings.audio?.ignoreDevices ?? true} | ||||
|                     note={<>Exclude device nodes, such as nodes belonging to microphones or speakers.</>} | ||||
|                 > | ||||
|  | @ -277,23 +271,6 @@ function AudioSettingsModal({ | |||
|                 > | ||||
|                     Granular Selection | ||||
|                 </Switch> | ||||
|                 <Switch | ||||
|                     hideBorder | ||||
|                     onChange={value => { | ||||
|                         Settings.audio = { ...Settings.audio, deviceSelect: value }; | ||||
|                         setAudioSources("None"); | ||||
|                     }} | ||||
|                     value={Settings.audio?.deviceSelect ?? false} | ||||
|                     disabled={Settings.audio?.ignoreDevices} | ||||
|                     note={ | ||||
|                         <> | ||||
|                             Allow to select devices such as microphones. Requires <b>Ignore Devices</b> to be turned | ||||
|                             off. | ||||
|                         </> | ||||
|                     } | ||||
|                 > | ||||
|                     Device Selection | ||||
|                 </Switch> | ||||
|             </Modals.ModalContent> | ||||
|             <Modals.ModalFooter className="vcd-screen-picker-footer"> | ||||
|                 <Button color={Button.Colors.TRANSPARENT} onClick={close}> | ||||
|  | @ -446,7 +423,6 @@ function StreamSettings({ | |||
|                         openSettings={openSettings} | ||||
|                         includeSources={settings.includeSources} | ||||
|                         excludeSources={settings.excludeSources} | ||||
|                         deviceSelect={Settings.audio?.deviceSelect} | ||||
|                         granularSelect={Settings.audio?.granularSelect} | ||||
|                         setIncludeSources={sources => setSettings(s => ({ ...s, includeSources: sources }))} | ||||
|                         setExcludeSources={sources => setSettings(s => ({ ...s, excludeSources: sources }))} | ||||
|  | @ -465,23 +441,13 @@ function hasMatchingProps(value: Node, other: Node) { | |||
|     return Object.keys(value).every(key => value[key] === other[key]); | ||||
| } | ||||
| 
 | ||||
| function mapToAudioItem(node: AudioSource, granularSelect?: boolean, deviceSelect?: boolean): AudioItem[] { | ||||
| function mapToAudioItem(node: AudioSource, granularSelect?: boolean): AudioItem[] { | ||||
|     if (isSpecialSource(node)) { | ||||
|         return [{ name: node, value: node }]; | ||||
|     } | ||||
| 
 | ||||
|     const rtn: AudioItem[] = []; | ||||
| 
 | ||||
|     const mediaClass = node["media.class"]; | ||||
| 
 | ||||
|     if (mediaClass?.includes("Video") || mediaClass?.includes("Midi")) { | ||||
|         return rtn; | ||||
|     } | ||||
| 
 | ||||
|     if (!deviceSelect && node["device.id"]) { | ||||
|         return rtn; | ||||
|     } | ||||
| 
 | ||||
|     const name = node["application.name"]; | ||||
| 
 | ||||
|     if (name) { | ||||
|  | @ -492,15 +458,9 @@ function mapToAudioItem(node: AudioSource, granularSelect?: boolean, deviceSelec | |||
|         return rtn; | ||||
|     } | ||||
| 
 | ||||
|     const rawName = node["node.name"]; | ||||
| 
 | ||||
|     if (!name) { | ||||
|         rtn.push({ name: rawName, value: { "node.name": rawName } }); | ||||
|     } | ||||
| 
 | ||||
|     const binary = node["application.process.binary"]; | ||||
| 
 | ||||
|     if (!name && binary) { | ||||
|     if (!name) { | ||||
|         rtn.push({ name: binary, value: { "application.process.binary": binary } }); | ||||
|     } | ||||
| 
 | ||||
|  | @ -509,12 +469,10 @@ function mapToAudioItem(node: AudioSource, granularSelect?: boolean, deviceSelec | |||
|     const first = rtn[0]; | ||||
|     const firstValues = first.value as Node; | ||||
| 
 | ||||
|     if (pid) { | ||||
|         rtn.push({ | ||||
|             name: `${first.name} (${pid})`, | ||||
|             value: { ...firstValues, "application.process.id": pid } | ||||
|         }); | ||||
|     } | ||||
|     rtn.push({ | ||||
|         name: `${first.name} (${pid})`, | ||||
|         value: { ...firstValues, "application.process.id": pid } | ||||
|     }); | ||||
| 
 | ||||
|     const mediaName = node["media.name"]; | ||||
| 
 | ||||
|  | @ -525,13 +483,17 @@ function mapToAudioItem(node: AudioSource, granularSelect?: boolean, deviceSelec | |||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     if (mediaClass) { | ||||
|         rtn.push({ | ||||
|             name: `${first.name} [${mediaClass}]`, | ||||
|             value: { ...firstValues, "media.class": mediaClass } | ||||
|         }); | ||||
|     const mediaClass = node["media.class"]; | ||||
| 
 | ||||
|     if (!mediaClass) { | ||||
|         return rtn; | ||||
|     } | ||||
| 
 | ||||
|     rtn.push({ | ||||
|         name: `${first.name} [${mediaClass}]`, | ||||
|         value: { ...firstValues, "media.class": mediaClass } | ||||
|     }); | ||||
| 
 | ||||
|     return rtn; | ||||
| } | ||||
| 
 | ||||
|  | @ -573,7 +535,6 @@ function updateItems(setSources: (s: AudioSources) => void, sources?: AudioSourc | |||
| function AudioSourcePickerLinux({ | ||||
|     includeSources, | ||||
|     excludeSources, | ||||
|     deviceSelect, | ||||
|     granularSelect, | ||||
|     openSettings, | ||||
|     setIncludeSources, | ||||
|  | @ -581,7 +542,6 @@ function AudioSourcePickerLinux({ | |||
| }: { | ||||
|     includeSources?: AudioSources; | ||||
|     excludeSources?: AudioSources; | ||||
|     deviceSelect?: boolean; | ||||
|     granularSelect?: boolean; | ||||
|     openSettings: () => void; | ||||
|     setIncludeSources: (s: AudioSources) => void; | ||||
|  | @ -632,7 +592,7 @@ function AudioSourcePickerLinux({ | |||
| 
 | ||||
|     const allSources = sources.ok | ||||
|         ? [...specialSources, ...sources.targets] | ||||
|               .map(target => mapToAudioItem(target, granularSelect, deviceSelect)) | ||||
|               .map(target => mapToAudioItem(target, granularSelect)) | ||||
|               .flat() | ||||
|               .filter(uniqueName) | ||||
|         : []; | ||||
|  |  | |||
							
								
								
									
										2
									
								
								src/shared/settings.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								src/shared/settings.d.ts
									
									
									
									
										vendored
									
									
								
							|  | @ -30,8 +30,6 @@ export interface Settings { | |||
| 
 | ||||
|     audio?: { | ||||
|         workaround?: boolean; | ||||
| 
 | ||||
|         deviceSelect?: boolean; | ||||
|         granularSelect?: boolean; | ||||
| 
 | ||||
|         ignoreVirtual?: boolean; | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue