Block a user
bug(stats): win events can be double-counted if multiple WinEvent fire in the same frame
bug(ui): profile panel can stack over other modals — missing ModalScrim guard
refactor(ui): modal card has hardcoded pixel dimensions — breaks on small screens
bug(time-attack): timer does not pause when Home or Win overlay is open
bug(time-attack): timer can underflow to negative values
bug(android): safe area inset arithmetic has no bounds check — UI can shift off-screen
refactor(ui): modal card has hardcoded pixel dimensions — breaks on small screens
perf(analytics): per-event HTTP flush causes excessive network requests — add batching
bug(stats): win events can be double-counted if multiple WinEvent fire in the same frame
bug(wasm): replay move failures are silently ignored in solitaire_wasm
bug(theme): broken theme manifests are silently skipped — no log warning
bug(settings): default theme ID 'classic' contradicts migration that renames it to 'dark'
bug(daily-challenge): stale date cache when app runs past midnight
bug(server): leaderboard opt-in check is not atomic — TOCTOU race condition
bug(server): missing input validation on replay header fields
bug(assets): assert!() on bundled font parse in svg_loader.rs — startup crash risk
refactor(engine): deduplicate TABLEAU_FAN_FRAC constant shared between layout.rs and card_plugin.rs
bug(ui): profile panel can stack over other modals — missing ModalScrim guard
bug(achievements): XP granted before persistence confirmed — reward lost on crash
bug(time-attack): timer does not pause when Home or Win overlay is open