Changelog

The same list that signed-in hosts see under "What's New" in the host dashboard — a chronological record of every feature, improvement, and fix.

May 1, 20262026.05.01
  • NewCo-hosts on live tournaments — Tools drawer has a new Co-hosts section. Add an existing org member with one tap, or generate a 30-minute QR code that hands the running tournament off to anyone (signs them in or up, scopes them to this game only). Pro tier supports up to 5 co-hosts per session, league tier is unlimited. Built for the real case: host gets eliminated, hands the iPad to a friend, walks out the door.
  • NewSend co-host invite to a checked-in player's phone — pick from the list of checked-in players in the Co-hosts section and tap Send. The invite arrives as an emerald banner on their /live/[id] companion (no QR, no copying URLs). One tap on their phone signs them in or signs them up, and they land on the host view.
  • NewHand-off audit trail — manager_added / manager_removed events show up in the live timeline and end-of-tournament recap, so it's clear who took over and when.
  • ImprovedPrev / Next level buttons on the host clock are now gated by a confirm dialog showing the target level — no more accidental skips when you brush the screen mid-walk. Prev disables at level 1, Next disables on the last level.
  • ImprovedRevoke an accepted minigame is now confirmed — destructive action no longer fires on a single tap.
  • ImprovedNew-tournament setup form: expected-players input got its own labeled row with a wider field, blind structure inputs (SB / BB / Ante / Min) bumped to a readable size on mobile, payout-percentage inputs likewise. Double-digit values fit cleanly on Samsung Android portrait.
  • ImprovedLogin page now honors a `?next=` parameter (relative paths only) so the co-host hand-off round-trip lands you back on the right page after sign-in.
  • FixedTools drawer trigger button on the host desktop layout no longer floats on top of the Cash strip's Add-ons cell — it's part of the row now.
  • FixedPer-session minigame photo cap (50 / session) was silently never enforced — the cap query was checking the wrong JSONB key. Now correctly counts uploads against the limit.
  • FixedTV clock and host phone Clock tab don't crowd the timer against header chrome on narrow Samsung-Android-portrait viewports anymore.
April 18, 20262026.04.18
  • NewRedesigned host UI — the admin is rebuilt from scratch around a Linear-inspired aesthetic: dense but calm, monochrome with a single emerald accent, status pills, slide-overs instead of modals. Feels like a serious live-ops tool instead of a collection of tabs.
  • NewNew Today landing page — first thing you see is a big Jump-in card when a tournament is running (with pulse + elapsed time), a stat rail of live/player/completed counts, and your five most recent tournaments. No session? Quick-start and From-template buttons are one click away.
  • NewNew Run screen — one URL per live session (/org/{slug}/run/{id}) with three panes: Clock, Floor (players + tables visual + request queue), and a Tools drawer. Desktop gets the full 3-pane layout; phone gets a bottom tab bar optimized for walking around with the session in your pocket.
  • NewDoor Mode — tap Door Mode from Run or Tools for a fullscreen check-in view. Big tap targets, live cash strip (collected / expected / outstanding), and a walk-up add sheet with name + optional PIN + payment method (Cash / Card / Venmo / Pay later).
  • NewPresent Mode (iPad-dock) — a new auth'd presentation mode at /run/{id}/present. Broadcast-scale clock with stat rail and payouts, and a tap-to-wake host controls overlay (pause/resume/next/prev). Wake-locked so it stays on during play.
  • NewRebuilt TV clock at /clock/{id} — Apple-Sports-style broadcast layout with a 12-column grid, huge tabular-nums clock, next-break countdown, top-3 payouts pill row, and a QR footer for the player companion.
  • NewCash Strip above the Floor — shows Collected / Expected / Outstanding / Rebuys / Add-ons at a glance, so you know where the cash reconciliation sits without doing math at 11pm.
  • NewSwipe to eliminate (on phone) — swipe left on a player row to bust them, with a 5-second undo toast. Swipe right to quick-check-in.
  • NewDeal calculator in the Tools drawer — chip counts, ICM (up to 9 players), chip-chop, and scheduled payouts side-by-side. Save as ICM, as chip-chop, or custom amounts — no more navigating away from Run during final-3 dealmaking.
  • NewDealer draw + Seat draw back in Floor — Dealer draw picks one random active player per table and marks them on the oval; Seat draw (renamed from Random Draw) reseats everyone with an 8-second Undo toast. Both accessible from Floor view on any device.
  • NewTable visual back on Floor — ovals with seat circles, dealer chips highlighted, click any seat to open a move-player sheet with open seats per table.
  • NewColor-up suggestions in the Tools drawer — shows which chip denominations can be colored off at the current level, with the wording 'Color off all X chips.'
  • NewMinigame results view in the Tools drawer — host sees every accepted minigame report with submitted photos, timestamp, and a revoke button. Badge count on the button tells you when something new landed.
  • NewInline rebuy + add-on row actions — the player row's ⋯ menu now has Add rebuy / Add add-on / Undo last rebuy or add-on, gated on the session's cutoff level so you can't accidentally record one past the deadline.
  • NewRequest queue accept/decline — pending knockout, rebuy, and minigame reports from the player companion now have explicit accept/decline buttons in Floor. No more wandering into a separate tab.
  • ImprovedAudio toggle + test chime moved to the Run header — visible on every device, with localStorage persistence so it remembers your preference across sessions.
  • ImprovedPersistent 'jump-back-in' badge in the topbar while a session is live — you can browse Players / Templates / Settings and always return to the live tournament in one click.
  • ImprovedNew session-aware status pills (Running / Paused / Break / Completed / Cancelled) with the same color language on Today, Run, TV, Present, and the live badge.
  • FixedDeal calculator penny-rounding — saving whole-dollar custom amounts over odd prize pools no longer produces off-by-a-cent differences on reload ($230 stays $230).
  • FixedAuto-advance no longer double-fires when the host has Run and Present open on two devices at the same time — an Idempotency-Key on the level-advance request collapses concurrent POSTs into one server-side mutation.
  • FixedPost-mutation UI refresh now always pulls fresh state — previously an internal debounce could silently no-op the refetch, making check-in / elimination / rebuy visibly lag until the next 5-second poll tick.
  • FixedUndoing a Seat Draw is atomic in the user's eyes — partial network failures keep the snapshot around and offer a Retry action toast so you can try again instead of being stuck in a half-restored state.
