Commit Graph

55 Commits

Author SHA1 Message Date
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
Heidi 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
NotSoToothless de78c90033 fix weekly br selector (#1249) 2026-05-15 02:23:30 -07:00
NotSoToothless 6303285425 fix weekly BR dedup + add /resend-weekly-br dev command
Per-squadron WeeklyBR reports are distinct from the global wildcard
report and should always send even when both point at the same channel.
Removed the dedup block that was silently dropping squadron-specific
embeds whenever the channel matched the wildcard channel.

Adds /resend-weekly-br (dev-only) to force-resend the most recently
ended BR window to all configured channels, clearing the idempotency
marker first.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 09:19:33 +00:00