- Move tally hook from process_session (per-guild, gated by Logs subs)
to process_ws_replays (once per game, all guilds) via on_game_finished
- Add set_voice_channel_status permission check at /tally-claim time so
failures are immediate and visible rather than silent on every game
- Remove entitlement gate from tally_claim and tally_transfer
- Add VC tally permission section to /diagnose-perms when run in a VC
- Add 5 new locale keys to en.json for the permission messages
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* chore(tally): remove /dev-tally testing command
Feature is verified working; drop the dev-only manual win/loss command and its now-unused apply_manual_result helper and test.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* refactor(tally): rename /tally-wipe to /tally-clear
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
* feat(tally): /tally-claim, /tally-transfer, /tally-wipe commands
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* feat(tally): idle sweep, startup load, and empty-VC expiry
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* style(tally): parenthesize voice-state guard for clarity
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* feat(tally): update live tallies when sessions finish
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix(tally): robust winner matching + cleanup of deleted-VC tallies
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* feat(tally): /dev-tally to manually attribute a win/loss in your VC
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>