๐ Security
FEATPhone 2FA is live. Users can now enroll a phone number under Settings โ Security. Firebase sends a real SMS verification code โ enter it to enable two-factor auth on your account. Supported on all sign-in methods (email, Google, Twitter, GitHub, Facebook). Accounts with phone 2FA get a challenge prompt automatically on every sign-in.
FEATAuthenticator app 2FA is live. Scan the QR code in Settings โ Security with Google Authenticator, Authy, or any TOTP app. Disable any time by entering your current 6-digit code. TOTP is fully server-side โ secrets never leave Firebase Cloud Functions.
FIXTOTP Cloud Functions were deployed as 2nd Gen, which the Firebase compat SDK (v9) doesn't pass auth tokens to โ every call returned functions/unauthenticated. Redeployed as 1st Gen. Also fixed a key mismatch where the frontend expected result.data.qrUrl but the function returned result.data.qr.
โ๏ธ Raid Boss
FEATDamage rate displayed on boss card. Every boss now shows exactly how much damage your actions deal โ e.g. "โ๏ธ 1 quiz completed = 5 dmg" โ so you always know the most effective way to contribute.
FEATBoss preloader. The active raid boss is now silently loaded on sign-in, before you ever open the Raid tab. Previously, poll voters and other users who never visited the Raid tab had their contributions silently dropped. Fixed.
FEATMore damage metrics. Bosses can now use any of 16 action types to deal damage: quiz completions, flashcard sets, Timechain TV watch time, Bitcoin Beats listen time, poll votes, forum posts, trivia correct answers, topic reads, new topics visited, badges earned, 7-day streaks, Lightning tips sent, chat messages, and total XP earned.
FIXXP-based bosses now accumulate damage in a 100 XP buffer before firing a contribution call. Prevents fractional damage values and reduces Firestore writes during rapid XP gains.
๐ง Dashboard Fixes
FIXLightning Network capacity showed NaN โ caused by calling fmtNum() on a value already converted to a formatted string. Fixed the calculation chain; capacity now shows correctly (e.g. "5,342 BTC").
FIXDashboard cache bumped to v2 โ clears stale null values that were persisting from a prior bad fetch and showing blank tiles on return visits.
FIXIndicator count corrected to 32 โ the count previously excluded indicators with no flash logic, making the displayed total inconsistent.