webxdc apps

Yan Minagawa (datanauten)

Play webxdc apps (polls, checklists, games) together in a Matrix room

CommunityCollaborationUtilities

Screenshots

Screenshot 1 of webxdc apps Screenshot 2 of webxdc apps Screenshot 3 of webxdc apps Screenshot 4 of webxdc apps

About this app

Brings webxdc apps into Matrix rooms. A room admin adds an app from the webxdc.org catalog (about 170 community apps: polls, checklists, chess, editors, Excalidraw, games), from an .xdc file or from a link, and everyone in the room can start it. Any app can be pinned as its own room widget. The same .xdc files run in Delta Chat and other messengers.

Each app runs in an isolated frame on a second origin (webxdc-run.widgets.marcade.store) and has no internet access. A service worker serves the app's files and a strict content security policy blocks every request to other sites. External links and messages an app wants to post to the room need your confirmation. What people do in an app travels as timeline events (de.datanauten.webxdc.update), which are end-to-end encrypted in encrypted rooms. Each device keeps a local copy of every app's history. Someone who joins later can ask members who have the app open for that history (de.datanauten.webxdc.sync).

Not encrypted: the list of apps, their names and the .xdc files. They are room state and media, which are cleartext on the homeserver, as for every widget. History has limits: a widget can read back only recent room events, so a latecomer sees older updates only if someone who has them opens the app. "Offline" is enforced by the browser's content security policy, which cannot block WebRTC or DNS prefetch; the widget removes WebRTC from apps as a best effort. All apps share the runner origin, so they are kept apart by name, not by the browser. The catalog's apps are community-made and not reviewed by Marcade. Element X (mobile) does not run widgets.

Add to a room

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

/addwidget https://webxdc.widgets.marcade.store/0.1.1/

The first time it opens, the widget adds $matrix_user_id to its own URL and reloads (apps need to know who is who). That needs the right to change widgets, which whoever added it has.

Rooms should pin the versioned URL above. https://webxdc.widgets.marcade.store/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.1/

Permissions

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

What's new in 0.1.1

All 167 apps of the webxdc.org catalog now start. Security: apps could reach the internet over WebRTC from inside frames and learn your IP address; a guard now removes WebRTC from every app page and frame. Apps without webxdc.js no longer hang on "Starting…". Fixed: 3D Dice Box, Quake III multiplayer, Code Playground. An .xdc an app makes becomes a room app; pictures arrive as pictures; app messages with links get an Open button.

Information

Version
0.1.1
Section
Community — Built by Marcade CI from a pinned commit; the capability list has been audited.
License
AGPL-3.0-or-later
Author
Yan Minagawa (datanauten)
State event types
de.datanauten.webxdc.instance, im.vector.modular.widgets
Encrypted rooms
Not declared
Widget ID
de.datanauten.webxdc