feat(collab): live Matrix-sessieprovider — host/join over de relay #1036

Merged
brenno merged 1 commit from feat/matrix-collab-provider into main 2026-07-31 22:54:37 +00:00
Owner

Bedraadt de Matrix-datalaag (§6) door tot een tabblad: de connective tissue tussen het app-globale Matrix-account (#1034) en de komende host/join-UI (PR-3b). Alles headless getoetst tegen de fake-homeserver — nog geen zichtbaar scherm.

Wat

  • matrix_client_provider.dartmatrixClientProvider bouwt de app-globale MatrixClient uit het account + access-token uit de keychain over de platform-transport (SSRF-gepind / browser); null zonder account of token. matrixAccountProvider is de dunne lees-over-settingsProvider die provider én test overschrijfbaar houdt (SharedPreferences is een proces-singleton). buildMatrixClient is de socket-vrije, transport-injecteerbare bouwer.
  • secret_store_provider.dartsecretStoreProvider: de SecretStore als provider, zodat de sessieprovider zijn apparaatsleutels onder test met een nep-sleutelbos laadt.
  • collab_session_provider.darthostMatrix/joinMatrix: een verse versleutelde room (host → deelbare inviteLink op de state) of join via die link. Host meteen actief; guest connecting → actief zodra de baseline over de sync-lus arriveert (_finishMatrix, met time-out). Geen WebDAV-bron nodig; deelt _attachController met het WebDAV-pad; geen handover (P-E). Opruimen via het bestaande idempotente _teardown.

Toetsing

  • buildMatrixClient (+config-fout), matrixClientProvider (geen account), host actief + link, guest joint de link en wordt actief (deterministisch via debugMatrixSyncNow), foutsleutels bad-invite / no-matrix-account.
  • make check groen: 7763 tests, dekking 87,4%, per-bestandsvloer 0 onder. (De suite kent gedocumenteerde load-gevoelige widget-layout-flakes die geïsoleerd/serieel slagen; de groene run draaide bij lage machinelast.)
  • SOURCE_MAP bijgewerkt met de twee providers + de Matrix-tak.

Onderdeel van de verticale plak voor #977 (self-encrypted relay, pure Dart). Volgende stap PR-3b: de schermen (in-app register/login, apparaatverificatie, start/deel/join) + l10n ×31.

Bedraadt de Matrix-datalaag (§6) door tot een tabblad: de connective tissue tussen het app-globale Matrix-account ([#1034](https://pawprint.vigilis.online/LibreKAT/Ocideck/pulls/1034)) en de komende host/join-UI (PR-3b). Alles headless getoetst tegen de fake-homeserver — nog geen zichtbaar scherm. ## Wat - **`matrix_client_provider.dart`** — `matrixClientProvider` bouwt de app-globale `MatrixClient` uit het account + access-token uit de keychain over de platform-transport (SSRF-gepind / browser); `null` zonder account of token. `matrixAccountProvider` is de dunne lees-over-`settingsProvider` die provider én test overschrijfbaar houdt (SharedPreferences is een proces-singleton). `buildMatrixClient` is de socket-vrije, transport-injecteerbare bouwer. - **`secret_store_provider.dart`** — `secretStoreProvider`: de `SecretStore` als provider, zodat de sessieprovider zijn apparaatsleutels onder test met een nep-sleutelbos laadt. - **`collab_session_provider.dart`** — `hostMatrix`/`joinMatrix`: een verse versleutelde room (host → deelbare `inviteLink` op de state) of join via die link. Host meteen actief; guest `connecting` → actief zodra de baseline over de sync-lus arriveert (`_finishMatrix`, met time-out). Geen WebDAV-bron nodig; deelt `_attachController` met het WebDAV-pad; geen handover (P-E). Opruimen via het bestaande idempotente `_teardown`. ## Toetsing - `buildMatrixClient` (+config-fout), `matrixClientProvider` (geen account), host actief + link, guest joint de link en wordt actief (deterministisch via `debugMatrixSyncNow`), foutsleutels `bad-invite` / `no-matrix-account`. - `make check` groen: 7763 tests, dekking 87,4%, per-bestandsvloer 0 onder. (De suite kent gedocumenteerde load-gevoelige widget-layout-flakes die geïsoleerd/serieel slagen; de groene run draaide bij lage machinelast.) - SOURCE_MAP bijgewerkt met de twee providers + de Matrix-tak. Onderdeel van de verticale plak voor #977 (self-encrypted relay, pure Dart). Volgende stap PR-3b: de schermen (in-app register/login, apparaatverificatie, start/deel/join) + l10n ×31.
feat(collab): live Matrix-sessieprovider — host/join over de relay
All checks were successful
scans / scans (pull_request) Successful in 3m35s
8a7bd96faa
Bedraadt de Matrix-datalaag (§6) door tot een tabblad: de connective tissue
tussen het app-globale account (PR-2b) en de komende host/join-UI (PR-3b),
headless getoetst tegen de fake-homeserver.

- `matrixClientProvider` bouwt de app-globale `MatrixClient` uit het account +
  keychain-token over de platform-transport; `matrixAccountProvider` is de dunne
  lees-over-settings die provider én test overschrijfbaar houdt (SharedPreferences
  is een proces-singleton); `buildMatrixClient` is de socket-vrije, transport-
  injecteerbare bouwer.
- `secretStoreProvider`: de `SecretStore` als provider, zodat de sessieprovider
  zijn apparaatsleutels onder test kan laden met een nep-sleutelbos.
- `CollabSessionNotifier.hostMatrix`/`joinMatrix`: een verse versleutelde room
  (host, deelbare `inviteLink` op de state) of een join via die link. Host is
  meteen actief; een guest gaat naar `connecting` en wordt actief zodra de
  baseline over de sync-lus binnenkomt (`_finishMatrix`, met time-out). Geen
  WebDAV-bron nodig; deelt `_attachController` met het WebDAV-pad, geen handover
  (dat is P-E). Netjes opgeruimd via het bestaande `_teardown` (idempotent).

- Tests: buildMatrixClient (+config-fout), matrixClientProvider (geen account),
  host actief + link, guest joint de link en wordt actief (deterministisch
  gedreven via `debugMatrixSyncNow`), foutsleutels bad-invite/no-matrix-account.
- SOURCE_MAP bijgewerkt met de twee nieuwe providers + de Matrix-tak.

Onderdeel van de verticale plak voor #977 (self-encrypted relay, pure Dart).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit ed13e2dcd1 into main 2026-07-31 22:54:37 +00:00
brenno deleted branch feat/matrix-collab-provider 2026-07-31 22:54:37 +00:00
Sign in to join this conversation.
No description provided.