Project

General

Profile

[Plugin] Redmine Realtime Editor: Google-Docs style co-editing of issues and wiki, no websocket server

Added by Julian Perelli 3 days 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 (1)

RE: [Plugin] Redmine Realtime Editor: Google-Docs style co-editing of issues and wiki, no websocket server - Added by Julian Perelli about 10 hours 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!

    (1-1/1)