Commit Graph

136 Commits

Author SHA1 Message Date
NotSoToothless 0f8f22df29 update for spectra changes (#1363) 2026-06-29 11:05:51 -07:00
deploy 010e356dc8 pm2: add crash-loop governor to all apps; lower srebot max_memory_restart to 12000M
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 12:58:56 +00:00
FURRO404 a58a4e5c42 webhook: restart relay-gateway on SHARED/relay_gateway changes, tssbot-api on TSSBOT/web changes 2026-06-28 07:13:03 -07:00
FURRO404 0b3c6f478e fix: proxy without channel prefix for SREBOT, revert server.js rewrite 2026-06-28 06:51:33 -07:00
FURRO404 820073f95c add rewrite debug script 2026-06-28 06:50:43 -07:00
NotSoToothless 18faa665ec fix sre rewrite slice offset: /api/sre is 8 chars, not 9 (#1359) 2026-06-28 06:43:39 -07:00
NotSoToothless c1acafe65a fix sre rewrite: strip prefix before appending /api (#1358) 2026-06-28 06:31:54 -07:00
NotSoToothless ffb31f3bb1 holy meow (#1357) 2026-06-28 06:20:20 -07:00
NotSoToothless 377f7b8397 meow (#1355) 2026-06-28 05:01:33 -07:00
NotSoToothless 0f3943c8bd meow (#1354) 2026-06-28 04:57:09 -07:00
NotSoToothless cbb532a711 Auto merge dev → main (#1353)
* feat(gateway): hashed key store with grant + hot reload

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(gateway): channel registry + aiohttp app (keyed auth, whoami, per-channel ws/proxy)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(gateway): manage_keys CLI (add/list/revoke)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(gateway): retire srebot_external, run relay-gateway under PM2

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(gateway): point ecosystem + README at relay-gateway

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(tss): replay outbox producer for relay gateway

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(tss): forward processed games to relay outbox

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(tss-api): db helpers, app skeleton, info endpoint, fixtures

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(tss-api): player, games, history, search endpoints

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(tss-api): live, match, scoreboard, matches-search, maps

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(tss-api): filter-required leaderboards (players/vehicles/stats)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(tss-api): tournament list/detail/standings/matches

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat: wire tss upstream through gateway + tssbot-api PM2 app

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 03:38:20 -07:00
NotSoToothless ea5494bce0 add 3d to srebot (#1351) 2026-06-21 08:06:30 -07:00
NotSoToothless 8a084fb644 add 3d to srebot (#1350) 2026-06-21 07:54:35 -07:00
deploy 28a635438d feat(tally): fix live VC status updates and add permission pre-flight check
- 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>
2026-06-20 08:02:53 +00:00
deploy 661a71649a feat(locales): add tally VC-permission keys to all non-English locales
Adds no_vc_perm, no_vc_perm_diagnose, vc_perm_ok, vc_perm_header, and
vc_perm_not_in_vc to cs, de, es, fr, it, pl, pt, ru, uk, zh-CN.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 08:00:06 +00:00
NotSoToothless 062a9e2bdf meow (#1344) 2026-06-19 18:47:44 -07:00
deploy ac7c318899 fix(player): pick most-recent squadron_members row when uid has duplicates
A player who changed squadrons could end up with two rows in
squadron_members (old + new clan). Without ORDER BY, LIMIT 1
returned whichever row the primary-key B-tree (clan_id, uid) put
first — i.e. the lowest clan_id, which was the stale entry. This
caused the player page to show the old squadron while the homepage
search (which only reads player_games_hist) showed the correct one.

Fix: add ORDER BY updated_at DESC to both the API roster lookup in
server.js and the web fallback lookup in web/server.js, so the most
recently synced membership always wins.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 10:48:44 +00:00
NotSoToothless 25990c361f docs(tally): add tally to /help + website docs; translate to all locales (#1342)
- Add a 'Voice channel tally' group to /help with the three commands.
- Add a Voice Channel Tally section to the website docs (docs.ejs).
- Translate the commands.tally bot strings + help_group_tally into all 10
  other bot locales, and the new docs.* web strings into all 10 web locales.
- Fix stale need_one_input string (ign/squadron_short -> username/squadron).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 01:56:32 -07:00
NotSoToothless 3590b1f42f Auto merge dev → main (#1341)
* 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>
2026-06-19 01:33:29 -07:00
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 a70e7e0d74 meow (#1328) 2026-06-14 22:58:26 -07:00
NotSoToothless 7b22e70714 cache bruh (#1327) 2026-06-14 22:53:26 -07:00
NotSoToothless 186cd49649 update canvas winning team glow effect (#1326) 2026-06-14 22:47:37 -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 931b6f0be0 please (#1323) 2026-06-07 21:03:36 -07:00
NotSoToothless 763fadcaf4 please (#1322) 2026-06-07 21:02:09 -07:00
NotSoToothless a3776ec038 please (#1321) 2026-06-07 20:53:30 -07:00
NotSoToothless 28ce4f0541 please (#1320) 2026-06-07 20:44:44 -07:00
NotSoToothless b88f41c14c please (#1319) 2026-06-07 20:33:49 -07:00
NotSoToothless eaddb61b19 please (#1318) 2026-06-07 20:22:46 -07:00
NotSoToothless 80a6960681 please (#1317) 2026-06-07 20:16:59 -07:00
NotSoToothless d0c3abd79a please (#1316) 2026-06-07 20:11:16 -07:00
NotSoToothless cd9ed02902 please (#1315) 2026-06-07 20:04:27 -07:00
NotSoToothless a5fa8054c2 I HATE AI WEBSITE SLOPS (#1314) 2026-06-07 19:47:38 -07:00
NotSoToothless 197fb914f0 I HATE AI WEBSITE SLOPS (#1313) 2026-06-07 19:45:28 -07:00
NotSoToothless 61da699a4a I HATE AI WEBSITE SLOPS (#1312) 2026-06-07 19:42:05 -07:00
NotSoToothless 29d4b7a9df I HATE AI WEBSITE SLOPS (#1311) 2026-06-07 19:39:23 -07:00
NotSoToothless ded3ac4cf3 fuck u clippi (#1310) 2026-06-07 19:33:16 -07:00
NotSoToothless 77888d7b36 fuck my local repo chud life (#1309) 2026-06-07 19:30:34 -07:00
NotSoToothless d4179a3492 update timeline formatting (#1308) 2026-06-07 19:28:13 -07:00
NotSoToothless f60da2a32d update timeline locales (#1307) 2026-06-07 19:25:34 -07:00
NotSoToothless dd28d40a57 update timeline locales (#1306) 2026-06-07 19:21:51 -07:00
NotSoToothless e2d02a34b3 remove elo (#1304) 2026-06-05 12:57:20 -07:00
NotSoToothless a8317575a3 update battle log format (#1303) 2026-06-05 12:03:59 -07:00