You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
What's new
Onboarding
Inline tutorial modal replaces the /onboarding route and RequireOnboardingComplete guard that could cause an infinite redirect loop. First-time users now see the tutorial as a blocking overlay; completing it refreshes player state in place with no redirect.
Premium experience
SuccessPage redesign — celebratory copy and a premium perks list on the payment success screen
Premium visual flair — styled icon on the Infobar and a badge on the Account page for premium subscribers
Stripe billing portal — portal URL is now loaded from the STRIPE_BILLING_PORTAL_URL environment variable via app_config; the button is disabled when the URL is unset
Navigation and accessibility
Emoji icons on all Navbar and NavDrawer buttons for readability and dyslexia support (⏱ Timer, 📋 Activities, 👤 Account, 👋 Log out, 🔑 Log in, ❓ Help)
Desktop nav reordered to ❓ Help | 👤 Account | 👋 Log out
Mobile→desktop breakpoint bumped from sm to md so wider emoji buttons do not wrap
Heading levels and colour properties consistent across all pages
Tutorial modal height capped at min(90vh, 800px) with a green glowing focus ring
Activity input blurs the active element when the timer starts; improved inputMuted focus styling
Conflicting global focus-visible rules removed — keyboard focus rings now keep correct colour and shape
Bug fixes
Subscription deactivation no longer fails when the Stripe subscription record is missing remotely — the local record is still deactivated and a warning is logged
server_message WebSocket messages no longer appear as console warnings
Internal
Stop fetching /me/character/ (characters not currently live)
Dedicated seed_playwright_user management command and authenticatedPage Playwright utilities; all e2e specs refactored for stable, race-free runs