- 08 Jun, 2026 3 commits
- 07 Jun, 2026 1 commit
-
-
Your Name authored
-
- 31 May, 2026 2 commits
-
-
Your Name authored
Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
-
Your Name authored
When the house balance is deeply negative, extract_balanced_safe() correctly sets target_payout=0 but the lower_bound floor (base_weight × 0.05) still gave expensive outcomes a non-zero selection probability. A 4000 payin with 10% cap (max redistribution 400) could still select KO1 at 23840 payout (~2.8% chance), causing a 19840 house loss. Add a hard exclusion: when target_payout ≤ 0 and an outcome's payout exceeds expected_redistribution (the cap limit), force its weight to 0 if at least one affordable outcome exists. This makes the cap a binding constraint, not just a hint. Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
-
- 29 May, 2026 5 commits
-
-
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:Claude Sonnet 4.6 <noreply@anthropic.com>
-
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:Claude Sonnet 4.6 <noreply@anthropic.com>
-
Your Name authored
Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
-
Your Name authored
Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
-
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:Claude Sonnet 4.6 <noreply@anthropic.com>
-
- 22 May, 2026 1 commit
-
-
Your Name authored
-
- 14 May, 2026 10 commits
- 09 May, 2026 4 commits
- 06 Apr, 2026 1 commit
-
-
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)
-
- 25 Mar, 2026 1 commit
-
-
Your Name authored
-
- 18 Mar, 2026 2 commits
-
-
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
-
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)
-
- 16 Mar, 2026 1 commit
-
-
Your Name authored
-
- 09 Mar, 2026 2 commits
- 27 Feb, 2026 1 commit
-
-
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.
-
- 24 Feb, 2026 3 commits
-
-
Stefy Lanza (nextime / spora ) authored
- Added meta refresh tag for redirect - Added visible countdown timer - Added link to homepage in redirect notice
-
Stefy Lanza (nextime / spora ) authored
Changed try_files fallback from /index.html to =404 so that non-existent pages properly return 404 status and show the custom 404 error page instead of serving index.html with 200.
-
Stefy Lanza (nextime / spora ) authored
- Create custom 404.html with combat sports theme - Features TKO (Technical Knockout) messaging - Includes animated boxing glove and fun stats - Configure nginx to use custom 404 error page
-
- 23 Feb, 2026 3 commits
-
-
Stefy Lanza (nextime / spora ) authored
- Updated Migration_067 to use correct SQL for double-encoded JSON - Fixed _set_match_status_and_result to properly handle UNDER/OVER results - When result is UNDER/OVER, store it in under_over_result field - Extract actual fight winner from winning_outcomes JSON The winning_outcomes column is stored as a double-encoded JSON string: - Outer layer: JSON string (e.g., '"[\"KO2\", \"WIN1\"]"') - Inner layer: JSON array of outcome names The fix uses JSON_UNQUOTE(JSON_EXTRACT(JSON_UNQUOTE(winning_outcomes), '$[0]')) to extract the first outcome from the inner array.
-
Stefy Lanza (nextime / spora ) authored
- When result is UNDER/OVER, store it in under_over_result field - Extract actual fight winner from winning_outcomes or match outcomes - Prevents match.result from being incorrectly set to UNDER/OVER - This fixes the recurring bug where result field showed UNDER/OVER instead of actual fight winner
-
Stefy Lanza (nextime / spora ) authored
- Added migration that fixes matches where result field contains UNDER or OVER - Parses winning_outcomes JSON to find actual fight winner - Sets under_over_result to the previous incorrect result value - Runs automatically at application launch
-