Compare commits

...

4 commits

Author SHA1 Message Date
Kévin Commaille 4a79ee1086
Merge 3c17aa3789 into f6d5009959 2025-08-08 11:04:02 -06:00
Andy Balaam f6d5009959
Clarify that clients should replace events with the most recent replacement by origin_server_ts (#2190)
Some checks failed
Spec / 🔎 Validate OpenAPI specifications (push) Has been cancelled
Spec / 🔎 Check Event schema examples (push) Has been cancelled
Spec / 🔎 Check OpenAPI definitions examples (push) Has been cancelled
Spec / 🔎 Check JSON Schemas inline examples (push) Has been cancelled
Spec / ⚙️ Calculate baseURL for later jobs (push) Has been cancelled
Spec / 📢 Run towncrier for changelog (push) Has been cancelled
Spell Check / Spell Check with Typos (push) Has been cancelled
Spec / 🐍 Build OpenAPI definitions (push) Has been cancelled
Spec / 📖 Build the spec (push) Has been cancelled
Spec / 🔎 Validate generated HTML (push) Has been cancelled
Spec / 📖 Build the historical backup spec (push) Has been cancelled
Signed-off-by: Andy Balaam <andy.balaam@matrix.org>
2025-08-07 11:45:19 +01:00
Kévin Commaille 3c17aa3789
Add changelog
Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2025-07-25 10:44:39 +02:00
Kévin Commaille 506bc1a164
Clarify that stripped state in /sync response must include m.room.member event of user
And that event has the same format as in join rooms, with `event_id` and
`origin_server_ts`.

This has always been the case in homeserver implementations.

Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
2025-07-25 09:56:33 +02:00
4 changed files with 27 additions and 3 deletions

View file

@ -0,0 +1,2 @@
Clarify that the stripped state in `invite_state` and `knock_state` in `GET /sync` response must
include the full `m.room.member` event of the user.

View file

@ -0,0 +1 @@
Clarify that clients should replace events with the most recent replacement by origin_server_ts.

View file

@ -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
@ -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** 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.
##### Permalinks
When creating [links](/appendices/#uris) to events (also known as permalinks),

View file

@ -369,8 +369,14 @@ paths:
description: |-
The [stripped state events](/client-server-api/#stripped-state) that form the
invite state.
MUST also include the `m.room.member` event of the user with a membership of
`invite`, and using the same event format as joined rooms with the `event_id`
and `origin_server_ts` fields.
items:
$ref: ../../event-schemas/schema/core-event-schema/stripped_state.yaml
anyOf:
- $ref: ../../event-schemas/schema/core-event-schema/stripped_state.yaml
- $ref: definitions/client_event_without_room_id.yaml
type: array
knock:
title: Knocked rooms
@ -394,8 +400,14 @@ paths:
description: |-
The [stripped state events](/client-server-api/#stripped-state) that form the
knock state.
MUST also include the `m.room.member` event of the user with a membership of
`knock`, and using the same event format as joined rooms with the `event_id` and
`origin_server_ts` fields.
items:
$ref: ../../event-schemas/schema/core-event-schema/stripped_state.yaml
anyOf:
- $ref: ../../event-schemas/schema/core-event-schema/stripped_state.yaml
- $ref: definitions/client_event_without_room_id.yaml
type: array
leave:
title: Left rooms
@ -628,6 +640,8 @@ paths:
"sender": "@alice:example.com",
"type": "m.room.member",
"state_key": "@bob:example.com",
"event_id": "$19dl9d3848dJLle:example.com",
"origin_server_ts": 1432735439654,
"content": {
"membership": "invite"
}
@ -652,6 +666,8 @@ paths:
"sender": "@bob:example.com",
"type": "m.room.member",
"state_key": "@bob:example.com",
"event_id": "$Fg83Kl3764di23a:example.com",
"origin_server_ts": 143273039402,
"content": {
"membership": "knock"
}