From 5117b104af07cd5dd1ce35b6574f7239578e0935 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Sat, 12 Sep 2026 15:00:01 -0400 Subject: [PATCH 1/3] fix: don't allow calling update-flake-hashes manually Fixes #1862. --- .forgejo/workflows/update-flake-hashes.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.forgejo/workflows/update-flake-hashes.yml b/.forgejo/workflows/update-flake-hashes.yml index 44bf7402b..e572046f1 100644 --- a/.forgejo/workflows/update-flake-hashes.yml +++ b/.forgejo/workflows/update-flake-hashes.yml @@ -1,7 +1,6 @@ name: Update flake hashes on: - workflow_dispatch: pull_request: paths: - "Cargo.lock" From 9bb203abe8b2455a54986166414bae8b014e20d4 Mon Sep 17 00:00:00 2001 From: Erwan Leboucher Date: Sun, 13 Sep 2026 00:53:22 +0200 Subject: [PATCH 2/3] fix(sync): Omit empty room account data from sliding sync responses --- changelog.d/2226.bugfix.md | 1 + src/api/client/sync/v5.rs | 22 ++++++++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 changelog.d/2226.bugfix.md diff --git a/changelog.d/2226.bugfix.md b/changelog.d/2226.bugfix.md new file mode 100644 index 000000000..1407c9f3c --- /dev/null +++ b/changelog.d/2226.bugfix.md @@ -0,0 +1 @@ +Sliding sync responses no longer include an empty room account data entry for every room in a list's range. Contributed by @eleboucher. diff --git a/src/api/client/sync/v5.rs b/src/api/client/sync/v5.rs index 2148f3ece..d169509a6 100644 --- a/src/api/client/sync/v5.rs +++ b/src/api/client/sync/v5.rs @@ -855,15 +855,21 @@ where }; if body.extensions.account_data.enabled == Some(true) { - response.extensions.account_data.rooms.insert( - room_id.to_owned(), - services + let room_account_data: Vec<_> = services + .account_data + .changes_since(Some(room_id), sender_user, Some(*roomsince), Some(next_batch)) + .ready_filter_map(|e| extract_variant!(e, AnyRawAccountDataEvent::Room)) + .collect() + .await; + + // An empty entry makes clients treat the room as updated. + if !room_account_data.is_empty() { + response + .extensions .account_data - .changes_since(Some(room_id), sender_user, Some(*roomsince), Some(next_batch)) - .ready_filter_map(|e| extract_variant!(e, AnyRawAccountDataEvent::Room)) - .collect() - .await, - ); + .rooms + .insert(room_id.to_owned(), room_account_data); + } } let last_privateread_update = services From ac8b17db1b8b9f1a276ac2804d8d2a179fd3462d Mon Sep 17 00:00:00 2001 From: Erwan Leboucher Date: Sun, 13 Sep 2026 19:56:23 +0200 Subject: [PATCH 3/3] fix: Only count non-outlier prev_events in get_missing_events assertion --- .../rooms/event_handler/fetch_and_handle_outliers.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/service/rooms/event_handler/fetch_and_handle_outliers.rs b/src/service/rooms/event_handler/fetch_and_handle_outliers.rs index b4285be37..3813e10db 100644 --- a/src/service/rooms/event_handler/fetch_and_handle_outliers.rs +++ b/src/service/rooms/event_handler/fetch_and_handle_outliers.rs @@ -155,7 +155,12 @@ impl super::Service { .prev_events() .stream() .fold(0_u8, |i, event_id| async move { - if self.services.timeline.pdu_exists(event_id).await { + if self + .services + .timeline + .non_outlier_pdu_exists(event_id) + .await + { i } else { i.expected_add(1)