April 17, 20262026.04.17c
  • NewLive tournament history — the host page and player companion now both have a History tab showing level changes, eliminations, rebuys, pauses, deals, and minigames in real time. Knocked-out players watching from home get to follow the whole game.
  • NewProactive plan-status banner — your free-tier roster usage is shown on the new-session setup and check-in tab, so you know your ceiling before you hit it during check-in.
  • NewOffline indicator on the host page — if the host device loses network, a yellow banner appears so you know the clock and eliminations on screen may be stale.
  • ImprovedPaused clock now shows a yellow border and badge — easy to notice in a noisy room when the timer is frozen.
  • ImprovedEnd Tournament confirm now spells out that recorded eliminations are locked once you confirm, and the duplicate footer button is hidden when only one player remains.
  • ImprovedUNPAID badge on the check-in list and a warning on results entry when unpaid players are about to be excluded from the prize pool — prevents underpayments at the end of the night.
  • ImprovedWarning + confirmation when saving tournament results that already exist, so a stray tap doesn't silently replace them.
  • ImprovedBlind structure editor redesigned for mobile — larger buttons, no more forced horizontal scroll on 360px phones, break rows properly labeled for screen readers.
  • ImprovedLarge prize pools no longer overflow the stat cards on narrow screens (they format with thousands separators and tabular digits now).
  • ImprovedEmpty check-in state now shows a "No players yet" card with guidance, replacing the bare search box.
  • ImprovedConfirm dialogs now default focus to Cancel, trap Tab/Escape correctly, and announce themselves to screen readers.
  • ImprovedMinigame photo uploads verified by magic bytes (defense against disguised file types); per-session cap of 50 photos to bound storage abuse.
  • FixedPayout structures that sum to more than 100%, contain duplicate positions, or have negative positions are rejected at save time — no more overpayment surprises at the end of the night.
  • FixedRecording an elimination for a player who isn't checked in now returns a clear error instead of creating a phantom record that shows up in the leaderboard.
  • FixedDuplicate finish positions in results entry are rejected — every position must be unique.
  • FixedForgot your PIN and had the host reset it? You can use the new PIN immediately — previously a locked-out player could stay locked out for 15 minutes even after a reset.
  • FixedTwo venues running tournaments behind the same Wi-Fi no longer share a rate-limit quota — each tournament session gets its own bucket.
  • FixedMalformed requests return a clear 'invalid input' error instead of a generic 500 server error across every mutating endpoint.
