Commit Graph

57 Commits

Author SHA1 Message Date
NotSoToothless db7c546a24 feat(tally): friendlier option labels + dev-tally only counts matching target (#1340)
Rename /tally-claim and /tally-transfer options to username/squadron with
clearer descriptions. Fix /dev-tally to only apply a win/loss when the
passed username/squadron actually matches what the VC is tracking, instead
of bumping any active tally.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 01:27:08 -07:00
NotSoToothless 9222f7c53f Auto merge dev → main (#1339)
* 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>
2026-06-19 01:19:19 -07:00
NotSoToothless 732595433a feat(tally): registry, JSON persistence, voice-status HTTP, session hook (#1338)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 00:20:31 -07:00
NotSoToothless 74c59eb139 feat(tally): core model, evaluation and status formatting (#1337)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 00:15:43 -07:00
NotSoToothless 76844c1c6f -am (#1335) 2026-06-18 20:11:22 -07:00
NotSoToothless 48f96ca8ff Auto merge dev → main (#1332)
* feat(tssbot): build_match_logs + match_logs persistence

* feat(tssbot): create match_logs table and write logs at ingest

* feat(tssbot): one-time match_logs backfill script

* feat(srebot): persist chat/battle logs to match_logs (parity, no backfill)

* feat(tssbot): Battle/Chat Log buttons on Discord scoreboards
2026-06-18 01:02:59 -07:00
NotSoToothless deb4e0fb12 update renderer to have cap status also tickets (#1325) 2026-06-14 22:36:06 -07:00
NotSoToothless 4b75ce1533 Auto merge dev → main (#1324)
* update game files

* update files and capture raw spectra payload
2026-06-14 21:11:57 -07:00
NotSoToothless e2d02a34b3 remove elo (#1304) 2026-06-05 12:57:20 -07:00
NotSoToothless 80a1ebde30 new spectra format (#1302) 2026-06-05 11:48:42 -07:00
deploy de42c30bab timeline feaky 2026-06-04 23:35:09 +00:00
NotSoToothless 9d950c413f blacklist DSPL 💔 2 (#1294) 2026-06-01 13:31:49 -07:00
NotSoToothless 38726d6340 blacklist DSPL 💔 (#1293) 2026-06-01 13:16:43 -07:00
NotSoToothless cb0a18f748 move venv to shared (#1291) 2026-05-31 01:43:19 -07:00
NotSoToothless 37c3e66d75 update blacklists (#1290) 2026-05-30 10:23:03 -07:00
NotSoToothless ec2209b5d0 locale-slop (#1289) 2026-05-30 09:20:34 -07:00
NotSoToothless db34ca0d3d update helps and commands (#1288) 2026-05-30 09:09:29 -07:00
NotSoToothless 54c06bd275 lets get this party starteddddd (#1287) 2026-05-30 08:45:32 -07:00
deploy 14430d3850 simplify: strip first/last char for squadron tag normalization
WT tags are always exactly one decorator char on each side, so a
simple s[1:-1] is clearer than a regex strip.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 18:33:28 +00:00
deploy f9cced2b39 fix: use squadron_short for win/loss comparison in scoreboard
squadron_raw from old saved replays still has raw tags (-DSPLA-) but
winning_team is now stripped (DSPLA) by _strip_tag in process_session.
squadron_short is set by per-team DB resolution so it matches for both
old and new replays.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 18:26:18 +00:00
deploy c0755ec243 fix: strip leading/trailing non-alphanumeric chars in _normalize_squadron_tag
The old regex [^A-Za-z0-9_-] whitelisted dashes and underscores, so
-DSPLA- and _APS_ passed through untouched. All downstream code that
reads team["squadron"] then saw the raw tag instead of the bare short
name, causing NULL clan_ids in player_games_hist/match_summary and
broken lookups throughout. Fixing at the source means every consumer
gets a clean name without individual patches.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 18:24:25 +00:00
deploy 74c56881fd fix: strip tag decorators from winner/loser before guild_squadron comparison
guild_squadron is the clean short name from SQUADRONS.json (e.g. DSPLA)
but winning_team_squadron in the replay is the raw tagged value (-DSPLA-).
They never matched for dash/underscore-tagged squads so bar_color was
always not_involved instead of win/loss on the guild's own scoreboard.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 18:18:11 +00:00
deploy 0154c41997 fix: strip tag decorators from squadron names in comp writer and /comp lookup
Squads with dash or underscore tags (e.g. -DSPLA-, _APS_) had their raw
replay team.squadron value written directly to COMPS filenames, producing
-DSPLA-.json / _APS_.json. The /comp autocomplete returns the clean DB
short_name (DSPLA) so the file lookup never matched.

Fix: strip leading/trailing non-alphanumeric characters and uppercase in
both the writer and the /comp command lookup. Also renamed the 8 existing
decorated COMPS files to their clean equivalents on disk.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 18:15:48 +00:00
deploy 1d5da8042c fix: use raw squadron tag for win/loss comparison, not resolved short name
My earlier change to use squadron_short (resolved clean name, e.g. DSPLA)
for display broke the win/loss header colour: winning_team is the raw
replay value (e.g. -DSPLA-) so the comparison never matched, rendering
both teams as losers. Split into squadron_raw (comparison) vs
squadron_short (display text) so each uses the right value.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 17:22:45 +00:00
deploy 2a143c360f fix: apply per-team resolution to process_session clan lookup
Same order-inversion bug as build_scoreboard_context existed in
process_session's resolve_clans call. The inverted squadron_long
caused the scoreboard renderer to find the opponent's diff entry
for a dash-tagged squad's players, producing ??? for every player
since their UIDs weren't in the wrong squad's points_diff dict.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 17:16:44 +00:00
deploy 606e174a97 fix: resolve each team independently to prevent squadron_long order inversion
When one team has a dash-tag (e.g. -DSPLA-) and the opponent has a normal
tag (e.g. ALUN2), batching both into resolve_clans caused the short-name
pass to place the normal team first in results and the tag pass to append
the dash-tagged team second — inverting the mapping vs. the teams array.
Each team's players were then looked up against the wrong squadron's API,
yielding curr=0 for everyone and diffs=0 on the scoreboard.

Fix: resolve each team concurrently and independently so results are always
index-aligned with the teams list regardless of which resolution path fires.
Also propagates squadron_short to the scoreboard renderer so display names
are clean (DSPLA not -DSPLA-).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 17:04:40 +00:00
NotSoToothless cc4bc14193 fix schedule (#1286) 2026-05-29 09:45:37 -07:00
deploy 5d972d7314 fix: resolve_clans drops unresolved placeholders to allow tag fallback
Squads with dash-wrapped tags (e.g. -DSPLA-) store the full tag in the
replay's team.squadron field rather than the bare short name. The short
lookup fails and returns a placeholder whose short_name blocks the tag
lookup, leaving squadron_long as "<unresolved>" and producing no point
diffs on scoreboards. Fix: only include successfully resolved clans
(clan_id is not None) in results and resolved_shorts so the tag pass
still runs for any failed short lookup. Affects all 186 dash-tagged squads.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 16:42:23 +00:00
NotSoToothless 96aa75be57 fuck u (#1283) 2026-05-28 06:37:08 -07:00
NotSoToothless a489d7d04b fix schedule (#1282) 2026-05-28 06:03:52 -07:00
NotSoToothless 4984ba4f6c fix schedule (#1280) 2026-05-27 07:22:53 -07:00
NotSoToothless 45b1b334c4 update bumass command, and bad wording (#1279) 2026-05-27 07:08:28 -07:00
NotSoToothless 0c99a911e0 whoops (#1271) 2026-05-27 04:29:57 -07:00
NotSoToothless 8760c63759 update tss and sre replay area (#1269) 2026-05-25 21:24:56 -07:00
NotSoToothless c4693e498c fixed (#1268) 2026-05-24 19:47:37 -07:00
NotSoToothless 9c6ca3bcd7 compress the mf (#1267) 2026-05-24 19:44:12 -07:00
clippii 99a43e398e fix ws dropping replays due to 1MB max_size limit
Raise websockets max_size to 32MB so zstd-compressed frames from Spectra
that exceed the 1MB default aren't rejected before decompression.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 16:36:24 +00:00
NotSoToothless f6f4e33a65 update to handle new structure from spectra, no more gobs (#1266) 2026-05-23 17:16:53 -07:00
NotSoToothless 2d5adfcbe0 fix leave alarm (#1265) 2026-05-21 23:22:10 -07:00
NotSoToothless cd909bc858 add leave option and wire up (#1264) 2026-05-19 22:24:03 -07:00
NotSoToothless b36886425b fix again (#1263) 2026-05-19 18:06:30 -07:00
NotSoToothless f511cdc083 maybeeee fix more stuff for gob videos (#1262) 2026-05-19 17:37:41 -07:00
NotSoToothless 2c9e89eee2 update renderer and web viewer to correctly cut map and show caps (#1261) 2026-05-19 15:37:19 -07:00
NotSoToothless 47ae8b92f7 Auto merge dev → main (#1258)
* meow

* updated it

* meow

* add avg TTL footer to /comp + extend freshness window to 90m when servers slow

---------

Co-authored-by: Clippii <clippii@protonmail.com>
2026-05-17 12:58:48 -07:00
clippii 5148a0c7bb fix 2026-05-17 17:01:07 +01:00
clippii d316d8fd61 added feat 2026-05-17 12:11:11 +01:00
NotSoToothless ff379c7843 move some commands to standard (#1256) 2026-05-16 16:04:37 -07:00
NotSoToothless 55ab213e76 limit by UID and server (#1252) 2026-05-15 03:05:48 -07:00
NotSoToothless 311ae875fb limit by UID and server (#1251) 2026-05-15 02:56:55 -07:00
NotSoToothless 0c3fc27832 mrrrp (#1250) 2026-05-15 02:27:26 -07:00