Forfeit games excluded from internal ELO calculation — Forfeit results (1F-0F, 0F-1F, 0F-0F) were incorrectly counted as played games in the internal ELO rating system. Per FIDE Rating Regulations B.02 Art. 5.1, unplayed games must not be rated. A player who received a forfeit loss would lose ELO points for a game they never played. Now only games actually played at the board affect ELO. Performance rating calculation also fixed. Thanks to Jared Oehrlein for reporting
v3.14.0MajorMarch 13, 2026
Fixed
Round Robin color balance completely rewritten — Fixed a critical bug where some players could be assigned the same color (White or Black) in every game of a Round Robin tournament. The old Berger algorithm used a broken color formula tied to board position. Replaced with a hybrid approach: odd N uses an "All Rotate" carousel algorithm (perfect color balance, diff=0), even N uses a Pivot Berger with greedy color balancing (optimal diff=1, max 2 consecutive same color). Validated with 210 automated tests covering N=2 to N=50
Round Robin BYE distribution — For odd number of players, the BYE now rotates fairly among all players (exactly 1 BYE each) and never falls on the top-seeded player in round 1
Round Robin round count — Auto-calculated rounds now correctly adapt to player parity: N-1 rounds with 0 BYEs for even N, N rounds with 1 BYE per player for odd N. Both "Players - 1" and "Equal to players" modes use the same optimal formula
v3.13.1MinorMarch 12, 2026
Improved
Duplicate tournament with custom name — When duplicating a tournament, a modal dialog now lets you choose the name for the new tournament instead of automatically appending "(copia)". The suggested suffix is translated in all 6 supported languages. The action also uses POST instead of GET for better safety
v3.13.0MajorMarch 12, 2026
New
Feedback email on tournament completion — When a tournament is concluded, the organizer automatically receives an email asking for feedback. The email is sent in the user's preferred language (6 languages supported) and replies go directly to info@chesspairings.org
Final standings attachment — The feedback email includes a standalone HTML file with the complete final standings table, including round-by-round results and all tiebreak values
Fixed
Export standings and CSV — Fixed HTTP 500 error on export_classifica.php and export_csv.php caused by missing i18n initialization
v3.12.0MajorMarch 11, 2026
New
chess-results.com open to all users — The chess-results.com integration is now available to all verified users, not just administrators. Every user can publish their tournaments directly to chess-results.com
Admin Chess-results.com link — A "manage" link next to the chess-results URL in the tournament page gives organizers direct access to their tournament's admin panel on chess-results.com
Upload rate limiting — Daily request quotas per user and global to ensure fair usage of the chess-results.com API
Improved
User data in published tournaments — The organizer name and contact email from the user profile are now included in the chess-results.com tournament data
Federation pre-selection — When publishing to chess-results.com, the federation code is pre-filled from the user's profile setting, avoiding the need to re-enter it each time
Streamlined navigation — Removed Predictor from main navigation menu
v3.11.0MajorMarch 9, 2026
New
chess-results.com integration — Publish tournaments to chess-results.com via XML upload. Encrypted authentication with environment-stored keys
Auto-upload — Tournaments are automatically updated on chess-results.com after each round generation, round deletion, and tournament conclusion
FIDE federation selector — Dropdown with 191 FIDE federations + sandbox mode (XXX) for testing. The selected federation is saved to the user profile and pre-selected for future tournaments
chess-results link in tournament page — When a tournament is published, a direct link to chess-results.com appears in the tournament header with the last upload timestamp
Manual upload — A button in the export menu allows forcing an upload to chess-results at any time
Improved
Player federation inheritance — Players added manually or from the club roster now inherit the tournament's federation (when set for chess-results) instead of defaulting to OWN/ITA
Enriched XML data — Arbiter, organiser, public tournament link on ChessPairings.org, and FIDE ID in the player id field are now included in the upload
i18n — All chess-results UI strings translated in 6 languages (it, en, es, fr, ru, cs)
v3.10.1PatchMarch 9, 2026
Fixed
RR group flow: missing action buttons — "Go to next round" and "Complete Group" buttons were not appearing after saving results in Round Robin sub-tournaments. The full flow now works: save → go to round N+1 → complete group on last round
Sequential round enforcement — It was possible to enter results for round 3 without completing round 2. A warning banner now blocks editing until previous rounds are complete
False 100% progress for Swiss groups — In the parent dashboard, Swiss groups with no generated games showed as "5/5 rounds complete" because empty rounds counted as complete. Now checks that games actually exist
Group navigation bar only on pairings tab — The ← Back to parent / A B C D S navigation bar was only visible on the pairings tab. Moved before tabs so it appears on all tabs (standings, cross-table, players)
Group dropdown forced pairings tab — Switching groups via the title dropdown always navigated to the pairings tab. Now preserves the current tab
BYE card unreachable on mobile — The last pairing card (always the BYE) was cut off by the mobile browser toolbar. Added bottom padding to the pairings list
Improved
"Complete Group" label — Sub-tournaments now show "Complete Group" (translated in 6 languages) instead of "Complete Tournament"
Swiss inherits tiebreaks from parent — The Swiss remainder group now inherits the parent tournament's tiebreak configuration instead of using hardcoded defaults
Auto-conclude parent — When the last sub-tournament is concluded, the parent tournament is automatically concluded
Public group navigation — The public tournament page now shows the group navigation bar with links to sibling groups and back to the parent
v3.10.0March 8, 2026
New
Auto Round Robin Groups — When a Round Robin tournament has more players than fit in a single group, the system automatically splits them into multiple RR groups (+ an optional Swiss group for remainders). Groups are created at tournament start based on player count and available rounds. Players are distributed by rating (Group A gets the strongest). All RR rounds are pre-generated using the Berger algorithm
Group navigation — Sub-tournaments include a navigation bar with lettered buttons (A, B, C... S) to quickly switch between groups, plus a dropdown selector in the tournament title. A "Back to parent" link returns to the main tournament dashboard
Group dashboard — Parent tournaments show a card-based overview of all groups with progress rings showing how many rounds have results entered
Improved
BYE placement — In odd-player Round Robin tournaments, the BYE is now always placed on the last board (previously could appear on board 1). The BYE result is automatically set to PAB (+-- = 1 point)
Smart round selection — When entering a pre-generated RR group, the page opens on the first round with missing results instead of the last round
Swiss group sizing — The distribution algorithm ensures the Swiss remainder group always has enough players to sustain the required number of rounds (sacrifices an RR group if needed)
v3.9.1PatchMarch 8, 2026
Fixed
Color abbreviations in standings — The standings page showed Italian color abbreviations ("B" for Bianco, "N" for Nero) regardless of the user's language. Since "B" means White in Italian but Black in English, this was actively misleading. Colors now display correctly in all 6 languages (e.g. W/B in English, B/N in Italian, Б/Ч in Russian)
Tiebreak column headers — Several tiebreak abbreviations were hardcoded in Italian ("SD" for Scontro Diretto, "Vit" for Vittorie, "Neri"). They are now translated per language (e.g. "DE" for Direct Encounter, "Win" for Wins in English). Hovering over any tiebreak column now shows a tooltip with the full name
Improved
Tiebreak tooltips — All tiebreak column headers across standings, public view, and export pages now show the full tiebreak name on hover, translated in all 6 supported languages
v3.9.0March 7, 2026
New
Manual Pairings / Draft Mode — Arbiters can now review and modify auto-generated pairings before publishing them. Enable "Edit pairings" when creating a tournament to unlock draft mode. Three levels of control: (1) generate pairings then swap players, invert colors, or remove/add games before publishing; (2) create a round entirely from scratch by manually pairing players; (3) mix both approaches. Non-blocking warnings alert the arbiter about repeated opponents, 3+ consecutive same colors, or large point differences
Manual Round creation — Start with an empty round and build pairings manually by selecting players. Assign BYE (full, half, or zero-point) to individual players. Useful for special situations where the automatic engine doesn't apply
Improved
Data safety — Draft pairings are fully isolated from published data. They never affect tiebreak calculations or standings until explicitly published by the arbiter
i18n — All 6 languages (IT, EN, ES, FR, RU, CS) updated with draft-related strings and the new tournament creation toggle
v3.8.3March 7, 2026
Fixed
Cross-table for Round Robin — The cross-table was showing a round-by-round view (columns = rounds) instead of a true player-vs-player grid. In odd-player tournaments, the BYE symbol "+" was placed in the round column, overwriting the real result against the opponent whose rank matched that round number. Now shows a proper cross-table with columns = opponents, diagonal marked "X", and no BYE in the grid
Export pages always in Italian — The standings export and cross-table export pages had all labels hardcoded in Italian, ignoring the user's language setting. Now all strings use the i18n system and respect the selected language across all 6 supported languages
v3.8.2PatchMarch 6, 2026
Fixed
Round Robin duplicate pairings — The Berger algorithm was using a point-based player order that changed between rounds, causing some players to face each other multiple times while never playing others. Now uses a stable order based on board number
v3.8.0FeatureMarch 3, 2026
New
Cross-table (Tabellone) — New tab showing a round-by-round cross-table with color-coded cells (white/black/bye), results, and opponent board numbers. Available in both admin and public views
Print-ready exports — Dedicated standalone pages for printing the cross-table and participant list, with orientation toggle and clean layout (like the existing standings export)
FIDE ID column — Participant list now shows FIDE IDs with direct links to the FIDE rating profile
Improved
Participant filter — Real-time search box to quickly filter participants by name or federation
Sortable rating — Click the Rating column header to sort participants by Elo (descending, ascending, or default order)
Mobile cross-table — Sticky player name column during horizontal scroll, hidden secondary columns on small screens
v3.7.0FeatureMarch 2, 2026
New
Improved access control — Strengthened permission checks across all tournament operations for better multi-user safety
PDF orientation toggle — Choose between landscape and portrait when exporting standings to PDF. Your preference is remembered
Smart date default — The tournament creation form now defaults the start date to today
Fixed
Club player removal — Removing club players from a tournament after reopening enrollments now works correctly
Toast messages — Fixed incorrect success messages appearing after certain tournament actions
v3.6.0InfrastructureMarch 2, 2026
Improved
New server infrastructure — Migrated to a faster VPS with PHP 8.3, MariaDB 10.11, and SSL certificates for both domains
Dynamic version display — The app version is now shown automatically in the footer
v3.5.0MajorMarch 1, 2026
New
FIDE-reference tiebreak engine — Standings are now calculated by the Gacrux TieBreakServer, the official FIDE reference engine validated on 120,000+ tournaments
28 tiebreak criteria — Expanded from 17 to 28 available tiebreaks, including Sonneborn-Berger Cut-2, Tournament Performance Rating (TPR), Perfect Tournament Performance, and more
bbpPairings v6 default — New tournaments now use the latest FIDE 2026 pairing engine by default
v3.3.0FeatureFebruary 28, 2026
New
Import from Chess-Results — Import existing tournaments from chess-results.com: players, rounds, pairings, results, and colors are all automatically retrieved and imported
Improved
Faster bulk enrollment — Enrolling 40-50 players via FIDE ID is now instant instead of timing out
Leaner codebase — Tournament creation reduced from 7 queries to 1, duplicate method eliminated with 150 fewer lines of code
v3.2.0FeatureFebruary 24, 2026
New
Support page — Submit bug reports, suggestions, and questions directly from the app. Replies go to your email
Payment tracking — Optional module to track registration fees: record payments, mark paid in one click, bulk actions, CSV export. Completely isolated from the tournament logic
v3.1.1ImprovementFebruary 24, 2026
New
Bulk delete club players — Select multiple club players and remove them all at once with a single confirmation
Reopen enrollments — Go back to the enrollment phase after starting a tournament (before generating Round 1) to add forgotten players
v3.1.0FeatureFebruary 24, 2026
New
Print pairings — Print-optimized A4 page for posting pairings in the tournament hall. Symmetric layout with board numbers, names, titles, ratings, and points. QR code links to the live public page. Auto-prints on load
v3.0.0MajorFebruary 21, 2026
New
Team Tournaments — Complete module for team chess tournaments, both Swiss and Round Robin
Configurable boards per match (1 to N) with automatic color alternation
Player rosters with FIDE search, lineup management per round, and substitutions
Match scoring: 2 pts for win, 1 for draw, plus individual game points
8 team tiebreaks: Game Points, Buchholz MP, SB, Head-to-Head, Wins, ARO, and more
Live public standings with 15-second auto-refresh and LIVE indicator
Full organizer dashboard with 5 tabs: Teams, Lineups, Pairings, Standings, Settings
Fixed
Critical Buchholz fix — Unplayed rounds were incorrectly included in all tiebreak calculations, inflating values
Default tiebreak order — New Swiss tournaments now use the standard FIDE order (BH Cut-1, SB, ARO, BH Total, Wins)
v2.0.0MajorFebruary 15, 2026
New
Opponent Preparation — Analyze your opponent's opening repertoire using games from chess.com, Lichess, and the FIDE OTB database. Powered by Stockfish + Leela Chess Zero with dual-engine analysis
ML Tournament Predictor — Simulate tournament outcomes round by round with animated reveals, upset indicators, and shareable results
v1.9.0MajorFebruary 10, 2026
New
Blitz Marathon module — Full round-robin blitz tournaments with QR-code result entry
Players scan their personal QR badge to submit results from their phone
Double confirmation: both players confirm, automatic dispute detection
Three result modes: QR single, QR double confirmation, or arbiter-only
Printable badges (6 per A4) with QR code, name, rating, and player guide
Live public standings for monitors and TV screens
Organizer dashboard with 5 tabs: Players, Pairings, Standings, Badges, Settings
v1.9.3FeatureFebruary 12, 2026
New
Redesigned navigation — Clean desktop nav with user dropdown (avatar, profile, settings). Guest users see Login and Register
Czech language — Full translation of 1,000+ strings. ChessPairings now supports 6 languages: Italian, English, Spanish, French, Russian, and Czech
PNG flag icons — Language selector now uses proper flag images instead of Unicode emoji (which are invisible on Windows)