Original: sky068/Niuniu, MIT License, pinned commit f58340a4d246bbb97619667e477dc3daa0bcfcc9. https://github.com/sky068/Niuniu/tree/f58340a4d246bbb97619667e477dc3daa0bcfcc9
Original Room, RoomMgr, User, protocol, myUtils, pokerUtils and timing config files remain byte-for-byte unchanged; root LICENSE retained. These are the actual complete server game flow: fixed owner-banker, private first3, player bet, final2, original15 hand-type comparison and coin/reward settlement, next hand. No evaluator-only substitute and no game-rule rewrite.
TapePlay2026 additions: local disposable guest identity (1000 isolated demo chips), WebSocket transport/origin/packet/action boundaries, public room metadata, SC/English presentation/CSS cards, source-derived hand-rank display, scripts/tests/source download. Original Game login gateway, app, routes, DB adapter/config and Cocos client/runtime are NEVER loaded. No database is contacted or emulated; the local guest adapter constructs original User and RoomMgr objects directly and follows original creator-is-banker semantics. Runtime uses only Node builtins plus exact ws8.22.0 MIT (separate lock/license).
Supported demo: TWO HUMANS, NO BOTS, default original room.mult=1. Bet menu10/20/50/100 matches source client. Original timings600ms/seat and20s betting retained. Source shoe is reused until insufficient cards. Disconnected rooms are closed by transport adapter, no wallet identity/resume.
KNOWN ORIGINAL DEFECTS, NOT SILENTLY PATCHED:3+ seats repeat cumulative banker.coins addition inside countReward loop; reproduced bets10/20 produce+10 total coin drift. Adapter caps2 seats and owner inserted first, where manual-bet settlement is zero-sum. Timeout sends bet10 but never assigns player._bet; timeout can settle0 instead. Bet manually within20s; timeout is NOT accounting verified/correct. Default multiplier1 means flat1x even special hand; source ranks still include silver/bomb/flower/five-small. No claim of audited universal Niuniu rules or full5-seat support.
Source randomness Math.random, no fairness/security audit; in-memory guests, no authenticated durable profiles. No official points/wallet/BEM/recharge/round fees/transfers/redemption. No monthly fees/grants. NOT VALUE-READY, never attach value. Source bugs must be addressed as explicit separate upstream changes or another qualified source before broader/value use.
No original images/avatars/audio/fonts/atlases/prefabs/scenes are served or distributed. Own CSS/system glyphs/system fonts only. Original server DB/config/secrets, legacy dependencies, user sessions and whole Cocos project are excluded. Source ZIP contains all exact running preferred core/adapter source, licenses, tests and lockfiles, not a complete original editor/DB deployment or canceled full handoff. The rejected hermitsgame two-hand comparison experiment is NOT this game and is not counted as a product module. No endorsement implied.

R11 adapter changes: always-visible two-human/manual20s/no-value warning; synchronous duplicate start/bet click lock released on authoritative table/error messages; wrapped cards/sticky actions; origin-local PWA manifest/generated TapePlay PNG icons/network-only worker (NO fetch handler or Cache API). No original mechanics changes. Parent native one manual10 settled hand and667x375 core screen flow passed; next-hand and SC/English verified in realWS DOM only;375 native portrait and actual installation remain unverified.

R12 transport only: the browser socket follows the page origin (ws or wss) instead of a fixed loopback URL. Optional https origin is allowlisted only together with the other module origins; every other Origin is still rejected. Two humans, no bots, manual bet within 20 seconds, and the original 3+ / timeout defects are unchanged. Configuring that origin does not host the game, install it, or attach value.
