- Add: Optional confirmation dialog before accepting rules in the Welcome GUI (`welcomeGui.confirmOnAccept`)
- Add: In-plugin telemetry counters for daily GUI opens and rules accepted; view/reset via `/firstlogin metrics [reset]`
- Add: Runtime command toggles via `/firstlogin set <key> <value>` (no file edit required)
- Keys: `welcomeGui.reopenOnJoinUntilAccepted`, `welcomeGui.blockCloseUntilAccepted`, `welcomeGui.confirmOnAccept`, `welcomeGui.rulesVersion`, `debug.gui`, `debug.inventory`
- Add: Granular admin permissions for each `/firstlogin` subcommand under `firstlogin.admin.*`
- Add: New admin subcommands with tab-completion: `set`, `metrics`
- Update: `plugin.yml` usage expanded and permissions detailed for new subcommands
- Change: Switch Welcome GUI persistence to asynchronous player data saving (non-blocking writes to `players.yml`)
- Add: Persist player timestamps to `players.yml`
- `timestamps.<uuid>.first_join` – epoch millis of first join (fallback to Bukkit firstPlayed)
- `timestamps.<uuid>.rules_accepted` – epoch millis when rules were accepted
- Add: PlaceholderAPI placeholders for timestamps and status
- `%firstlogin_first_join_date%`, `%firstlogin_rules_accepted_date%` (formatted via `formatting.datePattern`)
- `%firstlogin_days_since_first_join%`, `%firstlogin_days_since_rules_accepted%`
- `%firstlogin_first_join_ts%`, `%firstlogin_rules_accepted_ts%`
- `%firstlogin_rules_version_accepted%`, `%firstlogin_rules_pending%`
- Add: PlaceholderAPI telemetry + join order placeholders
- `%firstlogin_gui_opens_today%`, `%firstlogin_rules_accepted_today%`
- `%firstlogin_item_clicks_today_<key>%` (per-GUI-item click counter)
- `%firstlogin_join_order%` (alias `%firstlogin_join_number%`) – 1-based join order across known players
- Note: `formatting.datePattern` defaults to `yyyy-MM-dd HH:mm:ss` and can be customized.