feat(vigilante): add follower control panel
This commit is contained in:
@@ -6,6 +6,25 @@ description: Chronological record of material decisions affecting the Spigot Tyr
|
||||
|
||||
# Spigot Tyrant Design Log
|
||||
|
||||
## 2026-08-21 — Vigilante control panel completed
|
||||
|
||||
- Completed US-016 and the reopened US-008 criteria with resistance overview, recruitment, Follower management, and confirmed role-relinquishment screens.
|
||||
- `/vigilante` and `/vigilante menu` open the panel, while existing invitation, acceptance, dismissal, leave, and relinquishment commands remain available.
|
||||
- Added a 100-tick login delay with online, lifecycle, role, and already-opened session checks so only the current Vigilante receives one automatic panel per login.
|
||||
- Pending invitations are visible and idempotent, existing Followers cannot be reinvited, and all menu mutations delegate to authoritative command and domain rules.
|
||||
- Verified command routing, authorization, overview state, invitation rules, delayed opening safeguards, compiler warnings, tests, and packaging with `./gradlew clean check jar`.
|
||||
|
||||
## 2026-08-21 — Vigilante control panel implementation started
|
||||
|
||||
- US-008 and US-016 begin a test-first implementation of the Vigilante control panel, delayed login opening, resistance overview, recruitment, dismissal, and role relinquishment.
|
||||
- The panel will reuse authoritative Follower and relinquishment rules while preserving all existing command alternatives.
|
||||
|
||||
## 2026-08-21 — Vigilante control panel planned
|
||||
|
||||
- Added US-016 for a graphical Vigilante control panel covering resistance overview, recruitment, Follower management, and confirmed role relinquishment while preserving command alternatives.
|
||||
- Planned automatic control-panel opening five seconds after the active Vigilante joins a running event, with lifecycle, role, disconnect, and duplicate-opening safeguards.
|
||||
- Reopened US-008 in the backlog to track the approved control-panel interactions and nearby-Follower combat contribution display.
|
||||
|
||||
## 2026-08-21 — Tyrant control panel completed
|
||||
|
||||
- Completed US-015 and the reopened US-003, US-004, and US-009 control-panel criteria with overview, unlock purchase confirmation, class assignment, and ability screens.
|
||||
|
||||
@@ -15,3 +15,4 @@
|
||||
13. [US-013: Build, test, and release the plugin](us-013-build-test-and-release.md)
|
||||
14. [US-014: Use class ability items](us-014-use-class-ability-items.md)
|
||||
15. [US-015: Manage a reign through the Tyrant control panel](us-015-manage-tyrant-control-panel.md)
|
||||
16. [US-016: Manage Followers through the Vigilante control panel](us-016-manage-vigilante-control-panel.md)
|
||||
|
||||
@@ -23,8 +23,13 @@ As the **Vigilante**, I want nearby living Followers to strengthen me against th
|
||||
- [x] The deceased Vigilante is excluded when another eligible non-Tyrant candidate exists and is reused only when no such candidate exists.
|
||||
- [x] Followers are cleared rather than transferred when their Vigilante dies or loses the position.
|
||||
- [x] The Tyrant is never eligible to be selected as Vigilante.
|
||||
- [x] The Vigilante can review, invite, and dismiss Followers through the Vigilante control panel.
|
||||
- [x] Control-panel and command-based Follower actions enforce identical eligibility and membership rules.
|
||||
- [x] The control panel communicates the current nearby-Follower combat contribution and configured effect caps.
|
||||
- [x] Relinquishing through the control panel follows normal Vigilante succession and Follower cleanup.
|
||||
|
||||
## Related
|
||||
|
||||
- [Role and class model](../concepts/role-and-class-model.md)
|
||||
- [Handle inactivity and pending selections](us-010-handle-inactivity-and-selection.md)
|
||||
- [Manage Followers through the Vigilante control panel](us-016-manage-vigilante-control-panel.md)
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
type: User Story
|
||||
title: "US-016: Manage Followers through the Vigilante control panel"
|
||||
description: Give the active Vigilante a graphical control panel for reviewing and managing the resistance.
|
||||
status: done
|
||||
---
|
||||
|
||||
# US-016: Manage Followers through the Vigilante control panel
|
||||
|
||||
As the **Vigilante**, I want a control panel for managing Followers so that I can coordinate the resistance without memorizing commands.
|
||||
|
||||
## Acceptance criteria
|
||||
|
||||
- [x] The active Vigilante can open the control panel with `/vigilante menu`, and `/vigilante` with no arguments opens the same panel.
|
||||
- [x] A player who is not the active Vigilante cannot open or operate the control panel.
|
||||
- [x] The control panel opens automatically five seconds after the active Vigilante joins a running event.
|
||||
- [x] Automatic opening is cancelled if the player disconnects, loses the Vigilante role, or the event pauses or stops during the five-second delay.
|
||||
- [x] Pending Vigilante candidates and other players do not receive the automatically opened control panel.
|
||||
- [x] Manually opening the control panel during the delay prevents a duplicate automatic opening.
|
||||
- [x] Closing the automatically opened control panel does not cause it to reopen during the same login session.
|
||||
- [x] The overview shows current Followers, pending invitations, and the number of nearby Followers currently eligible to contribute combat effects.
|
||||
- [x] Each Follower's online, living, same-world, proximity, and participation status is communicated without exposing information unavailable to the Vigilante.
|
||||
- [x] The control panel shows the current Strength and Resistance contribution and configured caps.
|
||||
- [x] The Vigilante can navigate between overview, recruitment, Follower-management, and role-control screens.
|
||||
- [x] The recruitment screen lists eligible online players and explains why opted-out, Tyrant, Vigilante, or otherwise ineligible players cannot be invited.
|
||||
- [x] The Vigilante can invite an eligible player after confirmation.
|
||||
- [x] Pending outgoing invitations are identified and cannot be duplicated through repeated or concurrent interaction.
|
||||
- [x] Invited players receive the existing invitation notice and may continue using `/vigilante accept`.
|
||||
- [x] The Follower-management screen identifies current Followers and requires confirmation before dismissal.
|
||||
- [x] Successful invitations and dismissals refresh the control panel from authoritative current state and notify affected players.
|
||||
- [x] The role-control screen allows the Vigilante to relinquish the role only after explicit confirmation.
|
||||
- [x] Relinquishing through the control panel uses normal Vigilante replacement and Follower-cleanup rules.
|
||||
- [x] Every action revalidates the running lifecycle and active Vigilante before changing state.
|
||||
- [x] Stale or repeated control-panel interactions cannot invite an ineligible player, duplicate an invitation, or dismiss the wrong Follower.
|
||||
- [x] Existing `/vigilante invite`, `/vigilante accept`, `/vigilante dismiss`, `/vigilante leave`, and `/tyrant relinquish confirm` commands remain available.
|
||||
|
||||
## Validation
|
||||
|
||||
Automated tests verify default and explicit command entry points, active-Vigilante authorization, overview state, invitation deduplication and eligibility, the exact 100-tick login delay, lifecycle cancellation, and duplicate-opening prevention. The complete `./gradlew clean check jar` lifecycle passes.
|
||||
|
||||
## Related
|
||||
|
||||
- [Support the Vigilante and Followers](us-008-support-vigilante-and-followers.md)
|
||||
- [Handle inactivity and pending selections](us-010-handle-inactivity-and-selection.md)
|
||||
- [Manage a reign through the Tyrant control panel](us-015-manage-tyrant-control-panel.md)
|
||||
- [Role and class model](../concepts/role-and-class-model.md)
|
||||
Reference in New Issue
Block a user