Commit Graph

116 Commits

Author SHA1 Message Date
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
Heidi c08fd9c42b removed tss endpoints from API 2026-05-29 15:11:14 +01: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 23a9cf8fbf fix lookups on replay paths for website (#1281) 2026-05-27 09:18:27 -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 2371e2d4cf mrowww (#1278) 2026-05-27 06:11:25 -07:00
NotSoToothless b735233e59 meowww (#1277) 2026-05-27 06:08:43 -07:00
NotSoToothless 82eed56cd9 meowww (#1276) 2026-05-27 06:03:08 -07:00
NotSoToothless 25ee9f98e7 meowww (#1275) 2026-05-27 06:00:23 -07:00
NotSoToothless c723081916 Auto merge dev → main (#1274)
* update homepage

* fix webhook missing restarts on PR merge (empty commits payload)

When GitHub fires a push event for a PR merge, the commits array is
sometimes empty, leaving changed_files as [] and skipping all restarts.
Fall back to git diff --name-only using the before/after SHAs from the
payload so changed files are always derived correctly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 05:56:17 -07:00
NotSoToothless 9dab5c09ed update homepage (#1273) 2026-05-27 05:47:32 -07:00
deploy 95f38a9b0d add supporters section to homepage
Shows paying squadrons as pill links (SHORT // LONG → /squadrons/<short>) above the footer, with a 15-min server-side cache backed by entitlements DB + SQUADRONS.json.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 12:38:58 +00:00
NotSoToothless f042fd4d8a whoops (#1272) 2026-05-27 04:37:03 -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 899dfbb9e5 add game ID filter to /games search page (#1260) 2026-05-18 12:34:46 -07:00
NotSoToothless f7b5538d7b restore SREBOT/web/ accidentally wiped by auto-merge #1258 (#1259) 2026-05-18 12:28:23 -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
Heidi 818ad8aea7 api update. 2026-05-16 12:00:19 +01:00
NotSoToothless df89753b93 remove srebot embed image (#1255) 2026-05-15 21:28:23 -07:00
NotSoToothless a78614644a update srebot embed (#1254) 2026-05-15 21:24:40 -07:00
NotSoToothless fb38495a68 update srebot site embed stuff (#1253) 2026-05-15 21:11:11 -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
NotSoToothless 2ad892482c mrowww (#1246) 2026-05-14 16:51:23 -07:00
NotSoToothless dc09ca1f0f mrowww (#1245) 2026-05-14 16:48:31 -07:00