From 16ebb1fcf72d4e2efd3d91ec5e4254b3e7e55ddf Mon Sep 17 00:00:00 2001 From: Erwan Leboucher Date: Mon, 24 Aug 2026 11:43:18 +0200 Subject: [PATCH] fix(sync): Deliver device list updates for timeline-only rooms --- changelog.d/2175.bugfix | 1 + src/api/client/sync/v5.rs | 10 ++++------ 2 files changed, 5 insertions(+), 6 deletions(-) create mode 100644 changelog.d/2175.bugfix diff --git a/changelog.d/2175.bugfix b/changelog.d/2175.bugfix new file mode 100644 index 000000000..0f4a762c2 --- /dev/null +++ b/changelog.d/2175.bugfix @@ -0,0 +1 @@ +Fixed simplified sliding sync omitting device list updates for rooms with only timeline changes. Contributed by @eleboucher. diff --git a/src/api/client/sync/v5.rs b/src/api/client/sync/v5.rs index 3752af589..8ad9c6cc9 100644 --- a/src/api/client/sync/v5.rs +++ b/src/api/client/sync/v5.rs @@ -1432,12 +1432,10 @@ async fn collect_e2ee<'a, Rooms>( .await .is_ok(); - if let Some(since_shortstatehash) = since_shortstatehash { - // Skip if there are only timeline changes - if since_shortstatehash == current_shortstatehash { - continue; - } - + // Skip the state diff only: `room_keys_changed` below must run for every room. + if let Some(since_shortstatehash) = + since_shortstatehash.filter(|since| *since != current_shortstatehash) + { let since_encryption = services .rooms .state_accessor