Entscheidungslog

Yan Minagawa

Numbered, dated decisions with rationale and a link to the chat message

DemoProductivityCollaboration

Screenshots

Screenshot 1 of Entscheidungslog Screenshot 2 of Entscheidungslog Screenshot 3 of Entscheidungslog Screenshot 4 of Entscheidungslog Screenshot 5 of Entscheidungslog Screenshot 6 of Entscheidungslog Screenshot 7 of Entscheidungslog Screenshot 8 of Entscheidungslog Screenshot 9 of Entscheidungslog Screenshot 10 of Entscheidungslog

About this app

Moderators record decisions taken in the room as numbered entries (E-001, E-002 …) with date, short title, rationale, affected people and a link to the chat message where the decision was made. Numbers are gap-free per room, also when two moderators record at the same moment. Superseding a decision only changes its status — nothing is ever deleted. Unofficial technology demonstration of the openDesk × Matrix widgets integration concept — not a ZenDiS or openDesk product.

What lands in room state. One state event de.opendesk.xwiki.decision per decision (state key = its number) containing the title, the rationale text, the decision date, the Matrix ids of the moderator and the affected people, the id of the linked chat message and, once superseded, the reason and successor number. Room state is never encrypted, even in an encrypted room, and is replicated to every server in the room — do not record confidential content. After recording or superseding, the widget posts a short m.notice ("📌 Beschluss E-017 festgehalten: …") into the timeline; that message is encrypted like any other in an encrypted room. In gateway mode a moderator can switch the room to "decision text in the wiki only": new decisions then keep only the number, status, dates, user ids of who recorded / superseded them, the source message id, the wiki space and a SHA-256 fingerprint of the text in room state; title, rationale, affected people and the reason live only in XWiki. The setting itself is a state event of the same type (state key settings).

Working with it. Filter by period, status and free text; jump from a superseded decision to its successor; copy the (filtered) log as Markdown. The "record" dialog lists (and searches) the messages your client hands to the widget so you can prefill the rationale and link the source message; an older message can be linked by pasting its permalink. Only moderators (power level ≥ 50) can record or supersede; everyone else sees a read-only log.

Modes. On Marcade it runs in demo mode: everything lives in the room. With an opendesk-widget-gateway URL in the widget URL fragment, each decision is additionally mirrored into the room's XWiki space as a page with an OpenDesk.DecisionClass object, and every entry shows whether the wiki is up to date (the client may ask for permission to share your identity). A wiki page that holds a different decision under the same number is flagged "Wiki abweichend" and never changed automatically; a moderator can compare both texts and overwrite the page.

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.entscheidungslog/0.1.0/

Works on its own in demo mode. Optional: add `#gateway=https://…` (an opendesk-widget-gateway) to mirror every decision into the room's XWiki space as the signed-in user.

Rooms should pin the versioned URL above. https://marcade.store/apps/de.minagawa.opendesk.entscheidungslog/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: numbered decisions (E-001 …) in room state with gap-free, race-safe numbering; record dialog with message picker and affected people; supersede without deleting; filters by period, status and text; Markdown export; confirmation notice; optional XWiki mirror via opendesk-widget-gateway with per-decision sync status. German and English, light and dark. Wiki conflicts (a different decision under the same number) are shown as "Wiki abweichend" with a compare-and-overwrite resolution; optional pointer-only room state in gateway mode (text only in XWiki); message picker loads more history, can search, and links older messages by permalink; room v12 creators count as moderators.

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.xwiki.decision
Encrypted rooms
Supported
Widget ID
de.minagawa.opendesk.entscheidungslog