mirror of
https://github.com/element-hq/synapse.git
synced 2026-11-04 13:28:04 +00:00
Phase 4 of the sync-in-Rust plan. `SyncHandler.room_changes` ports `_get_room_changes_for_incremental_sync` and `_get_room_changes_for_initial_sync`: which rooms the response reports, and which the user joined or left since the last sync. It fetches the timelines of the joined rooms itself, as `get_room_events_stream_for_rooms` does. `SyncHandler.generate_room_entries` then computes every joined and archived room's entry, ten at a time. A room it cannot compute, or fails on, comes back in the result for Python to compute. A panic in a room is that room's error, so it cannot fail the rooms that have recorded their lazy-loaded members. The `state_after` rollback now reads the state deltas with no upper bound, after the current state, so that it covers every change the current state may hold. These replace the per-room `generate_room_entry` and `RoomSyncInput`. The store gains `event_position`, for the leave events of archived rooms. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R5b7Ruy4cgt27Mjq6Ptxbb