← All Changes

Changelog

April 19, 2026

Player Cards, Public Profiles & Smoother Sign-Ups

Build a trading-card style player with your photo, height, positions, jersey size, and an optional username for a pretty profile URL. Every player now has a public page at /user/<username>with the card, a highlight reel, and a past-games ribbon — shareable with anyone. Buy a 5-pack on a game page and we’ll register you for the game right then. The video player walks first-time viewers through hearts, stars, and hotkeys, and the waiver hands you straight to Stripe instead of bouncing you back.

Player Profile Editor

  • New /profile/editpage where you can upload a photo, set your name, height (feet & inches), preferred positions (PG/SG/SF/PF/C), and jersey size
  • HEIC photos from iPhone transcode to JPEG on the server, so Chrome and Firefox on desktop can display them without a manual conversion
  • A live player-card preview on the right updates as you type — photo, name, height, and positions all re-render without a save
  • Your card shows games played and total highlight clips so the card doubles as a mini-stat-sheet
  • Claim a lowercase username (letters, numbers, underscores, hyphens) and your profile URL becomes saturdayhoopsnyc.com/user/yourhandle. Availability checks as you type, and the old /user/<uuid> links keep working forever
  • Uploading a new photo now shows a spinner over both the form thumbnail and the live preview card so you can tell the new image is processing instead of worrying the page has stalled on the old one

Public Player Profiles

  • Every player now has a public profile page at /user/<username>(or the UUID). Works logged-out — safe to share a link with anyone
  • Desktop: trading-card on the left, highlight reel on the right. Mobile: the card’s photo slot turns into the reel itself — tap the photo to play
  • “Past Games” is a horizontal ribbon of date chips — wraps to multiple rows on desktop, scrolls edge-to-edge on mobile, newest first. Each chip links to the game
  • A “That’s me” or “Teammate” tag on the card tells you at a glance whose profile you’re looking at, and rank pills from the highlight leaderboard sit next to the name
  • Starred filter defaults on when the player has bookmarked any clips — every profile gets a curated reel out of the box; a Starred/All toggle lets you expand to the full set on desktop
  • Share button copies the pretty username-based URL when one exists, with a ?from=share marker so we can measure how many visits come from shares
  • Everything server-renders so the card and reel paint on the first frame — no flicker between placeholder and data

Avatars & Dashboard Nudge

  • The top nav, dashboard, rosters, leaderboards, game detail pages, and every other logged-in view now prefer your uploaded profile photo over the Google avatar from sign-in; if neither is set, they fall back to your initial
  • New “finish your player card” banner prompts you to fill in missing fields. It shows on the dashboard AND the game detail page, so you can top off your profile right when you’re thinking about playing
  • The banner only asks for fields that affect gameplay — name, height, positions, and jersey size. Photo and username are opt-in, so the nudge doesn’t nag about them
  • Copy names exactly what’s left (“Tell us your height, positions, and jersey size.”) and disappears automatically once every field is filled

Game Tickets & Playbooks

  • Registered players on any upcoming game page now see a full editorial ticket at the top: big date hero, a live tipoff countdown (e.g. 3d 14h 27m), court, roster size, and an inline “invite a friend” CTA. Replaces the thin date row plus the separate Invite Friends card — less clutter, more identity
  • The post-checkout thank-you page is now the same ticket extended with a perforated “Playbook” section below containing the 7 house rules (First to 7, scoring, format, time limit, subs, fouls, disputes)
  • Players registered for a game get the ticket; unregistered viewers keep the lighter game layout so the pricing cards still lead

Video Player Tutorial

  • First-time viewers get a short handwritten walkthrough — what hearts do (like a clip), what stars do (bookmark your own), how the chronological strip works, and the keyboard shortcuts
  • Tutorials are paced so you don’t get a wall of tips at once — each cue waits until you’ve watched a few clips before showing up
  • Dismissals persist per-device — desktop and mobile each get their own walkthrough because the interactions differ
  • When the last clip in a reel finishes playing, it stays in view instead of sliding off-screen
  • New analytics events track plays, pauses, reactions, and tutorial dismissals so we can see which features land

Highlight Polish

  • Dashboard and game-detail reels now sort clips by likes descending, so the crowd favorite leads
  • On a profile, the clip strip adapts to the viewer: stars when viewing your own profile, player avatars (with the heart-to-like interaction) when viewing a teammate, and hidden entirely when logged-out — no more repeated faces or non-actionable icons
  • Mobile tap-to-play on the profile reel now starts the video on the first tap (Safari gesture rules), and the play/pause control stays in sync with the video element so it pauses on the first press instead of requiring two
  • Auto-advance between clips now works after a programmatic play (no more “first clip plays then freezes”)
  • Past-clip avatars in the profile video strip now show the player’s actual photo (or name/email initial) instead of a generic “P” placeholder

Pricing & Credits

  • Homepage, /pricing, and each game’s detail page share a single pricing component — the whole card is a link, and it routes into the right flow (register, checkout, or sign-in) depending on where you are
  • Buying a 5-game pack from a game’s pricing card now auto-registers you for that specific game and deducts the credit used — no more “paid, then still had to click Use Credit”
  • Subscribers no longer see the 5-game pack card (they should use their $15 member price instead). The Supporter card shows “Current Plan” once active
  • Fixed a bug where “Use Credit” showed up even when you didn’t have the 17 credits needed for a full game

Smoother Waiver Flow

  • After signing the waiver, you’re now handed straight to Stripe checkout (or registered automatically if you have credits) — no more bouncing back to the game page to click buy a second time
  • New 3-step progress bar at the top of the waiver (Sign Waiver · Pay or Register · Play) so you know what’s next
  • Added a media release section so new signers explicitly agree to us filming games and using their footage in highlights, player profiles, and promotional material; existing signatures stay valid

Smaller Things

  • Every button and link now shows a pointer cursor on hover — the default arrow was sneaking through in a lot of places
  • Homepage “hoopers” widget pulls avatars from players in recent past games instead of a static list
  • The admin “Upload” link is hidden on mobile since that workflow is desktop-only anyway
  • Nav header logo and mobile hamburger menu now align with the page content’s padding on mobile (previously they sat further from the viewport edges than the content below)
  • New analytics events on the profile flow track edit-page visits by source (banner vs direct), which fields get saved / skipped / updated over time, username availability checks + claim results, and how often share links drive actual profile views