Changelog

New features, improvements, and fixes shipped to PuttScores.

v2.19.0 March 10, 2026

Security Hardening — Socket Auth, Secret Filtering & Input Whitelisting

  • Fix Added authorization guards to 15 Socket.io handlers — anonymous sockets can no longer mutate kitchen orders, delivery status, queue entries, or game state
  • Fix Analytics API no longer returns Cloudinary secrets, Telnyx API keys, Stripe Connect accounts, or user auth credentials
  • Fix Scorecard page no longer receives full Cloudinary config with API secret — only the useCustom flag is passed
  • Fix Course settings API now masks Cloudinary apiSecret and Telnyx apiKey in responses (shows last 4 characters only)
  • Fix Booking settings update now whitelists allowed fields to prevent mass-assignment via request body injection
  • Fix Individual booking update now whitelists allowed fields (status, notes, playerCount, date, time, customer info)
  • Fix Maintenance routes (asset, schedule, task create/update and issue reporting) now whitelist request body fields — 6 endpoints hardened
v2.18.0 March 10, 2026

Payment Safety Nets, Refund Accounting & Security Hardening

  • Fix Booking refunds now record transactions via balanceService.processRefund() — fixes incorrect pending balance after refunds
  • Fix Group booking refunds now record transactions via balanceService.processRefund()
  • New Webhook safety net for booking payments — recovers bookings if browser crashes after Stripe payment
  • New Webhook safety net for food order payments — recovers orders if browser crashes after Stripe checkout
  • New Connect account booking payment recovery via stripe-connect.js handlePaymentSucceeded()
  • Fix Live view status API now requires authentication — was previously public
  • Fix Debug/simulation endpoints gated behind NODE_ENV=production check
  • Fix TV preview demo route now requires authentication
v2.17.0 March 10, 2026

Scorecard Creation Fix & AI Wizard Repairs

  • Fix Fixed Create Scorecard and AI Create Scorecard buttons not responding — event handlers now use delegation for Alpine.js tab rendering
  • Fix Fixed broken HTML in AI Scorecard Wizard (missing closing tags on input and textarea elements)
  • New Telnyx Setup paid consultation service ($99/$199 tiers) with Stripe checkout and email confirmations
  • New Custom Filter Design consultation ($499) — step wizard in SmartSelfie dashboard settings
  • Fix Food order confirmation emails were never sent due to incorrect field reference (order.customerEmail → order.customer.email)
  • New Added missing receipt/confirmation emails across payment flows (setup jobs, tournaments, group bookings, marketplace templates)
v2.16.0 March 10, 2026

Billing Checkout Fix & Stripe Init Reliability

  • Fix Fixed Stripe.js race condition that caused 'stripe is not defined' during checkout
  • Fix Added recovery guard in checkout handler when Stripe CDN loads slowly
  • Fix Checkout success/cancel URLs now use BASE_URL env instead of hardcoded domain
  • New Billing checkout e2e test suite with authenticated session support
  • New Premium trial thank-you email template
v2.15.0 March 9, 2026

Payout System Fix & Payment Testing

  • Fix Payout Now uses transaction-based balance instead of Stripe balance API — no more $0.00 errors
  • New Payout Now marks transactions as paid and records full payout history
  • New Graceful fallback from instant to standard payout, with local reconciliation if Stripe already auto-paid
  • New Payment & payout integration test suite for kiosk, booking, and food ordering transactions
  • New E2e test suite for bookings, food ordering, mobile check-in, payments, and tournaments
v2.14.0 March 9, 2026

Per-Feature Tax System & Landing Page Updates

  • New Per-feature multi-tax-rate system for kiosk, bookings, food ordering, and tournaments
  • New Public changelog page
  • Fix Landing page carousel social proof section
v2.13.0 March 5, 2026

Pre-Game Hype & Dashboard Improvements

  • New Pre-game hype section with live stats on course welcome page
  • New Enhanced scorecard UX with overlay click-blocking and image improvements
  • Fix Dashboard widgets, Stripe Connect, tournament brackets, and billing improvements
  • Fix Course timezone for Games Today dashboard widget
v2.12.0 February 28, 2026

Voice AI & Scorecard Experience

  • New Voice AI phone agent for course inquiries
  • New Enhanced scorecard UX with tap sounds, refined transitions, and image download
  • New Premium PNG image download replaces PDF for scorecards
  • Fix Share always includes selfie image file
v2.11.0 February 22, 2026

Tournaments, SmartSelfie & Medals

  • New Tournament system updates with medal PNGs and dopamine engine
  • New Team name support in tournament registration, brackets, and TV views
  • Fix SmartSelfie share attaches image, camera loading animation added
  • Fix Filter generic carousel logos, tournament audit dashboard
  • Fix Fullscreen player camera overlay, shrink color selection balls
v2.10.0 February 15, 2026

Course Directory & Security

  • New Rebuilt course directory with improved search and filtering
  • New Improved leaderboard caching for faster load times
  • New Weekly recap emails for paid subscribers
  • Fix CORS scorecard delete, inline delete without page refresh
  • Fix Hardened security across multiple endpoints
v2.9.0 February 11, 2026

SmartSelfie System

  • New SmartSelfie AI photo booth with filters, branded frames, and engagement engine
  • New 5 frame templates: Classic, Polaroid, Neon, Minimal, Championship
  • New Custom filter upload system with multi-asset support
  • New Live camera preview in dashboard settings
v2.8.0 February 6, 2026

Photo Booth & Public API

  • New Photo booth system for selfie stations
  • New Public API v1 with interactive Try It console
  • New Putt Points loyalty rewards system
  • New Stripe Connect payout safety improvements
  • Fix Final scores page light/dark mode styling
v2.7.0 February 5, 2026

Billing, Sharing & Onboarding

  • New Share scores button on final scores and goodbye pages
  • New Shareable game result links
  • New Plan upgrade comparison UI in billing tab
  • New Onboarding wizard for new subscribers
  • New Booking-to-scorecard connection via QR code
  • Fix Billing tab checkout with Stripe.js