April 17, 20262026.04.17b
  • NewAgent quickstart — POST /api/quickstart creates a trial organization, a demo tournament, and an admin API key in a single request. The returned Bearer token can immediately run the clock, add players, and record eliminations. Trial orgs auto-delete after 7 days.
  • NewDaily cleanup cron — expired trial orgs and their ghost owners are swept at 03:00 UTC.
  • NewAgent-oriented documentation — /llms.txt rewritten to lead with the quickstart curl; new /llms-full.txt with full agent workflows, error-code table, idempotency rules, and rate-limit summary.
  • NewMarketing pages — /agents, /features, /faq (with FAQPage schema), /about, /for/leagues, /for/home-games, /vs/the-tournament-director, /vs/blindvalet, and a public /changelog.
  • NewSEO foundation — /robots.txt (allow-lists GPTBot, ClaudeBot, PerplexityBot, and more), /sitemap.xml, generated OpenGraph + Twitter cards, and Organization/WebSite/SoftwareApplication JSON-LD on every marketing page.
  • ImprovedOpenAPI spec expanded with the /api/quickstart operation, per-tag guidance written like agent instructions, and an info.description that leads with the one-curl quickstart flow.
  • ImprovedLanding page rewritten around the league thesis with a dual CTA (Start free + Try via agent) and a dedicated agent-ready callout card.
  • ImprovedPrivacy and Terms last-updated dates refreshed to April 17, 2026.
April 17, 20262026.04.17
  • NewMinigame photos — players can attach a photo (high hand, best bluff, etc.) when reporting a win. Images compress on-device to 100 KB before upload, display as thumbnails for the host, on the live Minigames tab, and in the end-of-tournament recap.
  • NewLive Minigames tab on the player companion — everyone can see who's winning each minigame in real time, with photo thumbnails and relative timestamps.
  • NewTV clock now shows active minigames in the footer so spectators know what's being tracked.
  • NewMinigame Wins card on the completed-session page — chronicles every accepted minigame by game name with winner photos.
  • NewCareer Minigame Wins card on player profiles — tallies wins per minigame across all tournaments, plus the 10 most recent with photos.
  • NewTournament Timeline — every completed session now shows a chronological recap (level changes, eliminations, rebuys, pauses, minigame wins, etc.), grouped by level with elapsed deltas from start.
  • NewExpected-player count on setup — pair it with the planned table count and seat-on-pay fills the lower seats first (no more "seat 9 while seats 1-8 are empty").
  • NewPaste-to-add bulk minigames — paste a comma or newline-separated list in the setup wizard; duplicates are case-insensitively dedoped.
  • NewRevoke button on accepted minigames — host can retract an accepted result (e.g., inappropriate photo) and the timeline records it.
  • ImprovedManual "Next Level" button now behind a confirm dialog showing the upcoming blinds — stops accidental mid-level jumps on mobile.
  • ImprovedClock level changes are server-debounced (2-second cooldown) to prevent two devices racing to advance simultaneously.
  • ImprovedAuto-advance guard rewritten — stale client state can no longer re-fire "next level" after the server already advanced.
  • ImprovedICM calculator for >9 players now distributes tail prize positions by chip stack instead of splitting equally — bigger stacks get proportionally bigger tail shares, matching real ICM intuition.
  • ImprovedRunning a tournament clone (rehost) now logs as a new session start in the timeline.
  • FixedAdding the player companion to your iPhone home screen now opens the correct game — previously it bounced to the marketing homepage.
  • FixedDismissing a minigame you've already revoked returns a clear 409 instead of silently succeeding.
April 9, 20262026.04.09
  • NewAdd to Home Screen (PWA) — ChipClock now installs as a standalone app on iPhone and Android with its own icon and full-screen mode
  • ImprovedMobile UX overhaul — larger touch targets on host dashboard (action buttons, elimination buttons, table controls), bigger self-service buttons on companion page
  • ImprovedHost bottom bar redesigned — End Tournament separated from safe actions to prevent mis-taps
  • ImprovedClock page refinements — wider volume slider, larger seat finder, session name truncation
  • ImprovedCompanion page — larger PIN submit button, more readable stats labels, tappable Switch button
  • ImprovedBlinds editor scrolls horizontally on narrow screens instead of cramming columns
  • ImprovedSecurity headers added — Content-Security-Policy, X-Frame-Options, referrer policy
  • ImprovedCORS restrictions on public API endpoints
  • ImprovedRate limiting added to Stripe checkout, billing portal, and clock mutations
  • FixedPIN set-pin endpoint now requires nickname match to prevent PIN-spraying
  • FixedClock page shows error for any failed API response, not just 404
  • FixedE2E test selectors updated for pricing, privacy, landing, and clock pages
