Entscheidungslog
Numbered, dated decisions with rationale and a link to the chat message
Screenshots
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.
- Read room state events of type “de.opendesk.xwiki.decision”
org.matrix.msc2762.receive.state_event:de.opendesk.xwiki.decision - Send room state events of type “de.opendesk.xwiki.decision”
org.matrix.msc2762.send.state_event:de.opendesk.xwiki.decision - Read room state events of type “de.opendesk.xwiki”
org.matrix.msc2762.receive.state_event:de.opendesk.xwiki - Read messages in the room
org.matrix.msc2762.receive.event:m.room.message - Send messages to the room
org.matrix.msc2762.send.event:m.room.message - Read room state events of type “m.room.power_levels”
org.matrix.msc2762.receive.state_event:m.room.power_levels - Read room state events of type “m.room.member”
org.matrix.msc2762.receive.state_event:m.room.member - Read room state events of type “m.room.create”
org.matrix.msc2762.receive.state_event:m.room.create - Requires running inside a Matrix client
io.element.requires_client
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