From acc6dd136c898a7e25ba43443f64b033fbcc55c6 Mon Sep 17 00:00:00 2001 From: Paul Chobert Date: Wed, 28 Oct 2026 10:42:18 +0100 Subject: [PATCH] Explain why announcement rooms always carry full state --- synapse/handlers/sync.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/synapse/handlers/sync.py b/synapse/handlers/sync.py index 4a9e004333..7f0e876cf1 100644 --- a/synapse/handlers/sync.py +++ b/synapse/handlers/sync.py @@ -3345,6 +3345,13 @@ class SyncHandler: that the client replaces the user's real membership with the synthetic join and gets the room's current state. + Every entry carries the room's full state rather than the changes since + the `since_token`. The client may never have received the room before, + and a room is not sent for windows that only change its state, so the + client's copy of the state dates from the last time the room was sent, + not from the `since_token`. Changes since the `since_token` would miss + any name, topic, avatar or power level changes made in between. + Args: sync_result_builder room_ids: The announcement rooms to consider.