April 1, 20262026.04.01
  • NewPlayer PIN identity — players scan the QR code and sign in with a personal 4-digit PIN for a personalized companion experience
  • NewAuto-seat display — identified players see their table and seat automatically, no searching needed
  • NewHost can pre-set PINs when adding players and share game links with PINs via clipboard
  • NewBulk "Copy All Links" — one button copies all player invite links with PINs
  • NewMinigame lifecycle — host can end/restart individual minigames during the tournament
  • ImprovedRebuy and minigame self-service pre-populated with player identity (fewer taps)
  • ImprovedMinigame reporting: primary "Report Hand" button for your own wins, secondary option to report for others
  • ImprovedDealer seat highlighted yellow with "D" badge in table map
  • ImprovedQR code enlarged for TV scanning, overlay now mentions PIN sign-in
  • ImprovedPIN status indicators on host check-in list and roster page
  • ImprovediOS safe-area-inset support for notched iPhones
  • ImprovedAndroid back button closes modals instead of navigating away
  • FixedRoom code system removed — replaced entirely by personal PINs
March 31, 20262026.03.31b
  • NewSetup template editing — full edit page for tournament templates with blind structure, payouts, and all settings
  • NewPlanned table count — choose how many tables before the tournament starts so seat-on-pay distributes players evenly
  • NewMinigame results card — accepted minigame reports now visible in the Tournament tab
  • ImprovedTemplate list shows summary info — level count, break count, blind range, and estimated duration
  • ImprovedLoading a template now also loads blinds and payout structure
  • ImprovedPlayer companion clock enlarged for mobile readability
  • Improved"Setups" renamed to "Templates" in navigation for clarity
  • FixedFixed crash on Templates page caused by double-encoded tournament data
  • FixedImproved error messages — errors now show what went wrong instead of a generic message
March 31, 20262026.03.31
  • NewSeat on Pay — automatically assigns a random seat when players pay, so everyone knows where they're sitting before the tournament starts
  • NewBubble & ITM indicators — host mode shows a banner when approaching the money and when players are in the money
  • NewPause messages — add a custom message when pausing (e.g. "Dinner break — 20 min") that displays on the TV clock
  • NewNext break on TV clock — footer shows how many levels until the next break
  • NewPayout structure visible in host mode — see payout amounts during the tournament
  • ImprovedAverage stack stat card added to host mode stats bar
  • ImprovedBlind schedule always visible with auto-scroll to current level (no more clicking to expand)
  • ImprovedRebuy/add-on status badges — see at a glance if rebuys are open, closing soon, or closed
  • ImprovedPlayer request notifications visible from any tab, not just Tournament
  • ImprovedElimination search filter — quickly find a player to eliminate when 8+ remain
  • ImprovedClock +/- buttons now show "-1m" / "+1m" labels for clarity
  • ImprovedCopy Clock URL and Player Link buttons replace the static URL display
  • ImprovedDuration column added to blind schedule on host mode and player companion
  • FixedStrict equality checks across the codebase for more reliable comparisons
March 29, 20262026.03.29
  • NewPlayer companion page (/live/) — mobile-first live view with clock, blind schedule, find-my-seat, and self-service reports
  • NewSelf-service knockout reports, rebuy requests, and minigame reports
  • NewQR code on TV clock links directly to the player companion page
  • ImprovedProduction viewport audit — tested on desktop, Android, and iPhone viewports
  • FixediOS Safari auto-zoom on inputs fixed (text-base on all public page inputs)
March 28, 20262026.03.28
  • FixedBoolean coercion root cause fix — isTruthy() handles string booleans from Supabase pooler
  • FixedAudio alerts now play reliably (AudioContext.resume() properly awaited)
  • FixedColor-up suggestions persist across level changes
  • FixedPenny rounding in prize pool calculations
  • Improved22-test tournament simulation passing end-to-end
March 26, 20262026.03.26
  • NewChip color-up alerts — suggests when to remove small denominations based on blind level
  • NewDealer draw — random dealer selection per table with visual indicators
  • NewAdd-on support with configurable cutoff level
  • NewBounty tracking (standard and progressive)
  • ImprovedTable oval SVG with seat positions and dealer marker