collab-core
collab-core — base infrastructure for real-time collaboration in TYPO3. Core of the Collab Suite (collab-core, collab-presence, collab-rte, hocuspocus).
collab-rte extends the TYPO3 RTE with collaborative editing: multiple editors in the same document, CRDT-based sync, cursor display and conflict-free merging. Coming soon — content and API documentation will follow once the package is cleared for public release.
collab-rte registers itself as a CKEditor 5 plugin in every backend RTE that uses the typo3-rte-ckeditor-ckeditor5 web component. The plugin reads the collab configuration from the CKEditor config object (token, docId, display name, colour), which collab-core::ProvideCollabTokenListener injects, initialises a Yjs doc plus Hocuspocus provider and synchronises HTML content bidirectionally between the Yjs text type and CKEditor.
Sync runs on HTML level, not on the CKEditor model-operation level. Structural integrity is preserved, character-level merge precision is limited — an intentional trade-off in favour of Yjs/CKEditor decoupling.
The plugin emits collab:connected, collab:disconnected and collab:auth-failed.
| File | Purpose |
|---|---|
Resources/Private/TypeScript/CollabPlugin.ts | Main plugin: Yjs↔CKEditor binding, Hocuspocus provider |
Resources/Private/TypeScript/StatusBadge.ts | Live status indicator (connected, disconnected, auth-failed) |
Resources/Public/Css/status-badge.css | Styling for the connection-status badge |
Configuration/JavaScriptModules.php | TYPO3-14 JS module registration |
Configuration/RTE/Collab.yaml | RTE preset that activates the collab plugin in the CKEditor configuration |
columns:
bodytext:
config:
richtextConfiguration: collab
typo3/cms-rte-ckeditor: ^14.0moselwal/collab-corecollab_rte, namespace Moselwal\CollabRte, GPL-2.0-or-laterPilot collaborative RTE editing early?
If you want to test collab-rte early in a TYPO3 editorial setup or validate the CRDT sync API against your editor configuration, get in touch via the contact form.
Or email us directly: kontakt@moselwal.de