From 421b5926908c999da79a252ff625ef0cb3c22d6a Mon Sep 17 00:00:00 2001 From: Slavi Pantaleev Date: Wed, 19 Aug 2026 13:17:38 +0300 Subject: [PATCH] Stop advertising MatrixRTC transports in the client well-known The org.matrix.msc4143.rtc_foci property has been dropped from MSC4143 and Element Call v0.24.0 no longer reads it, so the homeserver's own RTC transports API is left as the single source of truth. Synapse, continuwuity and tuwunel all serve it at the unstable path which clients request. Keeping both around also made Element Web list the same LiveKit transport twice, as it merges the two sources without deduplicating them. Co-Authored-By: Claude Opus 5 (1M context) --- CHANGELOG.md | 24 +++++++++++++++++++ docs/configuring-playbook-jwt-service.md | 2 +- group_vars/matrix_servers | 8 ------- .../matrix-static-files/defaults/main.yml | 10 -------- .../tasks/validate_config.yml | 5 ++++ .../public/.well-known/matrix/client.j2 | 4 ---- 6 files changed, 30 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 74e4a1dd1..e7aa393fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,27 @@ +# 2026-08-19 + +## MatrixRTC transports are no longer advertised in the client well-known + +This only affects you if you have the [Matrix RTC stack](docs/configuring-playbook-matrix-rtc.md) or [Element Call](docs/configuring-playbook-element-call.md) enabled. + +Your MatrixRTC transport (the URL of your [LiveKit JWT Service](docs/configuring-playbook-livekit-jwt-service.md)) used to be advertised in two places: the `org.matrix.msc4143.rtc_foci` property of the `/.well-known/matrix/client` file, and the homeserver's own `/_matrix/client/unstable/org.matrix.msc4143/rtc/transports` API ([MSC4143](https://github.com/matrix-org/matrix-spec-proposals/pull/4143)). + +The well-known property has since been dropped from the spec proposal and [Element Call v0.24.0](https://github.com/element-hq/element-call/releases/tag/v0.24.0) has stopped reading it, so the playbook stops publishing it as well. The homeserver API is now the single source of truth. Every homeserver that the playbook can point at a MatrixRTC stack (Synapse, continuwuity and tuwunel) already announces your transport there, so calls keep working. + +If your configuration defines `matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_custom` or one of its companion variables, the playbook will tell you about it. Should you wish to keep publishing the property regardless, you can do so yourself: + +```yaml +matrix_static_files_file_matrix_client_configuration_extension_json: | + { + "org.matrix.msc4143.rtc_foci": [ + { + "type": "livekit", + "livekit_service_url": "https://matrix.example.com/livekit-jwt-service" + } + ] + } +``` + # 2026-08-13 ## The homeserver root path redirects to clients other than Element Web diff --git a/docs/configuring-playbook-jwt-service.md b/docs/configuring-playbook-jwt-service.md index 22fe30e8f..92eb5e3ce 100644 --- a/docs/configuring-playbook-jwt-service.md +++ b/docs/configuring-playbook-jwt-service.md @@ -40,7 +40,7 @@ After configuring the playbook and potentially [adjusting your DNS records](#adj ## Usage -Once installed, a new `org.matrix.msc4143.rtc_foci` section is added to the Element Web client to point to your JWT service URL (e.g., `https://matrix.example.com/livekit-jwt-service`). +Once installed, the homeserver announces your JWT service URL (e.g., `https://matrix.example.com/livekit-jwt-service`) as a MatrixRTC transport over its `/_matrix/client/unstable/org.matrix.msc4143/rtc/transports` API, which is where Matrix clients discover it. ## Additional Information diff --git a/group_vars/matrix_servers b/group_vars/matrix_servers index c453266c5..441f25d2f 100755 --- a/group_vars/matrix_servers +++ b/group_vars/matrix_servers @@ -6286,14 +6286,6 @@ matrix_static_files_file_matrix_client_property_m_tile_server_map_style_url: "{{ # We set this regardless of whether Ketesa is enabled, because people may wish to use a hosted (externally) Ketesa installation and still have it auto-configured. matrix_static_files_file_matrix_client_property_cc_etke_ketesa_auto: "{{ matrix_ketesa_configuration if matrix_homeserver_implementation == 'synapse' else {} }}" -matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_enabled: "{{ matrix_livekit_jwt_service_enabled }}" -matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_auto: |- - {{ - ( - [{'type': 'livekit', 'livekit_service_url': matrix_livekit_jwt_service_public_url}] if matrix_livekit_jwt_service_enabled else [] - ) - }} - # Advertise all enabled and exposed mautrix bridges for auto-discovery by tools like Mautrix Manager. # A bridge's public address is only reachable when the playbook attaches its Traefik labels and emits the exposure router, # so we gate on these in addition to the bridge being enabled. diff --git a/roles/custom/matrix-static-files/defaults/main.yml b/roles/custom/matrix-static-files/defaults/main.yml index 1578b0bd6..9e057de27 100644 --- a/roles/custom/matrix-static-files/defaults/main.yml +++ b/roles/custom/matrix-static-files/defaults/main.yml @@ -201,16 +201,6 @@ matrix_static_files_file_matrix_client_property_cc_etke_ketesa_auto: {} matrix_static_files_file_matrix_client_property_cc_etke_ketesa_custom: {} -# Controls whether `org.matrix.msc4143.rtc_foci`-related entries should be added to the client well-known. -# By default, if there are entries in `matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci`, we show them (by enabling this). -matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_enabled: "{{ matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci | default({}) | dict2items | length > 0 }}" - -# Controls the org.matrix.msc4143.rtc_foci property in the /.well-known/matrix/client file. -# See `matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_enabled` -matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci: "{{ matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_auto + matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_custom }}" -matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_auto: [] -matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_custom: [] - # Default /.well-known/matrix/client configuration template which covers the generic use case. # You can customize it by controlling the various variables inside it. # diff --git a/roles/custom/matrix-static-files/tasks/validate_config.yml b/roles/custom/matrix-static-files/tasks/validate_config.yml index 889fb1a31..1cd029505 100644 --- a/roles/custom/matrix-static-files/tasks/validate_config.yml +++ b/roles/custom/matrix-static-files/tasks/validate_config.yml @@ -28,3 +28,8 @@ when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0" with_items: - {'old': 'matrix_static_files_container_image_force_pull', 'new': ' (the new community.docker.docker_image_pull module handles this natively)'} + + - {'old': 'matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_enabled', 'new': ' (the client well-known no longer advertises MatrixRTC transports; the homeserver announces them over its /_matrix/client/unstable/org.matrix.msc4143/rtc/transports API)'} + - {'old': 'matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci', 'new': ' (the client well-known no longer advertises MatrixRTC transports; the homeserver announces them over its /_matrix/client/unstable/org.matrix.msc4143/rtc/transports API)'} + - {'old': 'matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_auto', 'new': ' (the client well-known no longer advertises MatrixRTC transports; the homeserver announces them over its /_matrix/client/unstable/org.matrix.msc4143/rtc/transports API)'} + - {'old': 'matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_custom', 'new': ' (the client well-known no longer advertises MatrixRTC transports; the homeserver announces them over its /_matrix/client/unstable/org.matrix.msc4143/rtc/transports API)'} diff --git a/roles/custom/matrix-static-files/templates/public/.well-known/matrix/client.j2 b/roles/custom/matrix-static-files/templates/public/.well-known/matrix/client.j2 index 75fbff472..d0176b57a 100644 --- a/roles/custom/matrix-static-files/templates/public/.well-known/matrix/client.j2 +++ b/roles/custom/matrix-static-files/templates/public/.well-known/matrix/client.j2 @@ -55,8 +55,4 @@ {% if matrix_static_files_file_matrix_client_property_cc_etke_ketesa_enabled %}, "cc.etke.ketesa": {{ matrix_static_files_file_matrix_client_property_cc_etke_ketesa | to_json }} {% endif %} - - {% if matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_enabled %}, - "org.matrix.msc4143.rtc_foci": {{ matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci | to_json }} - {% endif %} }