Skip to content

Gamify: E-P4 in-app status surface (level/streak/next unlock) #800

Description

@fernandotonon

Part of #796 — Gamify: editor half. Depends on E-P1. Pairs with qtmesh-cloud#80/#85.

Goal

Show the user their progress inside the editor, so discovery and streaks are felt in-context — not only when they visit the website.

Surface

  • In the existing CloudAccountMenuButton popover (and optionally WelcomeScreenController): a compact status block — level + XP ring, current streak (flame + "N-day streak"), and 1–2 nearest unlockable achievements (closest locked, non-hidden, with a small progress bar).
  • On unlocking during a session (from the flush response, E-P1): one restrained toast, themed via ThemeManager, dismissible, prefers-reduced-motion-safe. Never more than one at a time — queue and coalesce.
  • "See all achievements" → opens /u/:userSlug via CloudDeepLink.

Data

  • GET /v1/me/stats on login and on a periodic/refresh trigger; cache locally so the surface renders instantly and works offline (shows last-known).

Acceptance criteria

  • Logged-in editor shows level, streak, and nearest unlockable achievement, refreshed from stats.
  • Unlock during a session shows exactly one theme-consistent, reduced-motion-safe toast; multiples coalesce.
  • "See all" deep-links to the web profile.
  • Logged-out → status block hidden/CTA to sign in; offline → last cached stats, no errors.
  • Widget tested for the logged-in / logged-out / offline states.

Metadata

Metadata

Assignees

No one assigned

    Labels

    editorenhancementNew feature or requestgamificationGamification / engagement (epic prefix: Gamify:)ui

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions