Doc the sdk-event-bus amendments (WsState + 26 tests, live-tested)

This commit is contained in:
Anthony
2026-05-28 13:43:34 +02:00
parent c9ea7c655f
commit e6a2901b1d
+8 -5
View File
@@ -23,7 +23,7 @@ branch = one commit, rebasable on `upstream/master`.
| `sdk-2fa-session` | Interactive 2FA: `initiate_session`, `authenticate_with_second_factor_totp`, `is_second_factor_pending`, `cancel_create_session` | [tutao#10871](https://github.com/tutao/tutanota/pull/10871) | — | yes (open) | no | yes (full TOTP login) |
| `sdk-folder-system` | Rebuild `FolderSystem` tree (system/custom/nested), add `MailSetKind` Label/Imported/Scheduled + accessors | — | [spartanz51#4](https://github.com/spartanz51/tutanota/pull/4) | no (held) | no | yes (custom folders listed + read over IMAP) |
| `sdk-move-mails` | `MailFacade.move_mails` (move to an arbitrary folder via `MoveMailService`) | — | [spartanz51#5](https://github.com/spartanz51/tutanota/pull/5) | no (held) | no | yes (IMAP MOVE between folders) |
| `sdk-event-bus` | WebSocket `EventBusClient` (`/event?…`) — realtime entity updates with catch-up via `groupsToLastEventBatchIds` | — | — | no (held) | no | not yet (24 unit tests, bridge integration is Phase 2) |
| `sdk-event-bus` | WebSocket `EventBusClient` (`/event?…`) — realtime entity updates with catch-up via `groupsToLastEventBatchIds`, plus observable `WsState` | — | — | no (held) | no | yes (live-tested over Phase 2/3 bridge integration, 26 unit tests) |
## Notes per branch
@@ -57,10 +57,13 @@ batches via the `groupsToLastEventBatchIds` query param. Entity-update batches
are decoded from the server's untyped wire format into a small typed
`EntityUpdateBatch` (the other message kinds stay as raw `serde_json::Value`
since the bridge does not need them yet — consumers can apply the SDK's type
machinery if they want a typed view). New dependency: `tokio-tungstenite`
configured to reuse the existing rustls stack; gated behind the existing `net`
feature. 24 unit tests cover URL building, wire parsing and reconnect logic.
Submit upstream only after a working bridge integration (Phase 2).
machinery if they want a typed view). Exposes a `WsState`
(`Stopped`/`Connecting`/`Connected`/`Reconnecting`) via `state() ->
watch::Receiver<_>` so UIs can render the connection lifecycle live. New
dependency: `tokio-tungstenite` configured to reuse the existing rustls
stack; gated behind the existing `net` feature. 26 unit tests cover URL
building, wire parsing, reconnect logic and state-broadcast behaviour.
Live-tested as part of the bridge realtime sync (Phase 2/3).
## Rebasing on a newer upstream