These commits are when the Protocol Buffers files have changed: (only the last 100 relevant commits are shown)
| Commit: | 973b901 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | GitHub | |
Merge pull request #1870 from woogles-io/australian-draw-be add the australian draw tournament pairing method
The documentation is generated from this commit.
| Commit: | fade188 | |
|---|---|---|
| Author: | Andy Kurnia | |
add the australian draw tournament pairing method Adds the Australian Draw pairing method: a transparent, hand-playable, deterministic alternative to the matching-based methods. Round 1 is a casement draw (top half vs bottom half); every later round pairs the top remaining player with the highest-standing legal opponent that still leaves the rest of the field pairable, backtracking when a choice paints the draw into a corner, so a repeat-free draw is always found when one exists. A new 1-based reset_round round control (proto field 20) lets a director forgive meetings before a day boundary: a meeting in round r is avoided iff r >= reset_round (1 = avoid all prior, the default; >= current round = King-of-the-Hill). When a strict pass cannot pair the field the reset point is relaxed one round at a time, then errors cleanly if still impossible. An odd field is paired by padding it with a phantom bye at the bottom of the standings and running the even algorithm; whoever the phantom is paired with takes the real bye, unifying the odd and even cases with no special-casing. Backend and generated proto only; the director-UI changes are a separate follow-up PR. Co-Authored-By: Kofi Bingo (Claude Opus 4.8, 1M context) <noreply@anthropic.com>
| Commit: | 63fde47 | |
|---|---|---|
| Author: | Andy Kurnia | |
expose live time bank in active correspondence game lists The active-game payloads carried incrementSecs/lastUpdate/playerOnTurn but not the live consumed time bank, only the initial bank config. That left clients unable to compute the real time until a player times out (per-turn allowance + remaining bank), so league games -- which have banks -- could not be sorted or flagged correctly. Add a repeated int64 time_bank field to GameInfoResponse carrying the current per-player bank remaining in milliseconds, and populate it in all three active-correspondence builders in the game DB store. The two user-facing queries (ListActiveCorrespondenceGamesForUser and ...ForUserAndLeague) did not select the timers column, so add it there; ListActiveCorrespondenceGames already loaded it. Regenerated sqlc models and the buf proto bindings (Go + TS). Co-Authored-By: Kofi Bingo (Claude Opus 4.8, 1M context) <noreply@anthropic.com>
| Commit: | 66c0339 | |
|---|---|---|
| Author: | César Del Solar | |
feat: add RevokeUserFromLeagues RPC and UI for league promoters Adds a new can_revoke_from_leagues permission (migration 202606030001) assigned to League Promoter and Manager roles. Implements the RevokeUserFromLeagues RPC in the league service, and extends the invite widget with a revoke section. Also adds a League Administration link on the leagues list page for users with promoter/admin access. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| Commit: | 26f2995 | |
|---|---|---|
| Author: | César Del Solar | |
fix(broadcasts): OTel spans for RPC cache, OBS transparent default, editor nav, annotation_done, NATS user ID - Add OTel trace spans to cachedFetch (cache.name, cache.hit attributes) - Default OBS URL builder transparent background to on - Show "Back to broadcast" link in editor when game is part of a broadcast - Hide "Unclaim" button when annotation is already done (add annotation_done to GetBroadcastGameContextResponse) - Fix SendGameEvent publishing NATS activity on in-game player ID instead of annotator UUID Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| Commit: | 601b631 | |
|---|---|---|
| Author: | César Del Solar | |
feat(broadcasts): full game dashboard with archive, standings, highlights, and split feed endpoint Adds a complete broadcast viewer dashboard with tab navigation (Pairings, Standings, Live Now, Recently Completed, Archive, Highlights), per-game stats materialized into broadcast_games, and a separate GetBroadcastAllGames RPC for the Archive tab so the heavy feed-walk payload is only fetched when needed. Archive shows every game (annotated + TSH feed-only) with Went First / Went Second columns derived from p12 feed data. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| Commit: | 9bc56cc | |
|---|---|---|
| Author: | jvc56 | |
Don't need to reserve since changes aren't in prod
| Commit: | e738d2f | |
|---|---|---|
| Author: | jvc56 | |
More AI review
| Commit: | 13f2dbe | |
|---|---|---|
| Author: | jvc56 | |
Expand Pairings API
| Commit: | cd41862 | |
|---|---|---|
| Author: | César Del Solar | |
Add FailJob RPC so volunteer workers can report corrupt games Add FailJob to AnalysisQueueService proto so macondo workers can immediately mark a job as permanently failed when they detect unrecoverable data corruption (e.g. a game with an 8-tile rack), instead of silently dying and letting the job waste its 3-attempt retry budget on other volunteers before ending with a generic timeout message. The existing unused FailJob SQL query (analysis_jobs table) is now wired up through the new connect-rpc handler in pkg/analysis/service.go. Auth is via X-Api-Key; the job must be claimed by the calling worker. Error messages are truncated to 1 KB and surfaced via GetAnalysisStatus (error_message field), which is already exposed to clients. Also regenerates all buf-generated Go/TS files (minor version drift). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| Commit: | 4b7bfbd | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
Copy division names, game settings, and round controls from source tournament When copying a tournament, the wizard now fetches per-division data (game request and round controls) via GetTournamentMetadata and applies them on creation. If all divisions share the same game settings they are copied as the global request; if they differ a per-division copy is stored and a note is shown to the user. Adds TournamentDivisionSummary to the proto and GetRoundControls() to the DivisionManager interface. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| Commit: | 293e7bc | |
|---|---|---|
| Author: | Claude | |
| Committer: | César Del Solar | |
Add self-serve tournament creation with wizard UI - Add /tournaments route with step-by-step tournament creation wizard - Step 1: Choose IRL vs online mode, configure monitoring - Step 2: Set name, slug, schedule, description (markdown) - Step 3: Configure divisions and game settings (lexicon, time, etc.) - Step 4: Review and create - Add tournament copy feature: directors can copy settings from their past tournaments to quickly create similar events - Add rate limiting: max 3 tournament creations per week for regular Tournament Creator role; unlimited for Tournament Manager role - Add 'toc' permission to JWT for Tournament Creator/Manager roles so frontend can gate the creation UI - Add GetMyTournaments RPC to fetch tournaments where user is director - Add CountRecentTournamentsByUser and GetTournamentsByDirector to tournament store for rate limiting and copy features https://claude.ai/code/session_013uEnLRsznYmyUUbrTumdeX
| Commit: | ee9fbad | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
improve broadcasts: polish, safeguards, renames, and sorting - Director panel: remove Active toggle, add section dividers - LIVE badge: hide for finished (scoresFinalized) annotations; show UPCOMING when pollStartTime is in future - Broadcasts list (/broadcasts): sort live first, upcoming next (soonest first), past archived at bottom (last 5); add GetAllBroadcasts RPC - Announcements widget: split broadcasts into live/upcoming (≤14 days) sections; show up to 3 past broadcasts - Back to Broadcast button in gameroom topbar for annotated games (mirrors Back to League/Tournament) - UnclaimGame: block unclaiming a game that already has a complete annotation - End-time validation in Create/Edit broadcast forms (end must be after start) - Rename omgwords "broadcast" terminology to "annotated": CreateAnnotatedGame, DeleteAnnotatedGame, AnnotatedGamesResponse, etc. - Broadcast slots: migration, SQL queries, proto messages, Go service, and UI wiring - OBS integration: obs.go and obs_handler.go stubs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| Commit: | ef77286 | |
|---|---|---|
| Author: | César Del Solar | |
fix broadcast socket notifications and unclaim flow - Fix NATS topic prefix: channel-broadcast-{slug} → channel.broadcast-{slug} so messages match the socket server's channel.> subscription and actually reach viewers on the broadcast page - Add BROADCAST_GAMES_UPDATED (type 53) proto message and event, distinct from BROADCAST_UPDATED, for when annotation state changes (claim/unclaim) rather than feed data; frontend only invalidates GetBroadcastGames on receipt - Emit BROADCAST_GAMES_UPDATED from ClaimGame and UnclaimGame RPCs so viewers see annotation column update instantly without waiting for next poll - Replace "Delete this game" with "Unclaim this game" in the editor for games that are part of a broadcast; calls UnclaimGame and navigates back to the broadcast page on success Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| Commit: | 21d44b7 | |
|---|---|---|
| Author: | César Del Solar | |
add live broadcasts feature Introduces the full broadcast pipeline: TSH feed polling, game annotation claiming, and a React UI for viewers, annotators, and directors. - New `broadcasts` service with TSH/newt JSON feed parser, in-memory cache, background poller (respects poll_interval_seconds / start+end time window), and TriggerPoll RPC for immediate refresh - DB: broadcasts, broadcast_games, broadcast_annotators, broadcast_directors tables; migration 20260402000001 - RBAC: `can_create_broadcasts` permission + Broadcast Creator role - IPC: BroadcastUpdatedEvent proto + NATS publishing on each poll cycle - Frontend: BroadcastsList, BroadcastRoom (division/round selector, 30s poll, annotation column), CreateBroadcast, EditBroadcast, BroadcastAnnotatorPanel, BroadcastDirectorPanel; broadcast context (name/div/round/table) shown in GameInfo widget for /anno and /editor routes - gitignore .env and .env.production; add conn-db.sh utility Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| Commit: | 7e9e29d | |
|---|---|---|
| Author: | César Del Solar | |
fix legacy analyses
| Commit: | db34c62 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
BestBot Analysis v2: interactive moves, endgame improvements, UI polish - Click sim/PEG/endgame/played/best moves to place tiles on board - Through-tile parenthesized display (e.g. QUI(T)c) in all move rows - parseMoveDescription: parses moveDescription strings into AnalyzerMove - Endgame: virtual board threads through sequence for correct through-tile resolution on moves 2+; deduplicate PV from alternative lines - SimPlaysTable: coord/move split columns, expandable ply details with per-play iteration count, σ notation for score stdev - PEGPlaysTable: coord/move split, alphabetically sorted outcomes, brighter green color, larger outcome font - Sort sim plays client-side (win% desc, equity tiebreak) to fix Pass ordering edge case from server-side extractTopSimPlays - Mistake Score help: 0.25% noise floor, BestBot disclaimer paragraph - Sync vendored macondo proto: add iterations/is_ignored fields, regen Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| Commit: | 38c9f4e | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
v2 progress
| Commit: | d3dbb62 | |
|---|---|---|
| Author: | Andy Kurnia | |
add per-season h2h game details to protobuf Co-Authored-By: Kofi Bingo (Claude Opus 4.6, 1M context) <noreply@anthropic.com>
| Commit: | 6badf93 | |
|---|---|---|
| Author: | César Del Solar | |
Add known_opp_rack field to vendored macondo proto Update vendored macondo proto to include the known_opp_rack field (field 22 in TurnAnalysis message). This field tracks opponent tiles revealed by challenged phonies during game analysis. This fixes the protobuf version mismatch that was causing volunteer workers to fail when submitting analysis results. Workers running newer macondo versions were sending results with this field, but the server's older proto definition didn't recognize it, causing "unknown field knownOppRack" errors. Changes: - Added known_opp_rack field to TurnAnalysis message in vendored proto - Regenerated Go and TypeScript proto files using go generate Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
| Commit: | 42fc000 | |
|---|---|---|
| Author: | Claude | |
Add head-to-head records to league roster and games list Add a new GetPlayerLeagueH2H API endpoint that queries a player's lifetime head-to-head record (W-L-D, spread) vs all opponents across all seasons of a league. Uses the game_players table with the idx_game_players_player_league_season partial index for efficient lookups. - League roster: Shows H2H column with the logged-in user's record against each player, color-coded green/red for winning/losing records - League games list: Shows lifetime record (W-L-D +spread) next to each opponent's name in the correspondence games sidebar https://claude.ai/code/session_01HVkPnN2U5MKQMidhNQPC82
| Commit: | 0423553 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | GitHub | |
Merge pull request #1735 from woogles-io/league-roster-history add league roster view showing all players across seasons
| Commit: | 9d1d03c | |
|---|---|---|
| Author: | Andy Kurnia | |
add GetLeagueRoster RPC for all players across all seasons new RPC returns every player who has ever played in a league with their division, record, rank, and result per season. rank is computed server-side using canonical standings sort. players registered but not yet placed return division_number=0. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
| Commit: | 9ebc12e | |
|---|---|---|
| Author: | Andy Kurnia | |
tighten league rank bounds using max-flow on actual pairings move rank computation from frontend to backend where it has access to the actual remaining game pairings. uses edmonds-karp max-flow to determine simultaneous feasibility: - worst rank: maximize players that can simultaneously surpass you, constrained by the game graph (a win for one player is a loss for the other) - best rank: minimize players forced above you by checking if within-set game points can be absorbed without exceeding your score adds best_rank/worst_rank fields to LeaguePlayerStanding proto, a lightweight GetUnfinishedDivisionGames query, and removes the O(n^2) client-side computation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
| Commit: | 954ad14 | |
|---|---|---|
| Author: | César Del Solar | |
real-time notification of analysis done
| Commit: | ae82350 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
add mistake index and analysis service improvements / dashboard improvements
| Commit: | 1d5d039 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
requeue analysis support
| Commit: | 722aa99 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
fadd analysis dashboard
| Commit: | 5906e57 | |
|---|---|---|
| Author: | Andy Kurnia | |
Merge branch 'master' into league-game-end-reason
| Commit: | 0c0ccb1 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
add some more testing
| Commit: | 4b0537b | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
clean up vendoring a little bit
| Commit: | b139055 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
analysis-service progress
| Commit: | 3005d18 | |
|---|---|---|
| Author: | Andy Kurnia | |
return game end reason for league games
| Commit: | dfb790a | |
|---|---|---|
| Author: | César Del Solar | |
force-forfeit league cheaters
| Commit: | 3dbccc6 | |
|---|---|---|
| Author: | Andy Kurnia | |
show league turn
| Commit: | 34a4db0 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
fix force finished league games
| Commit: | ebb5291 | |
|---|---|---|
| Author: | César Del Solar | |
add wespa titlists, refactor org assignment some more
| Commit: | a8a74e9 | |
|---|---|---|
| Author: | Claude | |
Add optional credentials support to admin organization assignment - Add optional credentials field to ManuallySetOrgMembershipRequest proto - Update ManuallySetOrgMembership to accept and use credentials if provided: - If credentials provided: use authenticated fetch (validates creds) and store encrypted credentials for future title refreshes - If no credentials: use public API/database (existing behavior) - Update admin frontend to show optional credential fields for NASPA/ABSP - Credentials are stored encrypted so titles can be refreshed automatically
| Commit: | 0809981 | |
|---|---|---|
| Author: | César Del Solar | |
make 5-pt challenge per word in editor
| Commit: | 0d5812e | |
|---|---|---|
| Author: | César Del Solar | |
Fix opponent rack sync and enhance tile availability errors Changes: - Add opponent_rack field to ServerOMGWordsEvent and ServerGameplayEvent to keep frontend in sync when rack inference borrows tiles from opponent - Backend now populates opponent_rack for annotated games - Frontend updates opponent's rack from socket messages - Enhanced error messages for tile availability to be user-friendly (e.g., "the tile I is not available" instead of technical error) - Added debug logging for tile borrowing in TileInventory - Removed board mismatch comparison logging (not useful for challenged moves) This fixes the issue where opponent's rack would show phantom tiles after rack inference until page refresh. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
| Commit: | fffd47d | |
|---|---|---|
| Author: | César Del Solar | |
add a maintenance overlay and pause real-time games when deploying
| Commit: | 2d1033c | |
|---|---|---|
| Author: | César Del Solar | |
show warnings for players with low time banks in a division
| Commit: | a6cd5f6 | |
|---|---|---|
| Author: | César Del Solar | |
prototype socket subscription approach
| Commit: | 80b1698 | |
|---|---|---|
| Author: | César Del Solar | |
add time bank api call
| Commit: | 194d412 | |
|---|---|---|
| Author: | César Del Solar | |
fix: update league routing and announcements tab order - Changed league link path from `/league/${league.slug}` to `/leagues/${league.slug}` in announcements.tsx. - Moved the "Announcements" tab to appear after "Events" in AnnouncementsWidget. refactor: modify end-of-season outcome handling - Updated MarkSeasonOutcomes to preserve placement_status while only updating previous_division_rank. - Adjusted related functions and comments to reflect the new logic. test: enhance end-of-season tests for rank verification - Updated tests to verify that previous_division_rank is set correctly for players in both divisions. - Adjusted assertions to check standings outcomes based on new logic. chore: adjust rebalance scoring system - Increased priority score constants for placement statuses to improve ranking accuracy. - Updated the scoring formula to reflect new multipliers and ensure correct calculations. feat: add new promotion formula for divisions - Introduced a new promotion formula (PROMO_N_DIV_3) to allow for more flexible promotion calculations based on division size. fix: ensure placement status is included in league standings - Modified GetAllDivisionStandings to include placement status in the returned standings data. chore: update database queries for previous division rank - Added new query to update previous_division_rank in league_registrations. - Updated related models and store interfaces to accommodate this change.
| Commit: | c589a86 | |
|---|---|---|
| Author: | César Del Solar | |
feat: add GetRecentSeasons RPC to LeagueService - Introduced LeagueServiceGetRecentSeasonsProcedure for the new GetRecentSeasons RPC. - Updated LeagueServiceClient interface to include GetRecentSeasons method. - Implemented GetRecentSeasons in leagueServiceClient. - Added handler for GetRecentSeasons in NewLeagueServiceHandler. - Included unimplemented handler for GetRecentSeasons in UnimplementedLeagueServiceHandler. - Rearranged lobby to put chat on left again
| Commit: | c5ff31c | |
|---|---|---|
| Author: | César Del Solar | |
Extended league standings
| Commit: | 0f20308 | |
|---|---|---|
| Author: | César Del Solar | |
add tou export to tournaments
| Commit: | cba3bdd | |
|---|---|---|
| Author: | César Del Solar | |
fix various timing and other bugs
| Commit: | b617947 | |
|---|---|---|
| Author: | Claude | |
| Committer: | César Del Solar | |
refactor league scheduling: hourly runner, editable dates, new promo formula Major changes: - Add UpdateSeasonDates RPC to allow editing season start/end dates from admin - Refactor league tasks from midnight/8am to hourly runner with idempotency - Add task tracking columns (closed_at, started_at, etc.) to prevent duplicate runs - Spread game creation over time with batching (150ms delay per 10 games) - Change promotion/relegation formula from ceil(N/6) to ceil((N+1)/5) The hourly runner uses actual season start/end dates instead of fixed times, allowing different leagues to start at different times (e.g., CSW at 8am UTC, NWL at 8am Eastern).
| Commit: | ecac915 | |
|---|---|---|
| Author: | César Del Solar | |
organization integrations and titles
| Commit: | d314888 | |
|---|---|---|
| Author: | César Del Solar | |
feat: add SeasonZeroMoveGames and SeasonPlayersWithUnstartedGames responses to league service - Introduced SeasonZeroMoveGamesResponse and ZeroMoveGame message types in league_service.proto. - Added SeasonPlayersWithUnstartedGamesResponse and PlayerWithUnstartedGames message types. - Updated LeagueService with new RPC methods: GetSeasonZeroMoveGames and GetSeasonPlayersWithUnstartedGames. - Implemented client and handler methods for the new RPCs in league_serviceconnect.
| Commit: | d9af2c4 | |
|---|---|---|
| Author: | César Del Solar | |
allow moving league players between divisions for admins while seasons are SCHEDULED
| Commit: | 6e596d9 | |
|---|---|---|
| Author: | César Del Solar | |
Add UpdateLeagueMetadata RPC to LeagueService - Introduced the UpdateLeagueMetadata procedure in the LeagueService. - Updated LeagueServiceClient interface to include UpdateLeagueMetadata method. - Implemented UpdateLeagueMetadata in leagueServiceClient. - Added handler for UpdateLeagueMetadata in LeagueServiceHandler.
| Commit: | 9c9cb39 | |
|---|---|---|
| Author: | César Del Solar | |
Update generated protobuf files and enhance game state management - Updated generated files for various protobuf definitions to reflect changes in protoc-gen-es version from 2.10.0 to 2.10.1. - Added initial time bank management for correspondence games in the game reducer and timer controller. - Enhanced the ExaminableStore to calculate and manage time bank history for correspondence games. - Modified the GameHistoryRefresher to include initial time bank minutes. - Updated SQL queries and models to streamline game and league data retrieval, removing unnecessary structs.
| Commit: | 0ff3c27 | |
|---|---|---|
| Author: | César Del Solar | |
Remove executive_director field from tournaments Fixes #1478 The executive_director field was unused metadata that has been replaced by the directors field which allows multiple directors. Changes: - Add migration to drop executive_director column from tournaments table - Remove field from protocol buffer definition (marked as reserved) - Remove from all Go backend code (entity, models, stores, tournament) - Regenerate protocol buffers (Go and TypeScript) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
| Commit: | 1e8aa99 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
fix #836; confirm email address on acct creation
| Commit: | 86ad6e8 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
feat: Implement user invitation to leagues - Added InviteUserToLeagues RPC in LeagueService to allow users to invite others to participate in leagues. - Introduced InviteUserRequest and InviteUserResponse message types in the league service proto definition. - Updated LeagueServiceClient and LeagueServiceHandler interfaces to include the new invitation method. - Implemented permission checks for inviting users and role assignment for league access. - Enhanced chat functionality to support league channels in Redis chat store. - Updated user service to accommodate league ID in active chat channel requests. - Adjusted database queries and models to support new league-related functionalities.
| Commit: | f26f258 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
Refactor league standings and player management - Updated the logic for calculating the highest division number in standings.go to remove the rookie division check. - Removed the UpdateDivisionPlayerCount method from the mockLeagueStore and DBStore interfaces as it is no longer needed. - Modified the CreateDivision SQL query to exclude player_count, reflecting changes in the LeagueDivision model. - Removed player_count from the LeagueDivision struct in models.go. - Updated protobuf definitions to remove graduated placement status and added new messages for player season games. - Implemented GetPlayerSeasonGames RPC in the LeagueService, including request and response message structures.
| Commit: | 73f6260 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
feat: add memorial and FAQ sections to leagues UI - Introduced a memorial section honoring Elliott Manley in leagues list. - Added a Frequently Asked Questions (FAQ) section with collapsible panels to explain league mechanics, promotion/relegation, time banks, and rookie leagues. - Enhanced styling for the new sections in leagues.scss. refactor: update game state management to include time bank - Modified game reducer to handle time bank for players during gameplay. - Updated timer controller to manage time bank states for both players. - Adjusted game history refresher to include time bank information for both players. fix: streamline game end process and league data handling - Simplified the game end process by removing unnecessary checks for league store. - Enhanced game creation logic to properly handle league-related data during game instantiation. - Updated database interactions to include league, season, and division IDs for games. chore: update protobuf definitions for time bank management - Added time bank fields to GameHistoryRefresher and ServerGameplayEvent in protobuf definitions. - Ensured proper serialization and deserialization of time bank data for correspondence games.
| Commit: | be1beb0 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
lots of progress
| Commit: | 474de87 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
feat: add LeagueService client and handler implementation - Generated LeagueService client and handler for managing leagues, seasons, and player statistics. - Implemented methods for creating, retrieving, updating leagues, and managing seasons. - Added support for division standings and player league history. - Included unimplemented handler for methods not yet defined.
| Commit: | 6daf0c4 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
league progress
| Commit: | a7f4395 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
feat: Add league support for correspondence games - Updated ActiveGame type to include leagueSlug for league games. - Enhanced socket handlers to process OUR_LEAGUE_CORRESPONDENCE_GAMES messages and dispatch them to the lobby context. - Implemented league correspondence games retrieval in the Bus service. - Created a new query to fetch player season games, including scores and opponent details. - Modified game metadata retrieval to include league information. - Updated game-related SQL queries to include league and season IDs. - Added league ID and slug fields to GameInfoResponse for better game context. - Enhanced PubSub to handle league messages and forward them to the appropriate realms.
| Commit: | 3d2cf4b | |
|---|---|---|
| Author: | César Del Solar | |
show finished correspondence games
| Commit: | 99a6588 | |
|---|---|---|
| Author: | César Del Solar | |
show next game button for corres games
| Commit: | dc3ea34 | |
|---|---|---|
| Author: | César Del Solar | |
make read-only director -1, redo ghetto tools ui
| Commit: | 6640517 | |
|---|---|---|
| Author: | César Del Solar | |
upcoming tourneys widget
| Commit: | c3d1641 | |
|---|---|---|
| Author: | César Del Solar | |
updates to make sharing more seamless
| Commit: | 786588c | |
|---|---|---|
| Author: | César Del Solar | |
vdo ninja integration for tournaments
| Commit: | 2dace25 | |
|---|---|---|
| Author: | César Del Solar | |
feat(tournament): enforce COP pairing rules and improve UI for score editing - Added error message for using non-COP pairings after COP pairings in constants. - Refactored round controls UI to improve layout and added note about COP gibsonization. - Enhanced score editing functionality for both paired and self-paired players, allowing directors to edit scores directly from the UI. - Introduced CSS styles for score edit triggers to improve user experience. - Implemented validation in the ClassicDivision logic to ensure that once COP pairing starts, all subsequent rounds must also use COP pairing. - Updated error handling to include new error for non-COP pairings after COP.
| Commit: | a6fcad8 | |
|---|---|---|
| Author: | César Del Solar | |
show cop gibsonization on FE
| Commit: | 721ddb9 | |
|---|---|---|
| Author: | César Del Solar | |
refactor ghetto tools
| Commit: | 877a568 | |
|---|---|---|
| Author: | César Del Solar | |
complete integration
| Commit: | 8992734 | |
|---|---|---|
| Author: | César Del Solar | |
API request to unfreeze games
| Commit: | 4ceb19b | |
|---|---|---|
| Author: | César Del Solar | |
fix time bank behavior and make adjudication queries more efficient
| Commit: | 45166cf | |
|---|---|---|
| Author: | César Del Solar | |
fix sending seeks to established players
| Commit: | bb85fed | |
|---|---|---|
| Author: | César Del Solar | |
send seeks only to established ratings option
| Commit: | f0ac191 | |
|---|---|---|
| Author: | César Del Solar | |
qol fixes etc
| Commit: | 635dd98 | |
|---|---|---|
| Author: | César Del Solar | |
correspondence mode
| Commit: | d34ade6 | |
|---|---|---|
| Author: | César Del Solar | |
a sketch of sorts; will likely need to be redone after upgrading db tables
| Commit: | d83c906 | |
|---|---|---|
| Author: | César Del Solar | |
Add new efficient presence notification system - Add --new-presence-system feature flag for backward-compatible rollout - Add GetFollowersRequest/Response protobuf messages - Add broadcastPresenceChanged() for O(1) presence notifications - Add getFollowers NATS request handler - Maintain backward compatibility with existing system - Fix slow consumer issue by eliminating circular dependency The new system publishes single message per presence change to presence.changed.<userID> instead of creating individual messages for every follower. This eliminates the channel blocking that caused "slow consumer, messages dropped" errors during high activity. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
| Commit: | 976f06c | |
|---|---|---|
| Author: | César Del Solar | |
final tweaks for real?
| Commit: | 3930e14 | |
|---|---|---|
| Author: | César Del Solar | |
final tweaks; add edit button for anno game
| Commit: | 9c72bb6 | |
|---|---|---|
| Author: | César Del Solar | |
further tweaks
| Commit: | 9f97bf6 | |
|---|---|---|
| Author: | César Del Solar | |
game collections api / frontend
| Commit: | a8ebe52 | |
|---|---|---|
| Author: | César Del Solar | |
add snake pairing
| Commit: | 8234132 | |
|---|---|---|
| Author: | César Del Solar | |
tryna get simple cop runner working
| Commit: | 33a446c | |
|---|---|---|
| Author: | César Del Solar | |
Placeholder commit for COP in tournament mode A lot more changes are required, particularly around tournament settings such as prize bands, gibsonization spreads per round, player classes, and so on.
| Commit: | e49649d | |
|---|---|---|
| Author: | César Del Solar | |
add a periodic cancelled game deleter task
| Commit: | 34369c9 | |
|---|---|---|
| Author: | jvc56 | |
Verify CL activiation round
| Commit: | a60db67 | |
|---|---|---|
| Author: | jvc56 | |
Update control loss activation round from a bool to an int
| Commit: | b629dd2 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
checkpointing some progress
| Commit: | 7fb1940 | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
adding a flatbuffers model for a board and for a bag
| Commit: | a123eb3 | |
|---|---|---|
| Author: | César Del Solar | |
add delete unchecked in players behavior
| Commit: | 71306b8 | |
|---|---|---|
| Author: | César Del Solar | |
tourney register/checkin progress
| Commit: | 5c681be | |
|---|---|---|
| Author: | César Del Solar | |
Add RD29 lexicon
| Commit: | 762be5b | |
|---|---|---|
| Author: | César Del Solar | |
add more logs for tournament
| Commit: | e1baadd | |
|---|---|---|
| Author: | César Del Solar | |
| Committer: | César Del Solar | |
expose interleaved round robin as a pairing scheme in the FE
| Commit: | beb1a86 | |
|---|---|---|
| Author: | Ben Muschol | |
Claude code let's see what you've got