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 %} }