Remove perParticipantE2EE

This commit is contained in:
Half-Shot 2026-01-05 09:13:18 +00:00
parent 7398a83ae4
commit 7fe4ce74ca
29 changed files with 2 additions and 91 deletions

View File

@ -51,7 +51,6 @@ jobs:
allowed-hardcoded-keys: |
console_dev_note
labs|element_call_video_rooms
labs|feature_disable_call_per_sender_encryption
voip|element_call
error|invalid_json
error|misconfigured

View File

@ -92,15 +92,6 @@ This feature allows users to place native [MSC3401](https://github.com/matrix-or
If you're enabling this at the deployment level, you may also want to reference the docs for the `element_call` config section.
## Disable per-sender encryption for Element Call (`feature_disable_call_per_sender_encryption`)
The default for embedded Element Call in Element Web is per-participant encryption.
This labs flag disables encryption for embedded Element Call in encrypted rooms.
Under the hood this stops Element Web from adding the `perParticipantE2EE` flag for the Element Call widget url.
This is useful while we experiment with encryption and to make calling compatible with platforms that don't use encryption yet.
## Enable the notifications panel in the room header (`feature_notifications`)
Unreliable in encrypted rooms.

View File

@ -31,7 +31,6 @@ function assertCommonCallParameters(
expect(url.has("widgetId")).toEqual(true);
expect(url.has("parentUrl")).toEqual(true);
expect(hash.get("perParticipantE2EE")).toEqual("false");
expect(hash.get("userId")).toEqual(user.userId);
expect(hash.get("deviceId")).toEqual(user.deviceId);
expect(hash.get("roomId")).toEqual(room.roomId);

View File

@ -35,7 +35,6 @@ export const CallGuestLinkButton: React.FC<{ room: Room }> = ({ room }) => {
url.pathname = "/room/";
// Set params for the sharable url
url.searchParams.set("roomId", room.roomId);
if (room.hasEncryptionStateEvent()) url.searchParams.set("perParticipantE2EE", "true");
for (const server of calculateRoomVia(room)) {
url.searchParams.set("viaServers", server);
}

View File

@ -1529,7 +1529,6 @@
"experimental_description": "Rádi experimentujete? Vyzkoušejte naše nejnovější nápady ve vývoji. Tyto funkce nejsou dokončeny; mohou být nestabilní, mohou se změnit nebo mohou být zcela vypuštěny. <a>Zjistěte více</a>.",
"experimental_section": "Předběžné ukázky",
"extended_profiles_msc_support": "Vyžaduje, aby váš server podporoval MSC4133",
"feature_disable_call_per_sender_encryption": "Zakázat šifrování podle odesílatele pro Element Call",
"feature_wysiwyg_composer_description": "V editoru zpráv použít formátovaný text namísto Markdown.",
"group_calls": "Nový zážitek ze skupinových hovorů",
"group_developer": "Pro vývojáře",

View File

@ -1503,7 +1503,6 @@
"experimental_description": "Teimlo'n arbrofol? Rhowch gynnig ar ein syniadau diweddaraf sy'n cael eu datblygu. Nid yw'r nodweddion hyn yn derfynol; gallant fod yn ansefydlog, gallant newid, neu gallant gael eu gollwng yn gyfan gwbl. <a>Dysgu rhagor</a>.",
"experimental_section": "Rhagolygon cynnar",
"extended_profiles_msc_support": "Mae angen i'ch gweinydd gefnogi MSC4133",
"feature_disable_call_per_sender_encryption": "Analluogi amgryptio fesul anfonwr ar gyfer Element Call",
"feature_wysiwyg_composer_description": "Defnyddiwch destun cyfoethog yn lle Markdown yng nghyfansoddwr y neges.",
"group_calls": "Profiad galwad grŵp newydd",
"group_developer": "Datblygwr",

View File

@ -1525,7 +1525,6 @@
"experimental_description": "Experimentierfreudig? Probiere unsere neuesten, sich in Entwicklung befindlichen Ideen aus. Diese Funktionen sind nicht final; Sie könnten instabil sein, sich verändern oder sogar ganz entfernt werden. <a>Erfahre mehr</a>.",
"experimental_section": "Frühe Vorschauen",
"extended_profiles_msc_support": "Erfordert die Unterstützung von MSC4133 durch den Server",
"feature_disable_call_per_sender_encryption": "Verschlüsselung per-sender für Element Anruf abschalten",
"feature_wysiwyg_composer_description": "Verwende Textverarbeitung (Rich-Text) statt Markdown im Eingabefeld.",
"group_calls": "Neue Gruppenanruf-Erfahrung",
"group_developer": "Entwickler",

View File

@ -1535,7 +1535,6 @@
"experimental_description": "Feeling experimental? Try out our latest ideas in development. These features are not finalised; they may be unstable, may change, or may be dropped altogether. <a>Learn more</a>.",
"experimental_section": "Early previews",
"extended_profiles_msc_support": "Requires your server to support MSC4133",
"feature_disable_call_per_sender_encryption": "Disable per-sender encryption for Element Call",
"feature_wysiwyg_composer_description": "Use rich text instead of Markdown in the message composer.",
"group_calls": "New group call experience",
"group_developer": "Developer",

View File

@ -1530,7 +1530,6 @@
"experimental_description": "Soovid katsetada? Proovi meie uusimaid arendusmõtteid. Need funktsionaalsused pole üldsegi veel valmis, nad võivad toimida puudulikult, võivad muutuda või sootuks lõpetamata jääda. <a>Lisateavet leiad siit</a>.",
"experimental_section": "Varased arendusjärgud",
"extended_profiles_msc_support": "See eeldab, et koduserver toetab MSC4133 spetsifikatsiooni",
"feature_disable_call_per_sender_encryption": "Lülita Element Call'i kasutamisel krüptimine kasutajakohaselt välja",
"feature_wysiwyg_composer_description": "Sõnumite kirjutamisel kasuta Markdown'i asemel täisfunktsionaalset küljendust.",
"group_calls": "Uus rühmakõnede lahendus",
"group_developer": "Arendajad",

View File

@ -1527,7 +1527,6 @@
"experimental_description": "Envie dexpériences ? Essayez nos dernières idées en développement. Ces fonctionnalités ne sont pas terminées ; elles peuvent changer, être instables, ou être complètement abandonnées. <a>En savoir plus</a>.",
"experimental_section": "Avant-premières",
"extended_profiles_msc_support": "Nécessite que votre serveur prenne en charge MSC4133",
"feature_disable_call_per_sender_encryption": "Désactiver le chiffrement de chaque expéditeur pour Element Call",
"feature_wysiwyg_composer_description": "Utilise le texte formaté au lieu de Markdown dans le compositeur de message.",
"group_calls": "Nouvelle expérience dappel de groupe",
"group_developer": "Développeur",

View File

@ -1519,7 +1519,6 @@
"experimental_description": "Kísérletező kedvében van? Próbálja ki a legújabb fejlesztési ötleteinket. Ezek nincsenek befejezve; lehet, hogy instabilak, megváltozhatnak vagy el is tűnhetnek. <a>Tudjon meg többet</a>.",
"experimental_section": "Korai előzetesek",
"extended_profiles_msc_support": "A kiszolgálónak támogatnia kell az MSC4133-at",
"feature_disable_call_per_sender_encryption": "Küldőnkénti titkosítás letiltása Element Callhoz",
"feature_wysiwyg_composer_description": "Szövegszerkesztő használata a Markdown formázás helyett az üzenet írásakor.",
"group_calls": "Új konferenciahívási élmény",
"group_developer": "Fejlesztői",

View File

@ -1477,7 +1477,6 @@
"experimental_description": "Փորձարկման կարիք ունե՞ք։ Փորձեք մեր վերջին գաղափարները մշակման փուլում։ Այս գործառույթները դեռևս վերջնականապես մշակված չեն. դրանք կարող են անկայուն լինել, կարող են փոխվել կամ ընդհանրապես հանվել։ <a>Իմացեք ավելին</a>։",
"experimental_section": "Վաղ նախադիտումներ",
"extended_profiles_msc_support": "Պահանջում է, որ ձեր սերվերը աջակցի MSC4133-ը",
"feature_disable_call_per_sender_encryption": "Անջատել յուրաքանչյուր ուղարկողի գաղտնագրումը Element զանգի համար",
"feature_wysiwyg_composer_description": "Հաղորդագրության խմբագրիչում օգտագործել \"ձևաչափված տեքստ\" (Rich Text)՝ Markdown-ի փոխարեն",
"group_calls": "Խմբային զանգի նոր փորձ",
"group_developer": "Ծրագրավորող",

View File

@ -1524,7 +1524,6 @@
"experimental_description": "Merasa eksperimental? Coba ide terkini kami dalam pengembangan. Fitur ini belum selesai; mereka mungkin tidak stabil, mungkin berubah, atau dihapus sama sekali. <a>Pelajari lebih lanjut</a>.",
"experimental_section": "Pratinjau awal",
"extended_profiles_msc_support": "Memerlukan server Anda untuk mendukung MSC4133",
"feature_disable_call_per_sender_encryption": "Nonaktifkan enkripsi per pengirim untuk Element Call",
"feature_wysiwyg_composer_description": "Menggunakan teks kaya daripada Markdown dalam komposer pesan.",
"group_calls": "Pengalaman panggilan grup baru",
"group_developer": "Pengembang",

View File

@ -1289,8 +1289,6 @@
"element_call_video_rooms": "Stanze video di Element Call",
"experimental_description": "Ti senti di sperimentare? Prova le nostre ultime idee in sviluppo. Queste funzioni non sono complete; potrebbero essere instabili, cambiare o essere scartate. <a>Maggiori informazioni</a>.",
"experimental_section": "Anteprime",
"feature_disable_call_per_sender_encryption": "Disattiva la crittografia per mittente in Element Call",
"feature_wysiwyg_composer_description": "Usa il rich text invece del Markdown nel compositore di messaggi.",
"group_calls": "Nuova esperienza per chiamate di gruppo",
"group_developer": "Sviluppatore",
"group_encryption": "Crittografia",

View File

@ -1522,8 +1522,6 @@
"experimental_description": "실험적인 기분이 드시나요? 개발 중인 최신 아이디어를 시험해 보세요. 이 기능들은 아직 완성되지 않았으며, 불안정할 수 있고 변경되거나 아예 중단될 수도 있습니다. <a>자세히 알아보기</a>.",
"experimental_section": "조기 시연",
"extended_profiles_msc_support": "서버가 MSC4133을 지원해야 합니다.",
"feature_disable_call_per_sender_encryption": "Element 통화에서 발신자별 암호화 비활성화",
"feature_wysiwyg_composer_description": "메시지 작성기에서 Markdown 대신 서식 있는 텍스트를 사용하세요",
"group_calls": "그룹 통화 새 기능",
"group_developer": "개발자",
"group_encryption": "암호화",

View File

@ -1274,8 +1274,6 @@
"element_call_video_rooms": "Efitrano fandraisan'orinan-tsary",
"experimental_description": "Mahatsiaro andrana? Andramo ny hevitray farany amin'ny fampandrosoana. Tsy vita ireo endri-javatra ireo; mety hikorontana izy ireo, mety hiova, na mety ho latsaka tanteraka.<a> Hamantatra bebe kokoa</a> .",
"experimental_section": "Fijery mialoha",
"feature_disable_call_per_sender_encryption": "Atsaharo ny encryption isaky ny mpandefa hoany Element Call",
"feature_wysiwyg_composer_description": "Mampiasà lahatsoratra manankarena fa tsy Markdown ao amin'ny mpamoron-dahatsoratra.",
"group_calls": "Traikefa antso vondrona vaovao",
"group_developer": "Fampandrosoana",
"group_encryption": "Fanafenana",

View File

@ -1527,8 +1527,6 @@
"experimental_description": "Er du litt vågal? Prøv ut de nyeste ideene våre under utvikling. Disse funksjonene er ikke ferdigutviklet; de kan være ustabile, endres eller droppes helt. <a>Finn ut mer</a>.",
"experimental_section": "Tidlige forhåndsvisninger",
"extended_profiles_msc_support": "Krever at serveren din støtter MSC4133",
"feature_disable_call_per_sender_encryption": "Deaktiver kryptering per avsender for Element Call",
"feature_wysiwyg_composer_description": "Bruk rik tekst i stedet for Markdown i meldingsskriveren.",
"group_calls": "Ny opplevelse for gruppesamtaler",
"group_developer": "Utvikler",
"group_encryption": "Kryptering",

View File

@ -1512,9 +1512,6 @@
"experimental_description": "Chcesz poeksperymentować? Wypróbuj nasze najnowsze pomysły w trakcie rozwoju. Przedstawione funkcje nie zostały w pełni ukończone; mogą być niestabilne; mogą się zmienić lub zostać kompletnie porzucone. <a>Dowiedz się więcej</a>.",
"experimental_section": "Wczesny podgląd",
"extended_profiles_msc_support": "Wymaga, aby Twój serwer obsługiwał MSC4133",
"feature_disable_call_per_sender_encryption": "Wyłącz szyfrowanie nadawcy dla Element Call",
"feature_wysiwyg_composer_description": "Użyj bogatego edytora tekstu zamiast edytora Markdown podczas tworzenia wiadomości.",
"group_calls": "Nowe wrażenia rozmów grupowych",
"group_developer": "Deweloper",
"group_encryption": "Szyfrowanie",
"group_experimental": "Eksperymentalne",

View File

@ -1419,8 +1419,6 @@
"experimental_description": "Estás a sentir-te experimental? Experimenta as nossas ideias mais recentes em desenvolvimento. Estas funcionalidades não estão finalizadas; podem ser instáveis, podem ser alteradas ou podem ser completamente abandonadas. <a>Sabe mais em</a>.",
"experimental_section": "Pré-visualizações antecipadas",
"extended_profiles_msc_support": "Requer que o teu servidor suporte MSC4133",
"feature_disable_call_per_sender_encryption": "Desativar a cifragem por remetente na Element Call",
"feature_wysiwyg_composer_description": "Utiliza texto rico em vez de Markdown no compositor de mensagens.",
"group_calls": "Nova experiência de chamada de grupo",
"group_developer": "Desenvolvedor",
"group_encryption": "Encriptação",

View File

@ -1527,9 +1527,6 @@
"experimental_description": "Está se sentindo experimental? Experimente nossas últimas ideias em desenvolvimento. Esses recursos não estão finalizados; eles podem ser instáveis, podem mudar ou podem ser descartados completamente.<a> Saiba mais</a> .",
"experimental_section": "Pré-visualizações antecipadas",
"extended_profiles_msc_support": "Requer que seu servidor ofereça suporte ao MSC4133",
"feature_disable_call_per_sender_encryption": "Desativar a criptografia por remetente para Element Call",
"feature_wysiwyg_composer_description": "Use rich text em vez de Markdown no compositor de mensagens.",
"group_calls": "Nova experiência de chamada em grupo",
"group_developer": "Desenvolvedor",
"group_encryption": "Criptografia",
"group_experimental": "Experimental",

View File

@ -1531,7 +1531,6 @@
"experimental_description": "Время экспериментов? Попробуйте наши последние наработки. Эти функции не заверешены; они могут быть нестабильными, постоянно меняющимися, или вовсе отброшенными. <a>Узнайте больше</a>.",
"experimental_section": "Предпросмотр",
"extended_profiles_msc_support": "Требуется, чтобы ваш сервер поддерживал MSC4133",
"feature_disable_call_per_sender_encryption": "Отключить шифрование для каждого отправителя Element Call",
"feature_wysiwyg_composer_description": "Используйте форматированный текст вместо Markdown в редакторе сообщений.",
"group_calls": "Новый опыт группового вызова",
"group_developer": "Разработка",

View File

@ -1543,7 +1543,6 @@
"experimental_description": "Chcete experimentovať? Vyskúšajte naše najnovšie nápady vo vývojovom štádiu. Tieto funkcie nie sú dokončené; môžu byť nestabilné, môžu sa zmeniť alebo môžu byť úplne zrušené. <a>Zistiť viac</a>.",
"experimental_section": "Predbežné ukážky",
"extended_profiles_msc_support": "Vyžaduje, aby váš server podporoval MSC4133",
"feature_disable_call_per_sender_encryption": "Zakázať šifrovanie pre jednotlivých odosielateľov pre Element Call",
"feature_wysiwyg_composer_description": "Použiť rozšírený text namiesto Markdown v správach.",
"group_calls": "Nový zážitok zo skupinových hovorov",
"group_developer": "Vývojárske",

View File

@ -1476,7 +1476,6 @@
"experimental_description": "Känner du dig äventyrlig? Pröva våra senaste idéer under utveckling. Dessa funktioner är inte slutförda; de kan vara instabila, kan ändras, eller kan tas bort helt. <a>Läs mer</a>.",
"experimental_section": "Tidiga förhandstittar",
"extended_profiles_msc_support": "Kräver att din server har stöd för MSC4133",
"feature_disable_call_per_sender_encryption": "Inaktivera kryptering per avsändare för Element Call",
"feature_wysiwyg_composer_description": "Använd rik text istället för Markdown i meddelanderedigeraren.",
"group_calls": "Ny gruppsamtalsupplevelse",
"group_developer": "Utvecklare",

View File

@ -1417,7 +1417,6 @@
"experimental_description": "Deneysel mi hissediyorsunuz? Geliştirme aşamasındaki en son fikirlerimizi deneyin. Bu özellikler nihai değildir; kararsız olabilirler, değişebilirler veya tamamen kaldırılabilirler. <a>Daha fazla bilgi için</a>.",
"experimental_section": "Erken önizlemeler",
"extended_profiles_msc_support": "Sunucunuzun MSC4133 desteklemesini gerektirir",
"feature_disable_call_per_sender_encryption": "Element Call için gönderen başına şifrelemeyi devre dışı bırakın",
"feature_wysiwyg_composer_description": "Mesaj oluşturucu olarak Markdown yerine zengin metin kullanın.",
"group_calls": "Yeni grup görüşmesi deneyimi",
"group_developer": "Geliştirici",

View File

@ -1530,7 +1530,6 @@
"experimental_description": "Відчуваєте себе експериментатором? Спробуйте наші новітні задуми в розробці. Ці функції не остаточні; вони можуть бути нестабільними, можуть змінюватися або взагалі можуть бути відкинуті. <a>Докладніше</a>.",
"experimental_section": "Ранній огляд",
"extended_profiles_msc_support": "Вимагає, щоб ваш сервер підтримував MSC4133",
"feature_disable_call_per_sender_encryption": "Вимкнути шифрування для кожного відправника для Element Call",
"feature_wysiwyg_composer_description": "Використовувати розширений текст замість розмітки в редакторі повідомлень.",
"group_calls": "Нові можливості групових викликів",
"group_developer": "Розробка",

View File

@ -754,7 +754,6 @@ export class ElementCall extends Call {
// Parameters can be found in https://github.com/element-hq/element-call/blob/livekit/src/UrlParams.ts.
const params = new URLSearchParams({
// Template variables are used, so that this can be configured using the widget data.
perParticipantE2EE: "$perParticipantE2EE",
userId: client.getUserId()!,
deviceId: client.getDeviceId()!,
roomId: roomId,
@ -873,26 +872,15 @@ export class ElementCall extends Call {
overwriteData: IWidgetData,
voiceOnly?: boolean,
): IWidgetData {
let perParticipantE2EE = false;
if (
client.getRoom(roomId)?.hasEncryptionStateEvent() &&
!SettingsStore.getValue("feature_disable_call_per_sender_encryption")
)
perParticipantE2EE = true;
const intent = ElementCall.getWidgetIntent(client, roomId, voiceOnly);
return {
...currentData,
...overwriteData,
intent,
perParticipantE2EE,
intent
};
}
private onCallEncryptionSettingsChange(): void {
this.widget.data = ElementCall.getWidgetData(this.client, this.roomId, this.widget.data ?? {}, {});
}
private constructor(
public session: MatrixRTCSession,
@ -903,11 +891,6 @@ export class ElementCall extends Call {
this.session.on(MatrixRTCSessionEvent.MembershipsChanged, this.onMembershipChanged);
this.client.matrixRTC.on(MatrixRTCSessionManagerEvents.SessionEnded, this.checkDestroy);
SettingsStore.watchSetting(
"feature_disable_call_per_sender_encryption",
null,
this.onCallEncryptionSettingsChange.bind(this),
);
this.updateParticipants();
}

View File

@ -222,7 +222,6 @@ export interface Settings {
"feature_simplified_sliding_sync": IFeature;
"feature_element_call_video_rooms": IFeature;
"feature_group_calls": IFeature;
"feature_disable_call_per_sender_encryption": IFeature;
"feature_location_share_live": IFeature;
"feature_dynamic_room_predecessors": IFeature;
"feature_render_reaction_images": IFeature;
@ -644,14 +643,6 @@ export const SETTINGS: Settings = {
controller: new ReloadOnChangeController(),
default: false,
},
"feature_disable_call_per_sender_encryption": {
isFeature: true,
labsGroup: LabGroup.VoiceAndVideo,
supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED,
supportedLevelsAreOrdered: true,
displayName: _td("labs|feature_disable_call_per_sender_encryption"),
default: false,
},
"feature_location_share_live": {
isFeature: true,
labsGroup: LabGroup.Messaging,

View File

@ -33,7 +33,7 @@ describe("<CallGuestLinkButton />", () => {
const targetUnencrypted =
"https://guest_spa_url.com/room/#/!room:server.org?roomId=%21room%3Aserver.org&viaServers=example.org";
const targetEncrypted =
"https://guest_spa_url.com/room/#/!room:server.org?roomId=%21room%3Aserver.org&perParticipantE2EE=true&viaServers=example.org";
"https://guest_spa_url.com/room/#/!room:server.org?roomId=%21room%3Aserver.org&viaServers=example.org";
const expectedShareDialogProps = {
target: targetEncrypted,
customTitle: "Conference invite link",
@ -183,8 +183,6 @@ describe("<CallGuestLinkButton />", () => {
getComponent(room);
const modalSpy = jest.spyOn(Modal, "createDialog");
fireEvent.click(getByLabelText(document.body, _t("voip|get_call_link")));
// const target =
// "https://guest_spa_url.com/room/#/!room:server.org?roomId=%21room%3Aserver.org&perParticipantE2EE=true&viaServers=example.org";
expect(modalSpy).toHaveBeenCalled();
const arg0 = modalSpy.mock.calls[0][0];
const arg1 = modalSpy.mock.calls[0][1] as any;

View File

@ -983,25 +983,6 @@ describe("ElementCall", () => {
call.destroy();
expect(destroyPersistentWidgetSpy).toHaveBeenCalled();
});
it("the perParticipantE2EE url flag is used in encrypted rooms while respecting the feature_disable_call_per_sender_encryption flag", async () => {
// We destroy the call created in beforeEach because we test the call creation process.
call.destroy();
const addWidgetSpy = jest.spyOn(WidgetStore.instance, "addVirtualWidget");
// If a room is not encrypted we will never add the perParticipantE2EE flag.
const roomSpy = jest.spyOn(room, "hasEncryptionStateEvent").mockReturnValue(true);
// should create call with perParticipantE2EE flag
ElementCall.create(room);
expect(Call.get(room)?.widget?.data?.perParticipantE2EE).toBe(true);
// should create call without perParticipantE2EE flag
enabledSettings.add("feature_disable_call_per_sender_encryption");
expect(Call.get(room)?.widget?.data?.perParticipantE2EE).toBe(false);
enabledSettings.delete("feature_disable_call_per_sender_encryption");
roomSpy.mockRestore();
addWidgetSpy.mockRestore();
});
});
describe("instance in a video room", () => {