Kontext (aus dem Review zu #145): Cross-Module-Reads öffnen aktuell je eine eigene WebSocket + ein eigenes Y.Doc, ohne Sharing. Ein Modul, das ein fremdes Doc read-only mitliest, bündelt sich nicht mit anderen Konsumenten desselben Docs.
Ist-Zustand (unkritisch beim Zielmaßstab ~10–20 Nutzer):
- Views werden conditional gerendert → nur ein Modul-View gleichzeitig gemountet; beim Wechsel
conn.destroy() (WS zu). Taktische Übersicht und Einsatzabschnitte sind nie gleichzeitig offen.
- Dauerhaft offen:
chat + activity. Pro Moment also ~5 WS (aktiver View + 2), nicht 6.
- Trend: je mehr Module sich gegenseitig lesen, desto mehr parallele WS/Docs pro Client.
Vorschlag (Hardening, Prio niedrig): refcounted Shared-Provider-Pool in packages/web/src/sync/provider.ts, keyed nach room×module:
- N Komponenten, die dasselbe
(room, module) verbinden, teilen sich eine WS + ein Y.Doc.
- Refcount hoch beim
connectModule, runter beim destroy; realer provider.destroy()/doc.destroy() erst beim letzten Release.
- Aufrufer-API bleibt unverändert (
connectModule(...) gibt weiter { doc, provider, destroy } zurück).
Nicht Teil von Milestone #3 — künftiger Härtungs-/Ausbau-Milestone. Kein akuter Handlungsbedarf; hier festgehalten, damit es nicht verloren geht.
Kontext (aus dem Review zu #145): Cross-Module-Reads öffnen aktuell je eine eigene WebSocket + ein eigenes
Y.Doc, ohne Sharing. Ein Modul, das ein fremdes Doc read-only mitliest, bündelt sich nicht mit anderen Konsumenten desselben Docs.Ist-Zustand (unkritisch beim Zielmaßstab ~10–20 Nutzer):
conn.destroy()(WS zu). Taktische Übersicht und Einsatzabschnitte sind nie gleichzeitig offen.chat+activity. Pro Moment also ~5 WS (aktiver View + 2), nicht 6.Vorschlag (Hardening, Prio niedrig): refcounted Shared-Provider-Pool in
packages/web/src/sync/provider.ts, keyed nachroom×module:(room, module)verbinden, teilen sich eine WS + einY.Doc.connectModule, runter beimdestroy; realerprovider.destroy()/doc.destroy()erst beim letzten Release.connectModule(...)gibt weiter{ doc, provider, destroy }zurück).Nicht Teil von Milestone #3 — künftiger Härtungs-/Ausbau-Milestone. Kein akuter Handlungsbedarf; hier festgehalten, damit es nicht verloren geht.