Raum-Ablage

Yan Minagawa

A shared file store per room with folders, upload, rename and delete

DemoCollaborationProductivity

Screenshots

Screenshot 1 of Raum-Ablage Screenshot 2 of Raum-Ablage Screenshot 3 of Raum-Ablage Screenshot 4 of Raum-Ablage Screenshot 5 of Raum-Ablage Screenshot 6 of Raum-Ablage Screenshot 7 of Raum-Ablage Screenshot 8 of Raum-Ablage Screenshot 9 of Raum-Ablage Screenshot 10 of Raum-Ablage Screenshot 11 of Raum-Ablage Screenshot 12 of Raum-Ablage

About this app

Gives every room one fixed, shared file store so files stop getting lost in chat links: a folder view with breadcrumb, list or tile view, drag-and-drop and file-picker upload with progress, new folders, rename, move to another folder, delete (with confirmation) and download. The first time a moderator opens it, the widget asks "Ablage für diesen Raum anlegen?"; other members see a waiting note until then. Unofficial technology demonstration of the openDesk × Matrix widgets integration concept — not a ZenDiS or openDesk product.

What lands where (demo mode, what Marcade hosts). The folder index is room state: one mapping event de.opendesk.nextcloud (base_url: "demo:", a store id and the root name) and one de.opendesk.nextcloud.demo_node event per file or folder (state key = node id) with its name, parent folder, size, MIME type and mxc:// address. Room state is never encrypted, even in an encrypted room, and is replicated to every server in the room — file and folder names are visible to every server admin. The file bytes are uploaded through your client into the homeserver's media repository (MSC4039). In an encrypted room the widget encrypts each file itself first (the Matrix attachment scheme: AES-CTR-256, SHA-256) and puts the key into an m.file message, which your client encrypts like any message; the room state only holds the event id, never the key. That message also shows up in the chat as a normal file. In an unencrypted room files are stored as they are. Demo uploads are capped at 10 MB per file. Deleting removes entries from the index; the bytes stay in the media repository. Writing the index needs the power level for de.opendesk.nextcloud.demo_node (state events default to moderators); moderators who may change power levels get a one-click "Mitgliedern Bearbeitung erlauben" that lowers just this level.

Office files. Writer, Calc and Impress documents (ODF and OOXML) offer "Im Raum-Dokument öffnen", which pins the file for the Raum-Dokument widget by writing de.opendesk.collabora.pinned (file id, path, name, MIME type, who pinned it and when).

Gateway mode. With an opendesk-widget-gateway URL in the widget URL fragment the store is a real Nextcloud group folder (named after the room) shared with a per-room Nextcloud group; only the mapping (folder id, path, group id) goes into room state and all file content stays in Nextcloud. Large files are streamed to the gateway, which uses Nextcloud chunked upload. Changes by other members appear within seconds through the gateway change feed (30 s polling as fallback). 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-ablage/0.1.0/

Works on its own in demo mode (index in room state, files in the media repository, 10 MB per file). Optional: add `#gateway=https://…` (an opendesk-widget-gateway) to use a Nextcloud group folder per room instead.

Rooms should pin the versioned URL above. https://marcade.store/apps/de.minagawa.opendesk.raum-ablage/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: shared file store per room. Demo mode: folder index in room state, files in the media repo (10 MB, encrypted in E2EE rooms; clear note if the client refuses uploads). Gateway mode: Nextcloud group folder named after the room, streamed uploads, live updates via change feed (30 s poll fallback). List and tile view, drag-and-drop upload, new folder, rename, move, delete, download, open in room document, one-click member write access. German and English, light and dark.

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.nextcloud, de.opendesk.nextcloud.demo_node, de.opendesk.collabora.pinned
Encrypted rooms
Supported
Widget ID
de.minagawa.opendesk.raum-ablage