[M4] Vue unifiée de conversation : fusionner les timelines par merge sort #50

Closed
opened 2026-04-06 01:36:50 +00:00 by charles · 0 comments
Owner

Contexte

Afficher dans une timeline unique et chronologique tous les messages d'un contact unifié, quelle que soit leur source (Telegram, WhatsApp, Matrix natif, etc.).

Critères d'acceptation

  • UnifiedTimeline : contact: UnifiedContact, sources: Vec<RoomTimelineSource>
  • next_batch(count) -> Vec<UnifiedEvent> : merge sort k-way sur les timestamps des sources
  • UnifiedEvent : event: TimelineEvent, bridge_type: BridgeType, room_id: OwnedRoomId
  • Vue accessible depuis la sidebar via un entrée spéciale "Contact unifié"
  • Le scroll de la vue unifiée charge les pages suivantes de toutes les sources
  • Marqueur visuel entre les messages de sources différentes si souhaité

Notes techniques

  • Dépend de : #45 (UnifiedContact + SQLite), #44 (BridgeType)
  • Merge sort k-way avec min-heap (complexité O(N log k))
  • La pagination doit être cohérente : charger par batches de 50 par source
  • Le fetch des timelines utilise l'API matrix-rust-sdk existante
## Contexte Afficher dans une timeline unique et chronologique tous les messages d'un contact unifié, quelle que soit leur source (Telegram, WhatsApp, Matrix natif, etc.). ## Critères d'acceptation - [ ] `UnifiedTimeline` : `contact: UnifiedContact`, `sources: Vec<RoomTimelineSource>` - [ ] `next_batch(count) -> Vec<UnifiedEvent>` : merge sort k-way sur les timestamps des sources - [ ] `UnifiedEvent` : `event: TimelineEvent`, `bridge_type: BridgeType`, `room_id: OwnedRoomId` - [ ] Vue accessible depuis la sidebar via un entrée spéciale "Contact unifié" - [ ] Le scroll de la vue unifiée charge les pages suivantes de toutes les sources - [ ] Marqueur visuel entre les messages de sources différentes si souhaité ## Notes techniques - Dépend de : #45 (UnifiedContact + SQLite), #44 (BridgeType) - Merge sort k-way avec min-heap (complexité O(N log k)) - La pagination doit être cohérente : charger par batches de 50 par source - Le fetch des timelines utilise l'API matrix-rust-sdk existante
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/my-fractal#50
No description provided.