À propos du projet

Element Call est une application de visioconférence construite sur le protocole Matrix, développée par Element. Elle est décrite comme une solution de visioconférence décentralisée et fédérée, utilisant MatrixRTC (MSC4143) avec LiveKit comme backend (MSC4195). Principales capacités décrites dans le README : - Fonctionnement décentralisé et fédéré à travers les homeservers Matrix, sans autorité centrale. - Appels chiffrés de bout en bout. - Trois modes d'utilisation : application web autonome, widget intégré dans les clients Matrix (Element Web, Element X sur iOS et Android), et bibliothèque de composants React expérimentale à monter dans une application hôte. - Basée sur WebRTC, ne nécessitant aucun logiciel supplémentaire pour les participants. - Évolutivité via le SFU LiveKit pour les réunions plus importantes. - Fonctionnalités telles que lever la main et les réactions emoji. Déploiement et packaging : un package complet prend en charge les modes autonome et widget sous forme de page web statique ; un package embarqué est destiné au mode widget intégré à une application de messagerie ; un package de composant (expérimental) construit Element Call comme composant React. La build du composant limite ses styles à son élément racine, prend en charge les container queries pour la mise en page, inclut l'anglais et charge les autres locales à la demande, et accepte des props de langue et de thème. Un hôte doit appeler initializeElementCall(config) avant le rendu, et fournit un client Matrix, roomId, intent, une config optionnelle et hostBridge ; l'hôte émet join, hangUp et setDeviceMute via une ref. Le package n'est pas encore publié et est installé comme dépendance git. Auto-hébergement : un guide d'auto-hébergement est référencé. Chaque déploiement nécessite un transport MatrixRTC sous la forme d'un serveur LiveKit. La découverte des transports utilise le point de terminaison GET /_matrix/client/unstable/org.matrix.msc4143/rtc/transports, renvoyant des entrées rtc_transports de type livekit avec un livekit_service_url pointant vers un MatrixRTC Authorization Service. Sélection du backend : les participants proposent les transports découverts via org.matrix.msc4143.rtc_foci dans leur événement d'état de membre d'appel ; pour LiveKit, le premier participant à rejoindre définit le backend via foci_preferred ; le service d'autorisation fournit ensuite l'URL WebSocket du SFU LiveKit et un JWT d'accès. Développement : les dépendances incluent Node.js, Corepack et Docker avec Compose pour le backend. La configuration du frontend utilise corepack enable, pnpm install, une config locale copiée depuis config/config.devenv.json, et pnpm dev. Un docker-compose-dev.yml démarre une pile locale avec des homeservers Synapse, un service d'autorisation MatrixRTC, un SFU LiveKit, une autorité de certification localhost et un reverse proxy TLS ; il utilise un secret de test et ne doit pas être exposé à l'internet public. Les tests utilisent Vitest (avec -u pour mettre à jour les snapshots) et Playwright, avec un harnais de composant sur le port 3001. Les traductions sont gérées via Localazy, et de nouvelles clés de traduction sont ajoutées en exécutant pnpm i18n et en modifiant locales/en/app.json. Licence : double licence par New Vector Ltd (Element) sous AGPL-3.0 ou une Element Commercial License payante.