Changelog
1.0.0 - Initial release
October 2026
First public release: a complete 9-seat Texas Hold'em platform in plain PHP, with no database, a cash game plus a full tournament mode, strategic bots, an optional DeepSeek AI layer, an admin observer with moderation and a tabbed settings page.
Tournament
- Vote: every seated human votes the rules; bots play but do not vote. The buy-in is charged at the start, players who cannot pay are skipped.
- Blind clock: PokerStars-style ladder (1x, 1.5x, 2.5x, 5x, 7.5x, 10x … of the starting big blind) with a minutes-per-level setting.
- Scheduled breaks: every N minutes of play or at
:MMof every hour, with a countdown card on the felt and a paused blind clock (no level is skipped or repeated). - Late registration in blind levels or minutes, with a 🪑 Join late reg button in the top bar so a player can always get in.
- Rebuys with a limit and a window, and a 30-second decision offer (default answer: No; the table waits). Declining still allows a re-entry while late registration is open.
- Payouts: winner takes all, percentage or fixed amounts; the rounding leftover goes to 1st place.
- UI: tournament info card with the locked rules, a “running since” row, the next blind level on the felt, the stack in big blinds, rebuy badges and a “you are out” card with the place and the prize.
Game
- 2–9 seat No-Limit Texas Hold'em with full hand evaluation, blinds, dealer button, re-raises and side pots.
- All-in run-out with a live win-% for every player, and the current best hand named under the pot.
- Showdown hands named like a live room, including the tie-breaking cards ("Pair of Sevens, Ace kicker", "Ace high, King kicker") on the felt, in the game log and in the replay.
- Rabbit Hunt: after a fold-out the cards that would have come next are revealed (5 after a preflop fold-out, 2 after the flop, 1 after the turn), with an optional sound.
- Hand-strength meter under your hand name (0–100% against the players still in the pot, calculated in the browser).
- Table info badge in the top-left corner: players seated and, when present, how many are bots.
- Turn timer, sit-out / away with countdown, automatic removal after a long absence, free rebuy when a stack reaches zero.
- Multiple rooms through the URL hash (
index.php#RoomName). Only the default room plus the codes listed inPOKER_ROOMSare playable — an unknown name simply opens the default table and creates nothing on disk — and removing a room closes it gracefully: the current hand finishes, the stacks are settled, then the table is refused with a message.
Bots
- Preflop GTO range charts with a solver-generated and hand-tuned fallback chain.
- Monte Carlo equity (fast preflop, street-aware postflop), position-aware heuristics, c-bet / barrel / river logic and opponent modelling.
- Optional DeepSeek AI layer on top of the engine:
hybrid/ai_first/advisormodes, several triggers, a leash that caps how far it may deviate, confidence and budget guards, worker prefetch, auto-fallback to the engine line on any error, and it only fires while a real human is playing — off by default, so the bots are 100% rule-based and free until you add a key. - The AI decision cache is pruned automatically (files older than one hour are removed on write — no cron needed).
- Bot personalities and human-like timing — each bot draws one of four archetypes when it sits
down (TAG 40%, Rock 25%, LAG 25%, Station 10%) and keeps it for as long as
it plays: a different preflop range position, open size, price it will call, c-bet / barrel / bluff
frequency and check-raise trap rate. The wait before acting follows the style, the street and how close
the decision is (rare tanks, instant checks, capped at 4.5 s), and about four bots in ten buy extra
Monte-Carlo samples on borderline spots. Heads-up tables widen every bot automatically. One switch,
POKER_BOT_STYLES_ENABLED, restores the identical baseline engine.
Players
- Account registration and login with bcrypt password hashing, avatars, country flags and per-user themes.
- Table chat with moderation (configurable banned words, "leet" and separator matching) and anti-flood.
- Hand history with a street-by-street replay, including equity for all-in situations.
- Profile dialog (avatar, country, theme); guests can pick a theme from the top bar.
Admin & settings
- Observer page (
admin.php): the real table with every player's hole cards visible, a players panel with IP, Kick (5-minute re-sit block, optional message) and Ban (10 min / 1 h / 24 h / 7 days / custom minutes,0= permanent, optional reason, blocks the account and its IP), plus a bans list with live countdown, search and one-click Unban. - Settings page (
admin.php?cfg=1): four tabs — General, Table & Rooms, Game, Bots — with search across all tabs, table-style SETTING | VALUE rows, a one-line explanation and the shipped default for every option, dropdowns for the fixed-choice options, durations edited in seconds, and switches that are green when on / red when off. Options that depend on another one are hidden while it is off. - Validation in the browser and on the server: per-option ranges, the big blind must stay
bigger than the small blind, decimals survive a save, and a refused value writes nothing — the
generated PHP is syntax-checked before it replaces
config.php. - Player permissions:
POKER_BOTS_ALLOWED,POKER_BOTS_ADD_BY_PLAYERSandPOKER_BLINDS_BY_PLAYERSdecide whether players may seat bots and change the blinds; the admin observer always can. - Rooms are edited as chips (add / remove with confirmation) and the default room is a dropdown of the rooms that exist.
- DeepSeek credit shown as a badge on the AI card, read from the provider's balance endpoint.
Platform
- No database — JSON file storage with atomic writes and file locking.
- Single-file
setup.php: 2-step install, one-click cleanup and a full uninstall (data + config). - CSRF protection, login rate limiting, security headers, session hardening, optional HTTPS-only cookies.
- Error logging to
data/logs/php-errors.logwith a debug toggle. - 15 bundled CSS themes, auto-discovered; responsive layout with a dedicated mobile stylesheet.
- PHP 7.4 – 8.3, pure PHP — no Composer, no build step.
Documentation
- Overview, Installation, Configuration (every option with type, default and allowed range), Admin & Settings, User Guide, Troubleshooting and this changelog.