feat(onboarding): welcome eligible new players

This commit is contained in:
dmg
2026-08-10 18:24:55 -04:00
parent d1427fbe38
commit 5d3acef8ab
4 changed files with 66 additions and 9 deletions
+7
View File
@@ -49,3 +49,10 @@
- Ambiguous, cancelled, zero-damage, environmental, and self damage do not opt out a player.
- Combat opt-out bypasses administrative locks, immediately reconciles effect and prefix state, persists once, and sends one explanatory message.
- Verified attribution, victim safety, lock bypass, duplicate suppression, and the full build with `./gradlew clean check jar`.
### US-004 onboarding completed
- Join observation now sends the configurable welcome message on each login before the original first-join instant plus the configured calendar-day window.
- The exact expiration boundary and globally disabled behavior suppress reminders without resetting first-join state.
- The default message names all player commands and explains automatic combat opt-out.
- Verified repeated joins, expiration, global suppression, first-join retention, and the full build with `./gradlew clean check jar`.
@@ -2,7 +2,7 @@
type: User Story
title: "US-004: Introduce new players to Leaf"
description: Remind players how to control Leaf during their first seven calendar days on the server.
status: backlog
status: done
---
# US-004: Introduce new players to Leaf
@@ -11,14 +11,14 @@ As a **new player**, I want a brief explanation of Leaf when I join so that I kn
## Acceptance criteria
- [ ] Leaf records the first observed join time for each player by UUID as an RFC 3339 UTC timestamp.
- [ ] On every login before the first-join timestamp plus seven calendar days, the player receives a concise welcome message explaining Leaf protection.
- [ ] The welcome message tells the player to use `/leaf on`, `/leaf off`, and `/leaf status`.
- [ ] The message makes clear that attacking another player automatically opts the attacker out.
- [ ] Players no longer receive the welcome message once their seven-day onboarding period expires.
- [ ] Existing first-join timestamps are not reset by logout, restart, opt-in changes, or global disablement.
- [ ] No onboarding reminders are shown while Leaf is globally disabled.
- [ ] Re-enabling Leaf allows reminders to resume on subsequent logins only for players whose original seven-day period has not expired.
- [x] Leaf records the first observed join time for each player by UUID as an RFC 3339 UTC timestamp.
- [x] On every login before the first-join timestamp plus seven calendar days, the player receives a concise welcome message explaining Leaf protection.
- [x] The welcome message tells the player to use `/leaf on`, `/leaf off`, and `/leaf status`.
- [x] The message makes clear that attacking another player automatically opts the attacker out.
- [x] Players no longer receive the welcome message once their seven-day onboarding period expires.
- [x] Existing first-join timestamps are not reset by logout, restart, opt-in changes, or global disablement.
- [x] No onboarding reminders are shown while Leaf is globally disabled.
- [x] Re-enabling Leaf allows reminders to resume on subsequent logins only for players whose original seven-day period has not expired.
## Related