feat(collab): sessie-levenscyclus host/join (increment 2 van #996) #999

Merged
brenno merged 1 commit from collab/inc2-session-bootstrap into main 2026-07-30 17:07:48 +00:00
Owner

Increment 2 van #996: de sessie-levenscyclus die de Fase 0.5-bouwstenen aan elkaar knoopt (COLLABORATION.md §6.5), bovenop increment 1 (#997).

collab_session_launch.dart:

  • hostCollabSession — schrijft de baseline die anderen bijkomen, wordt de autoriteit, begint te pollen.
  • joinCollabSession — leest de baseline, rebaset het lokaal geopende deck op de slides van de autoriteit (neemt hun id's over zodat ops kloppen, §5.5), haalt de gemiste ops in, pollt verder. Gooit als er nog geen host een baseline plaatste.

Store-generiek, dus end-to-end getest over de in-memory store (host↔join, id-overname, inhaalslag, gast-bewerking round-trip) en in productie over WebDAV; er komt hier geen netwerk aan te pas.

v1 houdt de host de hele sessie de autoriteit; eigenaarsoverdracht (§5.3) en herbaselijning op een niet-nul versie (§5.2) zijn vervolg. Resteert (increment 3): de provider-/UI-bedrading (§5.7) en de editor→op-adapter die een deck-brede bewerking naar de veld-ops vertaalt die de sessie indient.

make check groen (7559 tests, dekking 87,4%). Docs bijgewerkt (SOURCE_MAP, CHANGELOG, COLLABORATION.md §10). Gerebased op de laatste main.

Increment 2 van #996: de sessie-levenscyclus die de Fase 0.5-bouwstenen aan elkaar knoopt (COLLABORATION.md §6.5), bovenop increment 1 (#997). `collab_session_launch.dart`: - `hostCollabSession` — schrijft de baseline die anderen bijkomen, wordt de autoriteit, begint te pollen. - `joinCollabSession` — leest de baseline, rebaset het lokaal geopende deck op de slides van de autoriteit (neemt hun id's over zodat ops kloppen, §5.5), haalt de gemiste ops in, pollt verder. Gooit als er nog geen host een baseline plaatste. Store-generiek, dus end-to-end getest over de in-memory store (host↔join, id-overname, inhaalslag, gast-bewerking round-trip) en in productie over WebDAV; er komt hier geen netwerk aan te pas. v1 houdt de host de hele sessie de autoriteit; eigenaarsoverdracht (§5.3) en herbaselijning op een niet-nul versie (§5.2) zijn vervolg. **Resteert (increment 3):** de provider-/UI-bedrading (§5.7) en de editor→op-adapter die een deck-brede bewerking naar de veld-ops vertaalt die de sessie indient. `make check` groen (7559 tests, dekking 87,4%). Docs bijgewerkt (SOURCE_MAP, CHANGELOG, COLLABORATION.md §10). Gerebased op de laatste main.
feat(collab): host/join session lifecycle over the async transport (#996)
All checks were successful
scans / scans (pull_request) Successful in 3m32s
e27e257673
The seam that ties the Fase 0.5 building blocks into a usable session
(COLLABORATION.md §6.5). hostCollabSession posts the baseline, becomes
the authority and starts polling; joinCollabSession reads the baseline,
rebases the local deck onto the authority's slides (adopting their ids so
ops key correctly, §5.5), catches up on ops and polls. Store-generic, so
it runs end-to-end over the in-memory store in tests and WebDAV in
production — nothing here touches a network.

v1 keeps the host as authority for the whole session; owner-drop handover
(§5.3) and non-zero re-baselining (§5.2) are follow-ups. Increment 2 of
#996; the provider/UI wiring and the editor->op adapter (§5.7) remain.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit 5349d2ab8b into main 2026-07-30 17:07:48 +00:00
Sign in to join this conversation.
No description provided.