Skip to content

2.0.5

Choose a tag to compare

@ernestdefoe ernestdefoe released this 31 May 03:59

What's Changed

A maintenance release — performance, correctness, and convention fixes under the hood. No user-facing feature changes.

Fixed

  • Leaderboard totals can no longer be corrupted by a race. When two score updates for the same user ran at the same time, both could insert a duplicate all-time score row (the all-time scope isn't covered by the unique index, since SQL treats NULL != NULL). Score writes are now serialized per user and scope, so the duplicate can't happen.

Performance

  • Live scoring marks a game's picks correct/incorrect in two batched database updates instead of one update per pick — a popular game with hundreds of picks no longer fires hundreds of separate writes.
  • Admin test-data seeding loads existing picks in a single query instead of one existence check per user-per-game (which previously ran tens of thousands of queries and could time out on a real data set).
  • ESPN score sync now goes through the shared Guzzle HTTP client (honouring the host's proxy/SSL config) instead of a raw curl handle.

Internal

  • Migrations now use Flarum's createTableIfNotExists() / addColumns() helpers consistently.
  • Removed redundant manual wasRecentlyCreated bookkeeping in the schedule sync, relying on Eloquent's own value.