Changelog
A running log of improvements to Restreak, newest first — grouped by theme and described as outcomes rather than blow-by-blow.
July 4–8, 2026
🔗 Share your whole day
- The share text now lists every sport you played today — one emoji line per sport, in the order you played them — plus your streak, instead of just the sport you hit Share on. Signed in? Plays from your other devices are included too.
⚾ MLB retires the dead-ball era
- Baseball puzzles now draw from 1961 onward — the expansion era: 162 games, the modern league. Pre-expansion rosters (1903–1960) carried no recognizable names for almost anyone, and nearly a third of MLB days were landing there. Those seasons are out of the daily game, Practice, the dropdowns, and the hints alike (the history stays in our data for a possible future mode).
- How to Play now states every sport's range — MLB 1961+, NFL 1966+, NBA and NHL 1967-68+.
- Transition hiccup, fixed the same day: the cutoff shipped while that day's roster — the 1947 New York Giants — was already live, briefly making it impossible to answer. New rule of the house: the answer is always pickable — a legacy roster from below the cutoff serves the full, unfiltered dropdowns.
✉️ No more verification dead ends
- The "stats are not being recorded" banner now carries a one-click Resend verification email link.
- Clicking a verification link finally tells you what happened: a green ✓ when it works, a clear message when the link is invalid or expired — pointing you straight at the resend link. (Expired links used to dump you on the home page with no explanation.)
📰 This changelog went public
- It now lives at /changelog, linked in the footer — the running record of how Restreak improves.
🧹 Polish
- Yesterday's Game reads cleaner: team on its own line on desktop, a labeled three-line format on mobile.
- The decade hint is now "Limit to Decade", matching its siblings.
- Accessibility: locked questions keep their labels and "pick a team first" instructions fully readable in both themes (only the control itself dims).
- Owner-side: an admin card tracks Hint Mode adoption and whether buying hints actually pays, across seven time windows.
June 19 – July 3, 2026
💡 Hint Mode (brand-new feature)
- Stuck on an impossible roster? Registered players can now buy up to three hints a day, in two chains: Limit to 10 Teams (unlocking Limit to 3 Teams) and Limit to Decade (unlocking Limit to 3 Seasons).
- Hints are priced into the score — the first costs 3 points, the second 2 more, the third 1 more — so leaderboards need no asterisks, and yes, negative scores are possible (a fully-hinted whiff is −6).
- A Hint Mode switch sits beside "Your Guesses" on the game page; the account page sets its default. Flipping it for a day never changes the preference.
- No pop-ups: tap a hint, then tap again to confirm its price. Everything is enforced server-side — inspector tricks earn an error, not a hint.
🔥 Streaks, front and center
- An always-on flame badge in the header shows a live streak on every page — signed-in and anonymous alike.
- The post-play countdown now reports your "N-day streak safe", and streak counts lead with 🔥 on results, profiles, and account cards.
- Dead streaks now die on time: a full missed day ends the streak at *your* midnight everywhere — header, stat cards, and the Current Play Streak board. (They used to linger until the next play.)
- The All-Time Play Streak card now shows *when* it happened ("Jun 2026").
🗞️ Yesterday's Game
- The daily page now reveals yesterday's answer — team, season, record, and which side of the wins line hit — plus your score, the field's average, and the player count. Beside the intro on desktop, below the guesses on mobile.
🏈 NFL data overhaul
- Fixed a real embarrassment: backup and committee quarterbacks were missing from 1966–2014 rosters (the old source listed only each team's one qualified passer). All 1,418 team-seasons now carry their full QB rotation — 53,000+ player rows rebuilt from per-team pages.
- Added a Games Started (GS) column across all eras, and the Player column now holds one width across a sport's tables.
🙋 Registration & feedback
- New /feedback page (linked in the footer): category dropdown, optional reply email, spam-guarded, and every submission is both emailed and kept in the database. Email deliverability tuned end-to-end (10/10 on mail-tester).
- Resend verification email button for unverified accounts — the expired 24-hour link is no longer a dead end.
- Practice Mode and Hint Mode are now registered-user features. Visitors still see both controls — they open sign-up — and a brief note under the intro spells out what a free account unlocks.
📊 Admin analytics
- Plays by day and Plays by time of day gained time-window switchers (Week / Month / 3M / 6M / Year; time-of-day adds Today and All-Time).
- Every chart bar now reports its exact numbers on tap, not just desktop hover; the Week view labels each day for screenshots.
📱 Navigation & polish
- Desktop nav slimmed to icons for Account/Admin; the mobile drawer gained a "Play" home link; shorter labels in the mid-width band; fixed a stray focus outline when opening the drawer.
- The staff/owner account is now off the Games Played board too (playing daily is the job); the footer "Contact" mailto retired in favor of Feedback.
Week of June 12–18, 2026
🏀 Went from one sport to four
- Launched NHL (Jun 13), MLB (Jun 14), and NFL (Jun 16) — the NFL with the full 1966–2025 history, including the pre-merger AFL.
- Per-sport rules pages, roster tables, and key colors (NBA orange, NFL blue, MLB red, NHL teal).
🎮 Game & scoring
- Cascading questions — Team → Season → Wins, each unlocking the next.
- Replaced the wins slider with an over/under question.
- Fixed the play streak to count calendar days (any sport keeps it alive).
🏆 Leagues (brand-new feature)
- User-created leagues with their own members-only leaderboards.
- Public (open-join) and private (PIN-gated) leagues, plus invite links.
- Full commissioner tools: rename, visibility, sports, invite/PIN regenerate, transfer, kick members, delete.
- Directory table, single-sport badge, commissioner names link to profiles.
📊 Admin analytics (new, owner-only, privacy-light)
- Engagement dashboard built from anonymous counts — no cookies, no IP, no PII.
- Daily vs Practice, New vs Returning (today + 30 days), players by sport, time-of-day (in Central), accounts, and score mix.
🔗 Sharing
- Added Reddit, X (Twitter), and Bluesky; per-sport emoji; share row stacks neatly on mobile.
👤 Accounts, auth & privacy
- Dark mode (saved per account); durable login that survives deploys; unsubscribe flow; rate limiting.
- Leaderboard opt-out toggle; "Founder" label on the owner's profile; staff kept off the streak boards.
📱 Mobile & UI polish
- Hamburger nav drawer; result cards with outcome colors; footer rework; many spacing/label refinements.
🐛 Notable fixes
- Admin "today" now computed in Central (not the UTC server date); century-crossing season labels (
1999-2000); mangled accented player names repaired.