From 4b190b71dc02a9e3acd3340fe41919071cc752f5 Mon Sep 17 00:00:00 2001 From: Andy Balaam Date: Wed, 6 Aug 2025 15:33:55 +0100 Subject: [PATCH 1/3] Clarify that clients should replace events with the most recent replacement by origin_server_ts Signed-off-by: Andy Balaam --- changelogs/internal/newsfragments/2190.clarification | 1 + content/client-server-api/modules/event_replacements.md | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 changelogs/internal/newsfragments/2190.clarification diff --git a/changelogs/internal/newsfragments/2190.clarification b/changelogs/internal/newsfragments/2190.clarification new file mode 100644 index 00000000..019ac021 --- /dev/null +++ b/changelogs/internal/newsfragments/2190.clarification @@ -0,0 +1 @@ +Clarify that clients should replace events with the most recent replacement by origin_server_ts. diff --git a/content/client-server-api/modules/event_replacements.md b/content/client-server-api/modules/event_replacements.md index c4563a88..bce7e9fc 100644 --- a/content/client-server-api/modules/event_replacements.md +++ b/content/client-server-api/modules/event_replacements.md @@ -268,6 +268,11 @@ Client authors are reminded to take note of the requirements for [Validity of replacement events](#validity-of-replacement-events), and to ignore any invalid replacement events that are received. +Clients should render the content of the **most recent** replacement event. The +most recent event is determined by comparing `origin_server_ts`; if two or more +replacement events have identical `origin_server_ts`, the event with the +lexicographically largest `event_id` is treated as more recent. + ##### Permalinks When creating [links](/appendices/#uris) to events (also known as permalinks), From 158106279f15255750c1488a2dedb36cc900fd62 Mon Sep 17 00:00:00 2001 From: Andy Balaam Date: Wed, 6 Aug 2025 15:44:50 +0100 Subject: [PATCH 2/3] Ensure it is clear that themost recent **valid** replacement should be used Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> --- content/client-server-api/modules/event_replacements.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/client-server-api/modules/event_replacements.md b/content/client-server-api/modules/event_replacements.md index bce7e9fc..2e36e40e 100644 --- a/content/client-server-api/modules/event_replacements.md +++ b/content/client-server-api/modules/event_replacements.md @@ -268,7 +268,7 @@ Client authors are reminded to take note of the requirements for [Validity of replacement events](#validity-of-replacement-events), and to ignore any invalid replacement events that are received. -Clients should render the content of the **most recent** replacement event. The +Clients should render the content of the **most recent** valid replacement event. The most recent event is determined by comparing `origin_server_ts`; if two or more replacement events have identical `origin_server_ts`, the event with the lexicographically largest `event_id` is treated as more recent. From 3acc7380e6d69e67d69b7f81624d4e8e3650ed9c Mon Sep 17 00:00:00 2001 From: Andy Balaam Date: Wed, 6 Aug 2025 15:45:44 +0100 Subject: [PATCH 3/3] Clarify that the server should also only consider **valid** replacements --- content/client-server-api/modules/event_replacements.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/client-server-api/modules/event_replacements.md b/content/client-server-api/modules/event_replacements.md index 2e36e40e..e42dacf8 100644 --- a/content/client-server-api/modules/event_replacements.md +++ b/content/client-server-api/modules/event_replacements.md @@ -195,7 +195,7 @@ given event (for example, if an event is edited multiple times). These should be [aggregated](#aggregations-of-child-events) by the homeserver. The aggregation format of `m.replace` relationships gives the **most recent** -replacement event, formatted [as normal](#room-event-format). +valid replacement event, formatted [as normal](#room-event-format). The most recent event is determined by comparing `origin_server_ts`; if two or more replacement events have identical `origin_server_ts`, the event with the