feat(collab): sessie-controller — de tab↔sessie-brug (increment 3b van #996) #1001
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!1001
Loading…
Reference in a new issue
No description provided.
Delete branch "collab/inc3b-session-controller"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Increment 3b van #996: de brug tussen het tab-deck en een samenwerksessie (COLLABORATION.md §5.7).
CollabSessionControllerverbindt de twee richtingen: een lokale bewerking wordt tegen de sessie gediffed (increment 3a) en de ops ingediend; een wijziging die de sessie toepast (de commit van de autoriteit, of een op van een co-auteur op afstand) vloeit terug, gemerged op het lokale deck zodat niet-syncbare velden (tabelrijen, annotaties) behouden blijven — de merge isapplyOps(local, deckDiffToOps(local, session)), die per constructie alleen het syncbare oppervlak raakt.Twee waarborgen stoppen de echo-lus: een
_applyingRemote-vlag onderdrukt her-indienen terwijl een wijziging op afstand wordt weggeschreven, en een terug-geëchood deck levert sowieso een lege diff op, zodat luisteraar-timing niet uitmaakt.Riverpod- en Flutter-vrij (met read/write-callbacks), dus het subtiele deel is headless getest: host↔gast-propagatie beide kanten op, de merge die een lokale tabelbewerking behoudt door een rename op afstand heen, een structurele invoeging, en de echo-guard die geen op toevoegt.
Hiermee is de collab-laag zelf compleet en getest (snapshot, sessie-levenscyclus, editor→op-diff, bidirectionele controller). Resteert (3c): de Riverpod-provider die er per tab één bezit, de per-tab override in
app_shell, en de start/deelnemen-UI — de app-lijm die dit gebruiker-zichtbaar maakt en de draaiende app vereist voor verificatie.make checkgroen (dekking 87,4%, 743 bestanden).