You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -15,11 +15,11 @@ Developed by [MODN METL LTD](https://modnmetl.com).
15
15
16
16
---
17
17
18
-
## ModNVote 2.0 status
18
+
## ModNVote 2.x status
19
19
20
20
ModNVote 2.0 is the active replacement for the legacy 1.x Yes/No-only plugin.
21
21
22
-
2.0 introduces:
22
+
2.x includes:
23
23
24
24
- GUI-driven poll creation and editing
25
25
- Ranked single-winner polls
@@ -30,6 +30,10 @@ ModNVote 2.0 is the active replacement for the legacy 1.x Yes/No-only plugin.
30
30
- Tamper-evident audit records
31
31
- Java/Bedrock-friendly inventory interfaces
32
32
- Mandatory confirmation before ballots are cast
33
+
- Poll cloning for repeated or template-based poll setup
34
+
- Optional external witness publication via Discord-compatible webhooks
35
+
- Automatic and manual integrity checkpoint publication
36
+
-`/poll` as a short alias for `/modnvote`
33
37
34
38
2.0 is a clean install target. Migration from legacy 1.x databases is not currently supported.
35
39
@@ -57,6 +61,7 @@ This means:
57
61
- Vote content and voter identity are not stored together.
58
62
-`/modnvote verify participation` confirms participation without revealing a vote.
59
63
-`/modnvote verify ballot` uses a proof phrase as a bearer-token style verification mechanism.
64
+
-`/poll` may be used as a shorter alias for `/modnvote`.
60
65
- GUI/session state does not directly write ballots or lifecycle state.
61
66
62
67
---
@@ -98,12 +103,23 @@ This creates a DRAFT Yes/No poll and opens the Poll Builder GUI.
98
103
99
104
---
100
105
101
-
###Command alias
106
+
## Command alias
102
107
103
108
All `/modnvote` commands can also be used via the shorter alias:
104
109
105
110
```text
106
111
/poll ...
112
+
```
113
+
114
+
For example:
115
+
116
+
```text
117
+
/poll create ranked_single_winner 5
118
+
/poll open <pollId>
119
+
/poll vote <pollId>
120
+
```
121
+
122
+
---
107
123
108
124
## Admin workflow
109
125
@@ -151,6 +167,16 @@ Yes/No polls do not show ranked-only settings such as Max Rankings or Allow Part
151
167
152
168
This reopens the Poll Builder for an existing DRAFT poll.
153
169
170
+
### Clone an existing poll
171
+
172
+
```text
173
+
/modnvote clone <sourcePollId>
174
+
```
175
+
176
+
This creates a new DRAFT poll by copying the source poll’s definition and options, then opens the Poll Builder so the clone can be adjusted.
177
+
178
+
Cloning does not copy ballots, participation records, lifecycle timestamps, proof phrases, or audit history.
179
+
154
180
### Open a poll for voting
155
181
156
182
```text
@@ -188,6 +214,64 @@ For ranked polls:
188
214
189
215
Results are calculated from anonymous ballots only.
190
216
217
+
### Publish a manual integrity checkpoint
218
+
219
+
```text
220
+
/modnvote checkpoint <pollId>
221
+
```
222
+
223
+
This publishes a privacy-safe witness checkpoint to the configured webhook targets.
224
+
225
+
Manual checkpoints include poll-level integrity status only. They do not publish player names, UUIDs, IP addresses, proof phrases, participation receipts, or per-player vote content.
226
+
227
+
---
228
+
229
+
## Witness publication
230
+
231
+
ModNVote can publish public witness events to configured Discord-compatible webhooks.
232
+
233
+
Supported witness events:
234
+
235
+
- Poll opened
236
+
- Poll closed, including a public result summary
237
+
- Automatic integrity checkpoints every configured number of accepted ballots
238
+
- Manual integrity checkpoints via `/modnvote checkpoint <pollId>`
239
+
240
+
Webhook delivery is best-effort and non-blocking. A failed webhook does not cancel voting, poll opening, poll closing, or persistence.
241
+
242
+
Configure webhook publication in `config.yml`:
243
+
244
+
```yaml
245
+
publication:
246
+
# External witness publication targets.
247
+
#
248
+
# Leave this as [] to disable webhook publication:
249
+
# discord_webhooks: []
250
+
#
251
+
# To enable Discord publication, change it to a YAML list:
|`modnvote.admin.poll.open`| Open polls for voting |
270
365
|`modnvote.admin.poll.close`| Close polls |
@@ -363,14 +458,17 @@ Integrity checks include:
363
458
- Ballot hash verification
364
459
- Ballot commitment verification
365
460
- Audit chain validation
461
+
- Optional witness checkpoint publication
366
462
367
463
The goal is not to identify how someone voted. The goal is to verify that the stored election data remains internally consistent and that a voter can verify their own ballot proof phrase.
368
464
465
+
Witness publication can optionally publish poll-level lifecycle and checkpoint events to configured webhooks. These events are privacy-safe and do not include voter identity, proof phrases, participation receipts, IP data, or per-player vote content.
466
+
369
467
---
370
468
371
469
## Installation
372
470
373
-
ModNVote 2.0 currently requires a clean install.
471
+
ModNVote 2.x requires a clean install (No upgrade path from v1.x).
374
472
375
473
1. Stop the server.
376
474
2. Remove any legacy ModNVote 1.x jar.
@@ -416,36 +514,17 @@ The Java source/target level should remain Java 21 unless explicitly changed.
0 commit comments