Raum-Dokument

Yan Minagawa

One pinned main document per room that everyone edits together

DemoCollaborationProductivity

Screenshots

Screenshot 1 of Raum-Dokument Screenshot 2 of Raum-Dokument Screenshot 3 of Raum-Dokument Screenshot 4 of Raum-Dokument Screenshot 5 of Raum-Dokument Screenshot 6 of Raum-Dokument Screenshot 7 of Raum-Dokument Screenshot 8 of Raum-Dokument Screenshot 9 of Raum-Dokument Screenshot 10 of Raum-Dokument

About this app

Pins one main document to the room so everyone who opens the room sees the same document and edits it together while chatting. A title bar shows who pinned it, "Anderes Dokument wählen" and "Anheftung lösen" — unpinning never deletes the document. Unofficial technology demonstration of the openDesk × Matrix widgets integration concept — not a ZenDiS or openDesk product.

What lands where (demo mode, what Marcade hosts). Without openDesk the widget brings a small collaborative block editor (headings, paragraphs, bulleted and numbered lists, bold, italic, links). Everything is room state: the pointer de.opendesk.collabora.pinned (document id, name, who pinned it and when) and de.opendesk.collabora.demo_doc with one event per document (name, creation date) and one event per paragraph block (format, text, order key). Room state is never encrypted, even in an encrypted room, and is replicated to every server in the room — the document text is visible to every server admin, so do not write anything confidential in demo mode. Bold, italic and links are a small Markdown subset inside that text; undo and redo work locally. Concurrent edits are merged: two people editing different paragraphs never interfere, and changes to different characters of the same paragraph are merged character by character; only when two people change the same words differently at the same moment does the widget ask ("take their version" / "keep mine"). Edits are sent debounced (about one second) to stay within the homeserver's rate limit. Editing needs the power level for de.opendesk.collabora.demo_doc and pinning the one for de.opendesk.collabora.pinned (state events default to moderators; the widget explains a missing level instead of failing). "Anordnung" places the widget above the chat or maximised for everyone by writing Element's room layout (io.element.widgets.layout).

Gateway mode (openDesk). With an opendesk-widget-gateway URL in the widget URL fragment the widget embeds the real Collabora editor (via Nextcloud richdocuments, with the other editors' cursors) in a nested frame, picks files from the room's Nextcloud folder (de.opendesk.nextcloud, set up by Raum-Ablage) or creates new Writer, Calc or Impress documents there (OpenDocument or Microsoft format, empty or from one of your Nextcloud templates). On a phone it leads with "In neuem Tab öffnen", because the embedded editor is cramped on small screens. Room state then carries only the pointer (Nextcloud file id, path, name, MIME type) — no content. Write rights come from Nextcloud; readers get read-only mode. If Nextcloud or Collabora refuse to be framed (frame-ancestors), the widget says so and offers "In neuem Tab öffnen". The client may ask you to share your identity (OpenID) with the gateway.

Add to a room

Paste this into any room you may configure — Element and most clients understand /addwidget:

/addwidget https://marcade.store/apps/de.minagawa.opendesk.raum-dokument/0.1.0/

Works on its own in demo mode (a small block editor whose text lives in unencrypted room state). Optional: add `#gateway=https://…` (an opendesk-widget-gateway) to embed the real Collabora editor for files in the room's Nextcloud folder; Nextcloud and Collabora must allow the widget origin in `frame-ancestors`.

Rooms should pin the versioned URL above. https://marcade.store/apps/de.minagawa.opendesk.raum-dokument/latest/ always points at the newest release.

Name and icon in Element

/addwidget can carry only the URL: Element lists the app as “Custom” without an icon. Add the Marcade Store once per room and it gives every Marcade app pasted in there its name and icon, and tells you when an update is out.

/addwidget https://marcade.store/apps/de.minagawa.marcade-store/0.1.4/

Permissions

Capabilities this widget may request. The Marcade Player asks for your consent before granting any of them.

What's new in 0.1.0

First release: one pinned main document per room. Demo mode: collaborative block editor in room state, edits merged character by character, bold/italic/links, undo/redo. Gateway mode: Collabora (Nextcloud richdocuments) in a nested frame with new-tab fallback, room folder picker, new ODF or Microsoft Office documents (optionally from a template) via the gateway; phones lead with a new tab. "Anordnung": above the chat or maximised. Pin, unpin, choose another. German and English.

Information

Version
0.1.0
Section
Demo — Technology demonstrations built by Marcade to show what a widget can do. Not for real use — nothing is submitted anywhere.
License
Apache-2.0
Author
Yan Minagawa
State event types
de.opendesk.collabora.pinned, de.opendesk.collabora.demo_doc, de.opendesk.nextcloud, io.element.widgets.layout
Encrypted rooms
Supported
Widget ID
de.minagawa.opendesk.raum-dokument