1. 08 Jun, 2026 3 commits
  2. 07 Jun, 2026 1 commit
  3. 31 May, 2026 2 commits
  4. 29 May, 2026 5 commits
    • Your Name's avatar
      Fix game freeze when match_timer stops while new batch is being created · d9153035
      Your Name authored
      When the last match of a batch completed, match_timer immediately searched
      for the next match and found none (the new batch hadn't been created yet),
      stopping its timer. _monitor_game_state then created 5 new matches in the
      same fixture but returned without restarting match_timer — permanent freeze.
      
      Fix: after creating new matches in the same-day fixture, dispatch START_INTRO
      (sets match_timer's pending_match_id) then broadcast GAME_STARTED (restarts
      the timer). The restart only fires in this specific path; the cross-midnight
      fixture-switch path already restarts via _activate_fixture → GAME_STARTED.
      Co-Authored-By: 's avatarClaude Sonnet 4.6 <noreply@anthropic.com>
      d9153035
    • Your Name's avatar
      Fix duplicate WIN2 payout in extraction and bet resync after settlement · 488d84c7
      Your Name authored
      - BET CALC: deduplicate ExtractionAssociation outcomes per result before
        summing payout so WIN2 appearing twice no longer doubles the expected
        payout (14720→7360) fed into the extraction decision algorithm
      - _update_bet_results: add updated_at to all bulk losing-bet UPDATE calls
        so BetDetailModel.updated_at is set correctly on bulk paths
      - _update_bet_results: bump BetModel.updated_at on all parent bet records
        after settling, so the incremental sync (which gates on
        BetModel.updated_at > last_synced_at) will re-send previously-pending
        bets with their final win/lost result
      - Migration 071: delete duplicate (outcome_name, extraction_result) rows
        from extraction_associations keeping the lowest-id survivor, then
        recreate the table with UNIQUE(outcome_name, extraction_result) to
        prevent recurrence
      Co-Authored-By: 's avatarClaude Sonnet 4.6 <noreply@anthropic.com>
      488d84c7
    • Your Name's avatar
      Bump user_agent version to 1.0r34 · 70074569
      Your Name authored
      Co-Authored-By: 's avatarClaude Sonnet 4.6 <noreply@anthropic.com>
      70074569
    • Your Name's avatar
      Update 1.0.34 · c20d12f7
      Your Name authored
      Co-Authored-By: 's avatarClaude Sonnet 4.6 <noreply@anthropic.com>
      c20d12f7
    • Your Name's avatar
      Fix timing-attack: lock extraction result before signalling video player · 28ab7f76
      Your Name authored
      Commit match.result, under_over_result, and winning_outcomes atomically to
      the DB before sending PLAY_VIDEO_MATCH. A crash after this commit always
      recovers the same outcome on restart; before this fix, killing the process
      between extract_match() and the bet-settlement commit re-rolled the random
      draw on each restart, allowing an attacker to loop until a desired outcome
      was selected.
      
      Also adds an idempotency guard at the top of _handle_match_start: if the
      result is already committed (crash between lock and settlement), bets are
      re-settled from the stored result without re-extraction.
      
      Replaces the random fallback in _handle_play_video_match_done with a DB
      lookup of match.result, which is now always committed before the video
      player is signalled.
      Co-Authored-By: 's avatarClaude Sonnet 4.6 <noreply@anthropic.com>
      28ab7f76
  5. 22 May, 2026 1 commit
  6. 14 May, 2026 10 commits
  7. 09 May, 2026 4 commits
  8. 06 Apr, 2026 1 commit
    • Your Name's avatar
      Bump version from 10.0.29/10.0r29 to 1.0.30/1.0r30 · ec879339
      Your Name authored
      Updated version in:
      - mbetterclient/__init__.py (__version__)
      - mbetterclient/config/settings.py (user_agent and version)
      - mbetterclient/web_dashboard/app.py (app_version template global)
      - main.py (--version argument)
      - build.py (BUILD_CONFIG app_version)
      ec879339
  9. 25 Mar, 2026 1 commit
  10. 18 Mar, 2026 2 commits
    • Your Name's avatar
      Fix redistribution cap bug - subtract instead of add overdistribution values · f2058d85
      Your Name authored
      - Fixed bug in games_thread.py where overdistribution values were incorrectly
        added to the redistribution balance instead of subtracted. Now when we
        overdistribute (negative adjustment), we properly DECREASE the balance.
      - Added Migration_068 to reset redistribution balance to 0 after the bug fix.
      - Version bumped from 10.0.22 to 10.0.23
      f2058d85
    • Your Name's avatar
      Fix redistribution cap logic and bump version to 10.0.23 · 1fdcd2bf
      Your Name authored
      - Fix: Changed accumulated_shortfall += adjustment to -= adjustment in games_thread.py
        When overdistributing, we now properly decrease the redistribution balance
      - Version: Bumped from 10.0.22 to 10.0.23 (and 10.0r22 to 10.0r23)
      1fdcd2bf
  11. 16 Mar, 2026 1 commit
  12. 09 Mar, 2026 2 commits
  13. 27 Feb, 2026 1 commit
    • Stefy Lanza (nextime / spora )'s avatar
      Fix extraction to consider all results with equal payouts weighted by odds · 5c8af90a
      Stefy Lanza (nextime / spora ) authored
      When the CAP threshold is negative and all payouts are 0 (no bets placed),
      the system was only selecting one result (e.g., always DRAW) instead of
      considering all results with equal payouts.
      
      Changes:
      - Fixed fallback selection to include ALL results with minimum payout
      - Weighted random selection now properly considers all tied results
      - Outcomes with better odds (lower coefficients) have higher probability
      
      This ensures fair random selection among all possible outcomes when
      multiple results have the same payout, weighted by their odds.
      5c8af90a
  14. 24 Feb, 2026 3 commits
  15. 23 Feb, 2026 3 commits