feat(collab): Fase 0.5 — WebDAV-async-transport (#989) #995
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!995
Loading…
Reference in a new issue
No description provided.
Delete branch "collab/webdav-async-transport"
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?
Fase 0.5 van COLLABORATION.md (#989): de eerste genetwerkte transportlaag — asynchroon co-auteuren over de Nextcloud/WebDAV die de gebruiker al heeft. Géén nieuwe afhankelijkheid, geen AGPL, geen Rust; de aanbevolen stap terwijl realtime-Matrix geparkeerd staat (#976/#991).
In de korrel van Fase 0 (#988): een puur bouwblok, geen UI.
Wat er landt
collab_codec.dart— de JSON-wire-(de)serialiser die §5.2 vraagt: alle vijfDeckOp-typen (incl. een volledigeSlidevoorInsertSlide),LockEvent, en de getypte veldwaarden. JSON by design, geen Markdown-round-trip (re-parsen zou slide-id's hergenereren, §5.5/P5). Elke decoder fail-closed. Volledigheid geborgd via een test overSlideField.values/DeckMetaField.valuesen een maximale-slide round-trip.webdav_async_transport.dart+collab_log_store.dart—WebdavAsyncTransportachter hetzelfdeCollabTransport-contract als de loopback, dus de sessie-autoriteit stuurt hem ongewijzigd aan. Ops/locks landen als records in een append-only log-sidecar; een poll levert andermans records strikt op volgorde af en stopt bij een gat (past bij de versie-volgorde-apply, §5.3). Twee schrijvers botsen op een voorwaardelijke PUT (If-None-Match: *). Een deelnemer hoort zijn eigen verzending nooit. Geschreven tegen eenCollabLogStore-naad → getest zonder server;WebdavCollabLogStoreis de productiebinding (gedekt via een loopback-WebDAV).collab.dart— module-barrel, zodat de laag bereikbaar is via de bestaandeTabInfo.collabSession-naad.Het
.mdblijft onaangeroerd (P2) — de log is een vergankelijke sidecar. Snapshot-herbaselijning voor late deelnemers (§5.2) en de interface-bedrading (§5.7) blijven vervolg, net als bij #988.Poort:
make checkgroen (7553 tests, dekking 87,4%, per-bestand-vloer gehaald; nieuwe bestanden 95%/100%/91%). Docs bijgewerkt (SOURCE_MAP, CHANGELOG, COLLABORATION.md §10).Sluit #989.