-
Mahmoud Aglan authored
The external Swiss service returns pairings carrying whitePlayerId and blackPlayerId and no names at all, so every board on a Swiss tournament rendered "لاعب" against "لاعب" and the rounds timeline showed a column of question marks. Its standings response does carry names, so the two are joined in LiveDataService and both engines' pairings are normalised to one shape before any view sees them — which is also where the array-into-string fatals on this page came from. Its stats were hardcoded zeros: a finished five-round, 64-player championship reported that no game had ever been played, and the vitals section fell through to "nothing has been played yet". The counts are now derived from the rounds. Tiebreaks arrive as an ordered tiebreakValues list rather than named columns; read either, and drop the column entirely when a tournament has none rather than printing a column of em-dashes. Co-Authored-By:Claude Opus 5 (1M context) <noreply@anthropic.com>
bc768f8b