YOUR TABLE, YOUR CHOICE
A small game. A clear data policy.
Updated October 28, 2026.
Your solo saved game stays in this browser
Essential browser local storage holds your current cards, game state, score history, and analytics preference. It lets you resume on this device. Clearing site data removes the saved game and preference. Private browsing or browser settings may prevent saving; keep the tab open in that case. Saves do not synchronize across devices.
Shareable rooms
Multiplayer needs server-side game state. Creating or joining a room stores a random room code, hashed seat keys, player occupancy, dealt cards, moves, scores, timestamps, and recent action IDs in private R2 storage. This essential game processing works even when analytics is declined. Each player receives only their own hand and public game information.
Your browser stores a private seat key and any pending move so it can reconnect safely. The invite URL contains a room code, never your private key. Anyone with the invite can join before play starts. Keep it among friends. Clearing browser storage loses your seat. The host can replace a player or close a room.
Rooms become inaccessible after 24 hours or when the host closes them. Stored room records are not automatically purged in this version; they remain private until owner cleanup. Closed rooms erase their game and seat keys. A short optional display name is stored with your private room. Names never enter play analytics. No email address or chat is required. Optional analytics never receive room codes, invite links, private keys, or card identities.
Optional anonymous analytics
Collection begins only after you choose “Allow analytics.” We honor Global Privacy Control and Do Not Track by leaving collection off. You can decline or change your choice through “Analytics preferences” in the game footer.
With fresh consent to source-aware analytics, a random first-party browser ID is kept in local storage for 30 days. It identifies this browser, not a named person, and is not shared across sites. A session ID lasts until 30 minutes of inactivity and survives navigation in the same tab. Events carry an ID, sequence, timestamp, fixed page category, and allowlisted gameplay or feature metadata. Coarse device groups are mobile, tablet, or desktop. Game identifiers never grant access to a room. We use these records to measure game completion, daily challenge use, and next-day/week returns.
We do not include the card you played, other card identities, text entry, keystrokes, uploaded files, names, email addresses, IP addresses, page referrers, or device fingerprints in our analytics records. The hosting provider necessarily handles connection information to deliver the site and may maintain its own operational logs.
Storage and owner access
Consented events are stored durably in the site’s private Cloudflare R2 bucket when configured. Reports require an owner-held secret and are not public. Reports reconstruct action sequences to find confusing steps. Collection is disabled if durable storage or the report secret is unavailable. No local-only log is presented as production analytics.
Records remain until the owner deletes them; this first version has no automatic retention purge. Reports are anonymous and cannot be linked to a named account. There are no accounts, ad networks, third-party analytics scripts, or payments in this version.
Local practice progress
Your completed games, successful calls, daily results, and play-day counts are saved on this browser for your personal progress display. These local totals work without analytics consent. Daily challenges use repeatable deals; their scorecards are personal practice results, not verified rankings.
Stop collection
Choose “No thanks” in Analytics preferences to stop future event submissions and erase the local visitor ID and pending analytics queue. Browser privacy signals (GPC and Do Not Track) also disable collection. We ask again before expanding older analytics consent to include source categories. This does not delete previously received anonymous records. Clearing browser storage removes your local game; it does not remove server records.
Back to the table →Device transfers, offline storage and abuse controls
Room transfer links contain a private one-time secret in the link fragment. The app removes that fragment from the address before tracking and sends the secret only to this site to claim the seat. Server storage keeps its hash for at most five minutes of validity. The destination browser keeps a pending claim until it can confirm success; the old key is then revoked.
The installable app caches public pages and code for offline solo practice. It never caches room API responses, private reports or analytics requests. Your browser still stores your own game and room credentials locally.
For abuse prevention, room creation and analytics writes use short-lived counters. The edge-provided network address is hashed with a server secret and an hourly value; raw addresses are not saved by this application. Counter records can be removed after three days. They are separate from optional play analytics.
Owner-only maintenance can remove expired or closed rooms and analytics received more than 30 days ago. Cleanup begins with a preview; it is not an automatic purge.
Recovery and learning updates
While a room is open, authenticated polls update a last-connected time. After a host has not connected for 90 seconds, another seated player may take over the room; the previous host is replaced by a bot and its old seat key is revoked. This lets an interrupted friends game continue.
Completed local results are saved in separate browser records so different tabs do not overwrite each other. Last-hand reviews stay in your local solo save or private room state; card identities are not added to analytics. With analytics consent, fixed lesson-section names, hint openings and correctness of optional practice choices help identify confusing steps. No free-text answers are collected.
Where players find the game
With fresh consent, visit events include only a fixed source category (direct, Google, Bing, DuckDuckGo, Reddit, Facebook, X, club, friend, or other) and a fixed campaign category (launch, learn, friends, daily, or none). We categorize a recognized campaign tag or referring hostname in browser memory; we do not save or send the full referrer, its path, search terms, arbitrary campaign text, or the page URL. A source describes an observed link or browser referrer, not a verified person or referral. Navigation within a session retains its source categories.
Guides now offer the same optional analytics choice as game pages. The owner report groups browsers by their first observed source in the selected date range and measures whether they return to visit or play on day 1 and day 7. Historical events without source metadata remain unknown. Declining or blocking analytics excludes your activity from these reports.
Practice and voluntary feedback
Solo undo and replay keep bounded local snapshots of the current hand. Opening an exercise stores the previous game separately in this browser. Assisted attempts do not add wins or alter recorded results; daily challenges and room games have no undo. Fixed practice actions may be counted only with analytics consent, without any card identities.
Feedback is separate from analytics and is sent only when you press Send feedback. It contains your selected topic, message, a random submission ID for safe retries and receipt time. If selected, diagnostics contain only the page category and a small/medium/large screen category. Do not send personal details, passwords or private links. Messages are stored in private R2, readable only with owner authorization. Owner maintenance can remove feedback older than 30 days; this is manual, not an automatic purge. Feedback submission is rate-limited using the same short-lived hashed network counters as other public writes.