diff --git a/README.md b/README.md index 3b3f3ce..b50b335 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Desktop application for [Netzbegruenung Konferenz] based on [Jitsi Meet] built w - [End-to-End Encryption](https://jitsi.org/blog/e2ee/) support (BETA) - Works with any Jitsi Meet deployment - Builtin auto-updates -- Remote control +- ~Remote control~ (currently disabled) - Always-On-Top window - Support for deeplinks such as `jitsi-meet://myroom` (will open `myroom` on the configured Jitsi instance) or `jitsi-meet://jitsi.mycompany.com/myroom` (will open `myroom` on the Jitsi instance running on `jitsi.mycompany.com`) @@ -17,10 +17,16 @@ Desktop application for [Netzbegruenung Konferenz] based on [Jitsi Meet] built w Download our latest release and you're off to the races! -| Windows | macOS | GNU/Linux (64bits only) | +| Windows | macOS | GNU/Linux (64-bit only) | | -- | -- | -- | | [Download](https://github.com/netzbegruenung/jitsi-meet-electron/releases/latest/download/netzbegruenung-konferenz.exe) | [Download](https://github.com/netzbegruenung/jitsi-meet-electron/releases/latest/download/netzbegruenung-konferenz.dmg) | [Download](https://github.com/netzbegruenung/jitsi-meet-electron/releases/latest/download/netzbegruenung-konferenz-x86_64.AppImage) | +### Third-Party builds + +[Download On Flathub](https://flathub.org/apps/details/org.jitsi.jitsi-meet) + ### Homebrew For *macOS* user, you can install the application using the following command: @@ -31,18 +37,6 @@ brew cask install jitsi-meet ### Using it with your own Jitsi Meet installation -In order to use this application with your own Jitsi Meet installation it's -necessary to enable the External API. Your server must serve a `external_api.js` -file at the root of the installation. - -Here is an example using nginx: - -``` -location /external_api.js { - alias /usr/share/jitsi-meet/libs/external_api.min.js; -} -``` - :warning: The following additional HTTP headers are known to break the Electron App: ``` @@ -60,6 +54,25 @@ If you want to hack on this project, here is how you do it. Install Node.js 12 first (or if you use [nvm](https://github.com/nvm-sh/nvm), switch to Node.js 12 by running `nvm use`). +
Extra dependencies for Windows + +```bash +npm install --global --production windows-build-tools +npm config set msvs_version 2017 +``` +
+ +
Extra dependencies for GNU/Linux + +X11, PNG and zlib development packages are necessary. On Debian-like systems then can be installed as follows: + +```bash +sudo apt install libx11-dev zlib1g-dev libpng-dev libxtst-dev +``` +
+ +Install all required packages: + ```bash npm install ``` @@ -131,9 +144,9 @@ Builtin auto-updates are not yet handled in macOS due to unsigned build. ### GNU/Linux -There is a known issue which prevents the app from starting on some Linux distributions: #231 +There is a known issue which prevents the app from starting on some Linux distributions: [#231](https://github.com/jitsi/jitsi-meet-electron/issues/231) -If after downloading it, you can't execute the file directly, try running `chmod u+x ./jitsi-meet-x86_64.AppImage.AppImage` +If after downloading it, you can't execute the file directly, try running `chmod u+x ./jitsi-meet-x86_64.AppImage` The workaround for now is to launch the app like so: `./jitsi-meet-x86_64.AppImage --no-sandbox` diff --git a/app/features/settings/components/ServerURLField.js b/app/features/settings/components/ServerURLField.js index 09ae945..b069eba 100644 --- a/app/features/settings/components/ServerURLField.js +++ b/app/features/settings/components/ServerURLField.js @@ -9,7 +9,7 @@ import type { Dispatch } from 'redux'; import { compose } from 'redux'; import config from '../../config'; -import { getExternalApiURL } from '../../utils'; +import { normalizeServerURL } from '../../utils'; import { setServerURL } from '../actions'; import { Form } from '../styled'; @@ -122,25 +122,32 @@ class ServerURLField extends Component { } /** - * Validates the Server URL by fetching external_api.js using the HEAD - * method. + * Validates the Server URL. * * @returns {void} */ _validateServerURL() { - fetch(getExternalApiURL(this.state.serverURL), { - method: 'HEAD' - }) - .then((response: Object) => { - this.setState({ - isValid: response.ok - }); - }) - .catch(() => { - this.setState({ - isValid: false - }); - }); + if (!this.state.serverURL.trim()) { + return true; + } + + const url = normalizeServerURL(this.state.serverURL); + let isValid; + + try { + // eslint-disable-next-line no-new + const tmp = new URL(url); + + if (!tmp.protocol.startsWith('http')) { + throw new Error('Invalid protocol'); + } + + isValid = true; + } catch (_) { + isValid = false; + } + + this.setState({ isValid }); } } diff --git a/app/features/utils/functions.js b/app/features/utils/functions.js index e8e11e2..36db8b3 100644 --- a/app/features/utils/functions.js +++ b/app/features/utils/functions.js @@ -2,22 +2,6 @@ // @flow -import config from '../config'; - -/** - * Returns the URL of the external_api.js of the server. - * - * @param {string} serverURL - Jitsi Meet Server URL. - * @returns {string} - The external_api.js URL. - */ -export function getExternalApiURL(serverURL: string) { - if (!serverURL) { - // eslint-disable-next-line no-param-reassign - serverURL = config.defaultServerURL; - } - - return `${normalizeServerURL(serverURL)}/external_api.js`; -} /** * Return true if Electron app is running on Mac system. diff --git a/app/i18n/index.js b/app/i18n/index.js index e509533..45af10c 100644 --- a/app/i18n/index.js +++ b/app/i18n/index.js @@ -7,6 +7,8 @@ const languages = { en: { translation: require('./lang/en.json') }, es: { translation: require('./lang/es.json') }, fr: { translation: require('./lang/fr.json') }, + gl: { translation: require('./lang/gl.json') }, + hu: { translation: require('./lang/hu.json') }, it: { translation: require('./lang/it.json') }, ru: { translation: require('./lang/ru.json') } }; diff --git a/app/i18n/lang/de.json b/app/i18n/lang/de.json index 8bc0156..0c5ff31 100644 --- a/app/i18n/lang/de.json +++ b/app/i18n/lang/de.json @@ -1,39 +1,39 @@ { - "enterConferenceNameOrUrl": "Gib einen Konferenznamen oder eine Jitsi URL ein", + "enterConferenceNameOrUrl": "Bitte einen Konferenznamen oder eine Jitsi-Adresse eingeben", "go": "LOS", "help": "Hilfe", "termsLink": "Nutzungsbedingungen", "privacyLink": "Datenschutzbedingungen", - "sendFeedbackLink": "Schicke uns Feedback", - "aboutLink": "FAQ", - "sourceLink": "Source Code", + "sendFeedbackLink": "Eine Rückmeldung senden", + "aboutLink": "F&A", + "sourceLink": "Quelltext", "versionLabel": "Version: {{version}}", "onboarding": { - "startTour": "Start Tour", + "startTour": "Tour starten", "skip": "Überspringen", "welcome": "Willkommen in {{appName}}", - "letUsShowYouAround": "Wir zeigen dir wie alles funktioniert!", + "letUsShowYouAround": "Wir zeigen wie alles funktioniert!", "next": "Weiter", - "conferenceUrl": "Gib den Namen (oder die ganze URL) des Raumes ein in den du willst.", - "settingsDrawerButton": "Hier klicken um zu den Einstellungen zu gelangen.", - "nameSetting": "Das ist dein Benutzername.", - "emailSetting": "Das E-Mail Feld ist teil deines Profiles, dieses Feld kann leer gelassen werden.", - "startMutedToggles": "Hier kannst du einstellen, ob du alle Konferenzen ohne aktiviertes Audio/Video beitrittst.", - "serverSetting": "Das ist der Server auf dem alle deine Konferenzen stattfinden werden, hier kann auch der eigene Server eingetragen werden!", - "serverTimeout": "Das ist die maximale Zeit, die ein Server zum Antworten auf einen Meetingbeitritt brauchen darf.", - "alwaysOnTop": "Hier kannst du ein kleines Fenster aktivieren, dass die Teilnehmer zeigt auch wenn du die Hauptapp gerade minimiert hast." + "conferenceUrl": "Bitte den Namen (oder die vollständige Adresse) des Raumes eingeben, dem beigetreten werden soll. Es kann ein Name ausgedacht werden, diesen bitte anderen mitteilen, damit sie denselben Namen eingeben.", + "settingsDrawerButton": "Hier klicken, um zu den Einstellungen zu gelangen.", + "nameSetting": "Das ist der Anzeigename, andere werden Sie unter diesem Namen sehen.", + "emailSetting": "Die hier eingegebene E-Mail ist Teil des Benutzerprofils.", + "startMutedToggles": "Hier kann eingestellt werden, ob mit stummgeschaltetem Audio oder Video gestartet wird. Das wird auf alle Konferenzen angewendet.", + "serverSetting": "Das ist der Server, auf dem die Konferenzen stattfinden werden. Es kann ein eigener verwendet werden, muss aber nicht!", + "serverTimeout": "Zeitüberschreitung für den Beitritt zu einer Konferenz. Wenn nicht rechtzeitig beigetreten wurde wird die Konferenz abgebrochen.", + "alwaysOnTop": "Hier kann eingestellt werden, ob das Fenster »Immer im Vordergrung« aktiviert wird. Dieses wird angezeigt, wenn das Hauptfenster den Fokus verliert. Das wird bei allen Konferenzen angewendet." }, "settings": { "back": "Zurück", "name": "Name", - "email": "Email", + "email": "E-Mail", "advancedSettings": "Erweiterte Einstellungen", - "alwaysOnTopWindow": "Always on Top Window", + "alwaysOnTopWindow": "Immer im Vordergrund", "startWithAudioMuted": "Ohne Audio starten", "startWithVideoMuted": "Ohne Video starten", - "invalidServer": "Falsche Server URL oder der Server unterstützt keine externe API", - "invalidServerTimeout": "Üngültiger Wert für die Server Wartezeit", - "serverUrl": "Server URL", - "serverTimeout": "Server Timeout (in Sekunden)" + "invalidServer": "Falsche Server-Adresse", + "invalidServerTimeout": "Üngültiger Wert für die Server-Wartezeit", + "serverUrl": "Server-Adresse", + "serverTimeout": "Server-Wartezeit (in Sekunden)" } } diff --git a/app/i18n/lang/en.json b/app/i18n/lang/en.json index 20e42de..df26637 100644 --- a/app/i18n/lang/en.json +++ b/app/i18n/lang/en.json @@ -31,7 +31,7 @@ "alwaysOnTopWindow": "Always on Top Window", "startWithAudioMuted": "Start with Audio muted", "startWithVideoMuted": "Start with Video muted", - "invalidServer": "Invalid Server URL or external API not enabled", + "invalidServer": "Invalid Server URL", "invalidServerTimeout": "Invalid value for Server Timeout", "serverUrl": "Server URL", "serverTimeout": "Server Timeout (in seconds)" diff --git a/app/i18n/lang/es.json b/app/i18n/lang/es.json index a6c3ae5..cea54bc 100644 --- a/app/i18n/lang/es.json +++ b/app/i18n/lang/es.json @@ -31,7 +31,7 @@ "alwaysOnTopWindow": "Ventana siempre encima", "startWithAudioMuted": "Iniciar con audio desactivado", "startWithVideoMuted": "Iniciar con video desactivado", - "invalidServer": "URL del servidor inválido o API externo no habilitada", + "invalidServer": "URL del servidor inválida", "serverUrl": "URL del servidor", "serverTimeout": "Tiempo de desconexión del servidor (en segundos)" } diff --git a/app/i18n/lang/fr.json b/app/i18n/lang/fr.json index 73394bb..e1c91ca 100644 --- a/app/i18n/lang/fr.json +++ b/app/i18n/lang/fr.json @@ -31,7 +31,7 @@ "alwaysOnTopWindow": "Fenêtre Toujours au Dessus", "startWithAudioMuted": "Démarrer avec le micro coupé", "startWithVideoMuted": "Démarrer avec la caméra coupée", - "invalidServer": "URL invalide ou API externe non activée", + "invalidServer": "URL invalide", "serverUrl": "URL du serveur", "serverTimeout": "Délai de connexion au server (en secondes)" } diff --git a/app/i18n/lang/gl.json b/app/i18n/lang/gl.json new file mode 100644 index 0000000..b0b64a5 --- /dev/null +++ b/app/i18n/lang/gl.json @@ -0,0 +1,39 @@ +{ + "enterConferenceNameOrUrl": "Introduza un nome para a conferencia ou un URL de Jitsi", + "go": "IR", + "help": "Axuda", + "termsLink": "Termos", + "privacyLink": "Privacidade", + "sendFeedbackLink": "Enviar unha opinión", + "aboutLink": "Sobre", + "sourceLink": "Código fonte", + "versionLabel": "Versión: {{version}}", + "onboarding": { + "startTour": "Comezar a visita guiada", + "skip": "Omitir", + "welcome": "Reciba a benvida a {{appName}}", + "letUsShowYouAround": "Permita que lle mostremos o que hai!", + "next": "Seguinte", + "conferenceUrl": "Introduza o nome (ou URL completo) da sala á que desexa sumarse. Pode dar de alta un nome e permitir que a xente coa que se reúne o saiba para que introduzan o mesmo nome.", + "settingsDrawerButton": "Prema aquí para abrir a gabeta de configuración.", + "nameSetting": "Este será o seu nome e será con el que apareza diante das demais persoas.", + "emailSetting": "O correo electrónico que apareza aquí será parte do seu perfil de usuario.", + "startMutedToggles": "Aquí pode alternar entre comezar co son ou co vídeo desactivados. Isto será aplicábel a todas as conferencias.", + "serverSetting": "Este será o servidor no que se leven a cabo as súas conferencias. Pode usar unha propia, mais non ten por que o facer!", + "serverTimeout": "Tempo de agarda para se sumar a unha reunión; se non se sumou antes de que remate, cancélase.", + "alwaysOnTop": "Pode alternar entre activar e desactivar a xanela «sempre por riba», que se mostra cando a xanela principal perde o foco. Isto é aplicábel a todas as conferencias." + }, + "settings": { + "back": "Atrás", + "name": "Nome", + "email": "Correo electrónico", + "advancedSettings": "Configuración avanzada", + "alwaysOnTopWindow": "Xanela sempre por riba", + "startWithAudioMuted": "Comezar co son desactivado", + "startWithVideoMuted": "Comezar co vídeo desactivado", + "invalidServer": "O URL do servidor é incorrecto", + "invalidServerTimeout": "O tempo de agarda do servidor é incorrecto", + "serverUrl": "URL do servidor", + "serverTimeout": "Tempo de agarda do servidor (en segundos)" + } +} diff --git a/app/i18n/lang/hu.json b/app/i18n/lang/hu.json new file mode 100644 index 0000000..0a3ea76 --- /dev/null +++ b/app/i18n/lang/hu.json @@ -0,0 +1,39 @@ +{ + "enterConferenceNameOrUrl": "Adja meg a konferencia nevét vagy a Jitsi URL-címét", + "go": "Indítás", + "help": "Súgó", + "termsLink": "Feltételek", + "privacyLink": "Adatvédelem", + "sendFeedbackLink": "Visszajelzés", + "aboutLink": "Névjegy", + "sourceLink": "Forráskód", + "versionLabel": "Változat: {{version}}", + "onboarding": { + "startTour": "Bemutató indítása", + "skip": "Kihagyás", + "welcome": "Isten hozott: {{appName}}!", + "letUsShowYouAround": "Hadd mutassuk meg Neked!", + "next": "Következő", + "conferenceUrl": "Írja be a csatlakozni kívánt szoba nevét (vagy teljes URL-címét). Megadhat egy nevet, csak tudassa másokkal, hogy ugyanazt a nevet írják be.", + "settingsDrawerButton": "Kattintson ide a beállítások fiókjának megnyitásához.", + "nameSetting": "Ez lesz a megjelenítendő neve, mások ezzel a névvel fognak látni.", + "emailSetting": "Az itt megadott e-mail része lesz a felhasználói profilnak.", + "startMutedToggles": "Hang elnémítva és videó nélkül kezd be-/kikapcsolással. Minden konferenciára vonatkozik.", + "serverSetting": "Kiszolgáló, ahol a konferenciákat tartják. Használja saját kiszolgálóját; ez azonban nem szükséges.", + "serverTimeout": "Ha a résztvevők nem csatlakoztak az időkorlát bekövetkezése előtt, akkor a találkozót visszavonják.", + "alwaysOnTop": "A „Mindig látható” ablak lehetővé teszi a be-/kikapcsolást. Akkor jelenik meg, amikor a főablak elveszíti a fókuszt. Ezt minden konferenciára alkalmazni kell." + }, + "settings": { + "back": "Vissza", + "name": "Név", + "email": "E-mail", + "advancedSettings": "Haladó beállítások", + "alwaysOnTopWindow": "Mindig látható", + "startWithAudioMuted": "Elnémítva kezd", + "startWithVideoMuted": "Videó nélkül kezd", + "invalidServer": "Érvénytelen kiszolgáló URL-címe", + "invalidServerTimeout": "A kiszolgáló időkorlátja érvénytelen", + "serverUrl": "Kiszolgáló URL-címe", + "serverTimeout": "Kiszolgálói időkorlát (másodperc)" + } +} diff --git a/app/i18n/lang/it.json b/app/i18n/lang/it.json index b015313..8352454 100644 --- a/app/i18n/lang/it.json +++ b/app/i18n/lang/it.json @@ -31,7 +31,7 @@ "alwaysOnTopWindow": "Finestra sempre in primo piano", "startWithAudioMuted": "Inizia senza audio", "startWithVideoMuted": "Inizio senza video", - "invalidServer": "URL del server errato o il server non supporta un'API esterna", + "invalidServer": "URL del server errato", "serverUrl": "URL Server", "serverTimeout": "Timeout del server (in secondi)" } diff --git a/app/i18n/lang/ru.json b/app/i18n/lang/ru.json index abb85fe..8af1f43 100644 --- a/app/i18n/lang/ru.json +++ b/app/i18n/lang/ru.json @@ -31,7 +31,7 @@ "alwaysOnTopWindow": "Поверх всех окон", "startWithAudioMuted": "Начать без звука", "startWithVideoMuted": "Начать без видео", - "invalidServer": "Неверный URL-адрес сервера или внешний API не включен", + "invalidServer": "Неверный URL-адрес сервера", "serverUrl": "URL-адрес сервера", "serverTimeout": "Тайм-аут сервера (в секундах)" } diff --git a/main.js b/main.js index 4a450c7..8178420 100644 --- a/main.js +++ b/main.js @@ -22,15 +22,15 @@ const path = require('path'); const URL = require('url'); const config = require('./app/features/config'); const { openExternalLink } = require('./app/features/utils/openExternalLink'); +const pkgJson = require('./package.json'); const showDevTools = Boolean(process.env.SHOW_DEV_TOOLS) || (process.argv.indexOf('--show-dev-tools') > -1); // We need this because of https://github.com/electron/electron/issues/18214 app.commandLine.appendSwitch('disable-site-isolation-trials'); -// https://bugs.chromium.org/p/chromium/issues/detail?id=1086373 -app.commandLine.appendSwitch('disable-webrtc-hw-encoding'); -app.commandLine.appendSwitch('disable-webrtc-hw-decoding'); +// We need to disable hardware acceleration because its causes the screenshare to flicker. +app.commandLine.appendSwitch('disable-gpu'); // Needed until robot.js is fixed: https://github.com/octalmage/robotjs/issues/580 app.allowRendererProcessReuse = false; @@ -185,12 +185,13 @@ function createJitsiMeetWindow() { y: windowState.y, width: windowState.width, height: windowState.height, - icon: path.resolve(basePath, './resources/icons/icon_512x512.png'), + icon: path.resolve(basePath, './resources/icon.png'), minWidth: 800, minHeight: 600, show: false, webPreferences: { - experimentalFeatures: true, // Insertable streams, for E2EE. + enableBlinkFeatures: 'RTCInsertableStreams', + enableRemoteModule: true, nativeWindowOpen: true, nodeIntegration: false, preload: path.resolve(basePath, './build/preload.js') @@ -204,7 +205,7 @@ function createJitsiMeetWindow() { initPopupsConfigurationMain(mainWindow); setupAlwaysOnTopMain(mainWindow); setupPowerMonitorMain(mainWindow); - setupScreenSharingMain(mainWindow, config.default.appName); + setupScreenSharingMain(mainWindow, config.default.appName, pkgJson.build.appId); mainWindow.webContents.on('new-window', (event, url, frameName) => { const target = getPopupTarget(url, frameName); diff --git a/package-lock.json b/package-lock.json index 17d92ff..14d5ecb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "jitsi-meet-electron", - "version": "2.3.0", + "version": "2.4.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -5102,12 +5102,6 @@ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, - "accessibility-developer-tools": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/accessibility-developer-tools/-/accessibility-developer-tools-2.12.0.tgz", - "integrity": "sha1-PaDM6dbsY3OWS4TzXbfPw996tRQ=", - "dev": true - }, "acorn": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", @@ -5673,9 +5667,9 @@ } }, "bl": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz", - "integrity": "sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", + "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", "requires": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -5683,12 +5677,12 @@ }, "dependencies": { "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, "readable-stream": { @@ -5731,9 +5725,9 @@ "dev": true }, "boolean": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.1.tgz", - "integrity": "sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.2.tgz", + "integrity": "sha512-RwywHlpCRc3/Wh81MiCKun4ydaIFyW5Ea6JbL6sRCVx5q5irDw7pMXBUFYF/jArQ6YrG36q0kpovc9P/Kd3I4g==", "dev": true, "optional": true }, @@ -7311,17 +7305,6 @@ "dev": true, "optional": true }, - "devtron": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/devtron/-/devtron-1.4.0.tgz", - "integrity": "sha1-tedIvW6Vu+cL/MaKrm/mlhGUQeE=", - "dev": true, - "requires": { - "accessibility-developer-tools": "^2.11.0", - "highlight.js": "^9.3.0", - "humanize-plus": "^1.8.1" - } - }, "diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -7529,9 +7512,9 @@ } }, "electron": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/electron/-/electron-9.0.5.tgz", - "integrity": "sha512-bnL9H48LuQ250DML8xUscsKiuSu+xv5umXbpBXYJ0BfvYVmFfNbG3jCfhrsH7aP6UcQKVxOG1R/oQExd0EFneQ==", + "version": "10.1.6", + "resolved": "https://registry.npmjs.org/electron/-/electron-10.1.6.tgz", + "integrity": "sha512-Wyiq5Fy64KAa51i72m+5zayYKSm9O5lnittUdaElAn3PAzGl3yDifYO2QsXR7k/iKxWVSROOPzf43mXYytL67Q==", "dev": true, "requires": { "@electron/get": "^1.0.1", @@ -8030,9 +8013,9 @@ } }, "elliptic": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", - "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -9284,16 +9267,36 @@ }, "dependencies": { "core-js": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", - "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.0.tgz", + "integrity": "sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA==", "dev": true, "optional": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "optional": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, "optional": true } @@ -9527,12 +9530,6 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, - "highlight.js": { - "version": "9.15.10", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.10.tgz", - "integrity": "sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw==", - "dev": true - }, "history": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", @@ -9672,12 +9669,6 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, - "humanize-plus": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/humanize-plus/-/humanize-plus-1.8.2.tgz", - "integrity": "sha1-pls0RZrWNnrbs3B6gqPJ+RYWcDA=", - "dev": true - }, "i18next": { "version": "19.4.5", "resolved": "https://registry.npmjs.org/i18next/-/i18next-19.4.5.tgz", @@ -9778,9 +9769,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" }, "inquirer": { "version": "6.5.2", @@ -10165,9 +10156,10 @@ } }, "jitsi-meet-electron-utils": { - "version": "github:jitsi/jitsi-meet-electron-utils#eec44118c8c6a0a0e435727747e575a0381ef67c", - "from": "github:jitsi/jitsi-meet-electron-utils#v2.0.7", + "version": "github:jitsi/jitsi-meet-electron-utils#d606da675a3e8f2e327bcf12b15120b188002d0f", + "from": "github:jitsi/jitsi-meet-electron-utils#v2.0.12", "requires": { + "jitsi-meet-logger": "github:jitsi/jitsi-meet-logger#v1.0.0", "mac-screen-capture-permissions": "^1.1.0", "nan": "^2.14.0", "postis": "^2.2.0", @@ -10183,6 +10175,10 @@ } } }, + "jitsi-meet-logger": { + "version": "github:jitsi/jitsi-meet-logger#4add5bac2e4cea73a05f42b7596ee03c7f7a2567", + "from": "github:jitsi/jitsi-meet-logger#v1.0.0" + }, "js-md5": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz", @@ -10464,9 +10460,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "lodash.clonedeep": { "version": "4.5.0", @@ -10521,9 +10517,9 @@ }, "dependencies": { "cross-spawn": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", - "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -10547,9 +10543,9 @@ } }, "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "requires": { "pump": "^3.0.0" } @@ -10568,9 +10564,9 @@ } }, "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "requires": { "mimic-fn": "^2.1.0" } @@ -11079,9 +11075,9 @@ } }, "node-abi": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.17.0.tgz", - "integrity": "sha512-dFRAA0ACk/aBo0TIXQMEWMLUTyWYYT8OBYIzLmEUrQTElGRjxDCvyBZIsDL0QA7QCaj9PrawhOmTEdsuLY4uOQ==", + "version": "2.19.3", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.19.3.tgz", + "integrity": "sha512-9xZrlyfvKhWme2EXFKQhZRp1yNWT/uI1luYPr3sFl+H4keYY4xR+1jO7mvTTijIsHf1M+QDe9uWuKeEpLInIlg==", "requires": { "semver": "^5.4.1" } @@ -11848,15 +11844,15 @@ "integrity": "sha1-3F4yN2WYXd/cv9r8MUGpVprvdak=" }, "prebuild-install": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.3.tgz", - "integrity": "sha512-GV+nsUXuPW2p8Zy7SarF/2W/oiK8bFQgJcncoJ0d7kRpekEA0ftChjfEaF9/Y+QJEc/wFR7RAEa8lYByuUIe2g==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz", + "integrity": "sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==", "requires": { "detect-libc": "^1.0.3", "expand-template": "^2.0.3", "github-from-package": "0.0.0", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", "napi-build-utils": "^1.0.1", "node-abi": "^2.7.0", "noop-logger": "^0.1.1", @@ -11867,13 +11863,6 @@ "tar-fs": "^2.0.0", "tunnel-agent": "^0.6.0", "which-pm-runs": "^1.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - } } }, "prelude-ls": { @@ -12686,13 +12675,13 @@ } }, "roarr": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.3.tgz", - "integrity": "sha512-AEjYvmAhlyxOeB9OqPUzQCo3kuAkNfuDk/HqWbZdFsqDFpapkTjiw+p4svNEoRLvuqNTxqfL+s+gtD4eDgZ+CA==", + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", "dev": true, "optional": true, "requires": { - "boolean": "^3.0.0", + "boolean": "^3.0.1", "detect-node": "^2.0.4", "globalthis": "^1.0.1", "json-stringify-safe": "^5.0.1", @@ -12875,10 +12864,13 @@ } }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "set-blocking": { "version": "2.0.0", @@ -12988,9 +12980,9 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "simple-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", - "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" }, "simple-get": { "version": "3.1.0", @@ -13623,22 +13615,22 @@ "dev": true }, "tar-fs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.0.tgz", - "integrity": "sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "requires": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.0.0" + "tar-stream": "^2.1.4" } }, "tar-stream": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz", - "integrity": "sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz", + "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==", "requires": { - "bl": "^4.0.1", + "bl": "^4.0.3", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", @@ -13699,16 +13691,16 @@ } }, "terser-webpack-plugin": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", - "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", "dev": true, "requires": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", "is-wsl": "^1.1.0", "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", + "serialize-javascript": "^4.0.0", "source-map": "^0.6.1", "terser": "^4.1.2", "webpack-sources": "^1.4.0", @@ -14584,12 +14576,6 @@ "dev": true, "optional": true }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, diff --git a/package.json b/package.json index 177090b..9ef3ecc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "netzbegruenung-konferenz", - "version": "2.3.0", + "version": "2.4.2", "description": "Electron application for Netzbegruenung Konferenz (Jitsi Meet)", "main": "./build/main.js", "productName": "Netzbegruenung Konferenz", @@ -9,7 +9,6 @@ "clean": "rm -rf node_modules build dist", "lint": "eslint . && flow", "build": "webpack --config ./webpack.main.js --mode production && webpack --config ./webpack.renderer.js --mode production", - "pack": "npm run build && electron-builder --dir", "dist": "npm run build && electron-builder", "postinstall": "patch-package && electron-builder install-app-deps", "watch": "webpack --config ./webpack.renderer.js --mode development --watch --watch-poll" @@ -130,7 +129,7 @@ "electron-window-state": "5.0.3", "history": "4.10.1", "i18next": "19.4.5", - "jitsi-meet-electron-utils": "github:jitsi/jitsi-meet-electron-utils#v2.0.7", + "jitsi-meet-electron-utils": "github:jitsi/jitsi-meet-electron-utils#v2.0.12", "js-utils": "github:jitsi/js-utils#cf11996bd866fdb47326c59a5d3bc24be17282d4", "moment": "2.23.0", "mousetrap": "1.6.2", @@ -159,8 +158,7 @@ "babel-loader": "8.1.0", "concurrently": "5.1.0", "css-loader": "3.5.0", - "devtron": "1.4.0", - "electron": "9.0.5", + "electron": "10.1.6", "electron-builder": "22.7.0", "electron-react-devtools": "0.5.3", "eslint": "6.5.1", diff --git a/resources/icon.ico b/resources/icon.ico deleted file mode 100644 index 1b65921..0000000 Binary files a/resources/icon.ico and /dev/null differ diff --git a/resources/icons/icon_512x512.png b/resources/icon.png similarity index 100% rename from resources/icons/icon_512x512.png rename to resources/icon.png diff --git a/resources/icons/icon_128x128.png b/resources/icons/icon_128x128.png deleted file mode 100755 index bd0961c..0000000 Binary files a/resources/icons/icon_128x128.png and /dev/null differ diff --git a/resources/icons/icon_16x16.png b/resources/icons/icon_16x16.png deleted file mode 100755 index 9ad186b..0000000 Binary files a/resources/icons/icon_16x16.png and /dev/null differ diff --git a/resources/icons/icon_24x24.png b/resources/icons/icon_24x24.png deleted file mode 100755 index 7b0f8c6..0000000 Binary files a/resources/icons/icon_24x24.png and /dev/null differ diff --git a/resources/icons/icon_256x256.png b/resources/icons/icon_256x256.png deleted file mode 100755 index 760e67e..0000000 Binary files a/resources/icons/icon_256x256.png and /dev/null differ diff --git a/resources/icons/icon_32x32.png b/resources/icons/icon_32x32.png deleted file mode 100755 index fb5f241..0000000 Binary files a/resources/icons/icon_32x32.png and /dev/null differ diff --git a/resources/icons/icon_48x48.png b/resources/icons/icon_48x48.png deleted file mode 100755 index 9a80ede..0000000 Binary files a/resources/icons/icon_48x48.png and /dev/null differ diff --git a/resources/icons/icon_64x64.png b/resources/icons/icon_64x64.png deleted file mode 100755 index 80a0ed4..0000000 Binary files a/resources/icons/icon_64x64.png and /dev/null differ diff --git a/resources/icons/icon_96x96.png b/resources/icons/icon_96x96.png deleted file mode 100755 index 7a5f6f5..0000000 Binary files a/resources/icons/icon_96x96.png and /dev/null differ