Staff guide¶
| Task | Command | Permission |
|---|---|---|
| Open the menu | /dailies, /weeklies, /dailyresearch |
dailyresearch.command.use (everyone by default) |
Check and reload tasks.json (future periods only) |
/dailyresearch reload |
dailyresearch.admin.reload (ops) |
| List every task pool, live or retired | /dailyresearch tasks |
dailyresearch.admin.manage (ops) |
| Retire a task now, and replace it on cards already issued | /dailyresearch disable <task> [reason] |
dailyresearch.admin.manage |
| Retire a task from the next period only | /dailyresearch disable future <task> [reason] |
dailyresearch.admin.manage |
| Put a task back | /dailyresearch enable <task> [reason] |
dailyresearch.admin.manage |
| Drop overrides for task ids that no longer exist | /dailyresearch prune |
dailyresearch.admin.manage |
Retiring a broken or exploitable task is the main staff tool. It works on every server at once, with no restart:
- The retirement lives in the shared MariaDB table
research_task_overrides, not in a file, so one command covers every backend. Other servers pick it up within 30 seconds; no restart and no per-server file edit. disablealso rewrites the assignments already issued. Without that, a retired task would sit on players' cards until midnight, or until Monday for a weekly, because each assignment row is a snapshot of the task as issued. Unfinished rows are replaced and their progress resets, since the replacement measures something else; rows already completed are left alone so nobody loses a reward they earned. Usedisable futureto leave the current period untouched.- The replacement is picked by the same deterministic selector used at issue time, over the pool that already excludes the retired task, so two backends doing this at once converge on the same replacement.
- Retiring the last live task in a slot is refused. An empty slot cannot produce an assignment, and a player with no assignment has no menu at all. If a slot somehow ends up fully retired anyway, the pool falls back to the config-enabled tasks and then to the whole pool, logging a warning each time.
- The override beats the config file in both directions, so
enablealways means enable. For a permanent change, set"enabled": falseon the task intasks.json; a schema upgrade preserves that flag.
On servers using CommandWhitelist, add dailies, weeklies and dailyresearch. Ops bypass
CommandWhitelist, so test as a non-op.