Block a user
bug(server): leaderboard opt-in check is not atomic — TOCTOU race condition
bug(server): missing input validation on replay header fields
bug(android): safe area inset arithmetic has no bounds check — UI can shift off-screen
perf(analytics): per-event HTTP flush causes excessive network requests — add batching
Add selectable touch input mode (one-tap auto-move vs. tap-to-select)
fix(android): replace forbidden Unicode U+2500 (─) in win_summary_plugin.rs
fix(android): replace forbidden Unicode U+258C (▌) cursor glyph in splash_plugin.rs
bug(assets): assert!() on bundled font parse in svg_loader.rs — startup crash risk
bug(theme): broken theme manifests are silently skipped — no log warning
bug(settings): default theme ID 'classic' contradicts migration that renames it to 'dark'
refactor(engine): deduplicate TABLEAU_FAN_FRAC constant shared between layout.rs and card_plugin.rs
bug(wasm): replay move failures are silently ignored in solitaire_wasm
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