Light Mode: TMI logo now has transparent background — no black border in any theme
Light Mode: Cookie consent banner now readable (was invisible white-on-white)
Sidebar: More spacing between logo and nav items
Inngest: All 9 cron functions fixed — were calling GET instead of POST, MetaApi Sync now works
Sentry error monitoring: now active in production
SEO: 3 new longform blog posts (funded trader mistakes, drawdown management, trading psychology)
Sitemap: Updated with new posts, resubmitted to Google Search Console
Conversion tracking: sign_up event now fired after successful registration
v3.1April 3, 2026
Overnight: Mobile PWA & AI Weekly Digest ⚡
Mobile PWA: Pull-to-Refresh on trades list with smooth animation
Mobile PWA: Haptic feedback (light/medium/heavy/success/error) via navigator.vibrate()
Loading Skeletons: Trades, Analytics, PnL Chart — no more raw spinners
Empty States: Trades page with illustration and 2 CTAs when no trades logged
Light Mode Deep Fix: QuickTradeModal, FAB modal, Recharts tooltips and axis labels
AI Weekly Performance Digest: Every Monday 08:00 UTC — personalized email with weekly P&L, win rate trend, best trade, AI recommendation, and motivation score
Security: Password reset token upgraded from 6-digit to 256-bit random hex
Security: Push notifications now validate userId before sending
Security: Trade loads capped at 500 to prevent DoS
Rate Limiting: Auth routes (register, forgot PW, reset PW) now use Upstash Redis — global, not per-instance
Testing: 35/35 Vitest + Playwright tests passing
Service Layer: trades.service.ts, user.service.ts, mentor.service.ts introduced