Closer/functions/src
null 4ab79d34c4 fix(ui,games): defect-polish batch C1 from P3/UX review
- Challenges catalog: hide the 🔒 Premium badge once the couple has premium
  (A-003b; matches the Play hub's showPremiumBadge pattern). Verified live
  both directions under an authorized grant/revoke cycle.
- Game banner lifecycle (BANNER-LIFE-001): entering a session's screen now
  consumes any banner pointing at it (GamePromptController.consumeForSession
  wired into ActiveGameSessionMonitor.enter), and activity from a DIFFERENT
  session may replace a stale persistent banner. Verified live: no banner on
  reveal; stale RESULTS banner replaced by a new session's prompt.
- Waiting/join screen: says 'Your turn — {name} already played their part'
  for the non-starter once a first part landed (new partHasFinished mapped
  from partFinishNotifiedAt; completedByUsers only fills at reveal). Session
  observe mapping now also carries completedByUsers/joinedByUsers.
- How Well results: matched-row colors are now a theme-aware container+content
  pair (dark mode was near-invisible: fixed pale-green container under
  onSurfaceVariant text).
- Date Match: top card fully opaque — next card's text no longer bleeds
  through (was alpha 0.96).
- functions: don't send 'X finished — see your results!' for abandoned/quit
  sessions (status flips to completed with empty completedByUsers; a real
  completion always has both uids). Found live when a quit triggered a false
  banner. Needs deploy (bundled with C4).

Unit + functions suites green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 21:03:22 -05:00
..
backup feat(backup): wire pruneDeadTokens into onRestoreRequested 2026-06-30 23:34:26 -05:00
billing feat(billing): wire pruneDeadTokens into onEntitlementChanged 2026-06-30 23:35:38 -05:00
couples refactor(functions): type callable payloads instead of `any` 2026-07-06 22:06:45 -05:00
dates feat: date reflection reveal, UI upgrade plan, seed updates, ime-scan script 2026-07-01 04:12:58 -05:00
games fix(ui,games): defect-polish batch C1 from P3/UX review 2026-07-07 21:03:22 -05:00
notifications feat(notifications): wire pruneDeadTokens into streakReminder 2026-06-30 23:45:31 -05:00
questions fix(games,daily): correctness batch from games review 2026-07-07 19:41:41 -05:00
releaseKey refactor(functions): type callable payloads instead of `any` 2026-07-06 22:06:45 -05:00
security security: App Check enforcement on all callables, fail-closed device integrity, no raw code in logs; release signing config; iOS RevenueCat log level 2026-06-23 10:56:42 -05:00
users feat(users): wire pruneDeadTokens into onUserDelete 2026-06-30 23:45:36 -05:00
index.ts feat(functions): privacy-safe outcome-stat aggregation 2026-07-06 21:06:57 -05:00