• Mahmoud Aglan's avatar
    fix(online): matchmaking for ludo, domino and backgammon actually matches · 1b6fe1dc
    Mahmoud Aglan authored
    Found by the gameplay pass, verified against production with throwaway
    accounts (31/31 checks):
    
    - ludo: the queue filtered and ordered on created_at, a column ludo_queue does
      not have, so no two players were ever matched; five stale rows from July to
      September were also deleted.
    - domino and ludo status/get decoded jsonb columns that already arrive as
      arrays: a PHP 8 TypeError, so the waiting player never learned of the match
      and every live poll failed.
    - all three: the zero-UUID claim placeholder was reported as a found match and
      its row deleted; failed inserts were reported as success; domino hands were
      renumbered by array_merge; complete passed p_winners as a string (the RPC
      refused it) and could pay twice. Complete now pays once, to seated players.
    - engine.js loads each game module independently, so one module failing to
      load can no longer stop the whole app from booting.
    Co-Authored-By: 's avatarClaude Opus 5.5 <noreply@anthropic.com>
    1b6fe1dc
ludo-match.php 15.4 KB