collab-rte — edit together in the RTE, without merge conflicts.
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.
What it does
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 strategy
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.
DOM events
The plugin emits collab:connected, collab:disconnected and collab:auth-failed.
Components
| 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 |
Assigning the RTE preset
columns:
bodytext:
config:
richtextConfiguration: collab
Requirements
- TYPO3 14.x, PHP 8.3+
typo3/cms-rte-ckeditor: ^14.0moselwal/collab-core- Extension key
collab_rte, namespaceMoselwal\CollabRte, GPL-2.0-or-later
Pilot 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