Skip to content

v1.6.0: GUI Gate 2 (range editor, RvR, node-locking, asymmetric, slider tiers)

Choose a tag to compare

@amaster97 amaster97 released this 23 May 20:14
· 278 commits to main since this release

⚠️ CRITICAL — v1.6.0 .dmg is BROKEN. Do NOT launch from Finder.

The .app bundle has a multiprocessing fork-bomb: launching from
Finder causes uncontrolled process spawning that can freeze your Mac.
Root cause is a missing multiprocessing.freeze_support() call in
scripts/pyinstaller_entry.py. The patch is in flight on
PR #42; a
repackaged .dmg will ship in v1.7.2.

Until v1.7.2, install from source instead:

git clone https://github.com/amaster97/poker_solver.git
cd poker_solver
pip install -e .

Full RCA: docs/dmg_spawn_loop_rca_2026-05-26.md on the
pr-78-dmg-freeze-support-fix branch.


v1.6.0 — GUI Gate 2

User-facing surfaces for v1.3.0+ engine features that were previously library-only.

New in this release

  • Range editor: per-hand weight editing (drag/paste/preset ranges); state round-trips through solver
  • Range-vs-range UI: in the GUI, not just the library
  • Node-locking controls: freeze a node's strategy and re-solve against it (exploitative analysis primitive)
  • Asymmetric contributions input: per-player pot contribution (for non-standard stack/contribution scenarios)
  • Exploitability slider: Draft (1% pot) - Standard (0.5%) - Tight (0.25%) - Library (0.1%) - tier numeric defaults measured against the real solver

Install

git clone https://github.com/amaster97/poker_solver.git
cd poker_solver
pip install -e .

See README.md for full quick-start and library usage.

macOS installer

Poker-Solver-1.6.0-arm64.dmg attached below. Apple silicon (arm64) only. Adhoc-signed (no Apple Developer enrollment) — on first launch, right-click → Open, or System Settings → Privacy & Security → Open Anyway.

For users who prefer source install, pip install -e . is supported and recommended for non-arm64 Macs.

Known issues

  • .dmg installer: CRITICAL — DO NOT LAUNCH (see warning at top of these notes). Source install via pip install -e . is the only safe path until v1.7.2 ships a repackaged .dmg. The earlier "experimental" framing here understated the danger.
  • v1.5.0 Brown apples-to-apples acceptance test: currently fails at deep-cap facing-raise spots. Per docs/aggregator_vs_true_nash_explainer.md, three independent code reviews verified the vector-form CFR is structurally faithful to Brown's reference; an empirical divergence at deep-cap A83 spots is under investigation (root cause identified: a non-zero-sum vs zero-sum payoff convention divergence; documentation + tolerance widening in v1.6.1 candidate).
  • Range fractional-frequency: set-membership only in current Range class. Refactor scoped for a future release.

What's next

  • v1.6.1: engine bundle (Python delegate + paired cap-guard + tolerance docs)
  • v1.7.0: aggregator->vector wiring (solve_range_vs_range_nash API) + CLI subcommands