[Plugin] Redmine Realtime Editor: Google-Docs style co-editing of issues and wiki, no websocket server
Added by Julian Perelli about 1 month ago
Hi all,
I just published Redmine Realtime Editor (MIT), a plugin that lets several people edit the same issue or wiki page at the same time, Google-Docs style: you see the other editors' text appear as they type, their carets and selections with their name, and the other fields of the issue form (status, assignee, dates, custom fields...) flip in your browser with a "changed by ..." mark.

The idea came from redmine_yjs, which does this with a separate Node/websocket server. The difference here is the transport: there is nothing to deploy besides the plugin. The browsers synchronize through Redmine itself over plain HTTP polling (1 s while somebody else is editing, optional long polling), so it works behind any reverse proxy, on shared hosts and wherever you cannot open ports or run extra daemons. It uses Yjs (CRDT) in the browser; the server only authorizes with Redmine's own permission checks, then stores and relays opaque updates.
Highlights:
- issue description, comments, journal edits and wiki pages (incl. sections) as shared text; every other field of the issue edit form shared too
- Redmine's own textarea, toolbar, preview and attachments stay in place; remote carets are drawn over it
- saving from a co-edited form does not hit the "updated by another user" conflict for the other editors; changes made elsewhere still do
- new comments private by default (presence only) or shared
- no new permissions, no cron, no background job, three small tables; Node.js not needed to install
- tested in CI on Redmine 5.1, 6.0, 6.1 and 7.0
Plugin directory entry: https://www.redmine.org/plugins/redmine_realtime_editor
Install: clone into plugins/, rake redmine:plugins:migrate, restart.
It's a first release (0.1.0); feedback, bug reports and pull requests are very welcome.
Julian
Replies (3)
RE: [Plugin] Redmine Realtime Editor: Google-Docs style co-editing of issues and wiki, no websocket server
-
Added by Julian Perelli about 1 month ago
Version 0.2.0 is out: https://github.com/jperelli/redmine_realtime_editor/releases/tag/v0.2.0
The main addition answers a request left in the plugin directory ratings ("it only works with the default editor; is there any possibility of adding support for the Monaco Editor?"): the plugin now works with the Monaco Editor plugin. When Monaco replaces a textarea, the realtime session binds to the Monaco model instead: the other users' text appears as they type, their carets and selections are shown as Monaco decorations with their name, and users on Monaco co-edit with users on the plain textarea. Undo/redo in Monaco only reverts your own edits, never the other users' text. Nothing else changes: still plain HTTP polling through Redmine, no websocket server to deploy.
Thanks for the feedback, keep it coming!
RE: [Plugin] Redmine Realtime Editor: Google-Docs style co-editing of issues and wiki, no websocket server
-
Added by Julian Perelli 10 days ago
Version 0.2.1 is out: https://github.com/jperelli/redmine_realtime_editor/releases/tag/v0.2.1
It fixes a bug reported in the plugin directory ratings by a user of the Monaco Editor plugin ("errors with the table builder and fullscreen mode, data exists independently and modifications are not applied"). In Monaco's fullscreen mode the collaborative session was silently dropped after a few seconds, so everything typed or applied from the table builder while in fullscreen stayed local and was overwritten by the shared text when leaving fullscreen. The cause was the check used to detect hidden editors: it relied on offsetParent, which is also null for position: fixed elements such as Monaco's fullscreen wrapper. Thanks for the report!
Upgrade: git pull in the plugin directory and restart Redmine, no migration needed.
RE: [Plugin] Redmine Realtime Editor: Google-Docs style co-editing of issues and wiki, no websocket server
-
Added by Julian Perelli about 17 hours ago
Version 0.2.2 is out: https://github.com/jperelli/redmine_realtime_editor/releases/tag/v0.2.2
It fixes a wiki bug reported in the plugin directory ratings ("edits made via the wiki's Edit this section feature, though visible in the view mode, do not appear when entering the edit mode"). After a save made from another form of the same page (Edit this section, also the API), opening the editor loaded an old shared draft instead of the saved text. Drafts of wiki pages and issue descriptions are now dropped when the page or issue was saved outside the draft and nobody is editing in it any more; editors still writing keep theirs, covered by Redmine's own conflict check. Also fixed: when the Monaco Editor plugin replaces the plain textarea on load, the replaced session left a ghost presence behind for 45 seconds, which kept abandoned drafts alive. Thanks for the report!
Upgrade: git pull in the plugin directory and restart Redmine, no migration needed.