Alex funman300
  • Joined on 2026-01-25
funman300 created pull request funman300/Ferrous-Solitaire#76 2026-05-28 22:30:33 +00:00
docs: card_game integration gap analysis
funman300 created branch docs/card-game-integration in funman300/Ferrous-Solitaire 2026-05-28 22:28:56 +00:00
funman300 pushed to docs/card-game-integration at funman300/Ferrous-Solitaire 2026-05-28 22:28:56 +00:00
ccccdd2b40 docs: add card-game integration gap analysis
funman300 commented on issue funman300/Ferrous-Solitaire#75 2026-05-28 22:19:44 +00:00
Stats panel can open on top of another modal (missing scrim guard)

Fixed in commit f1d9601

Root cause

toggle_stats_screen only checked screens.single() to see if the Stats panel itself was already open. It never checked whether another modal…

funman300 closed issue funman300/Ferrous-Solitaire#75 2026-05-28 22:19:44 +00:00
Stats panel can open on top of another modal (missing scrim guard)
funman300 pushed to master at funman300/Ferrous-Solitaire 2026-05-28 22:19:31 +00:00
f1d96012f1 fix(engine): add modal scrim guard to toggle_stats_screen (#75)
funman300 opened issue funman300/Ferrous-Solitaire#75 2026-05-28 22:12:07 +00:00
Stats panel can open on top of another modal (missing scrim guard)
funman300 pushed to deploy at funman300/Ferrous-Solitaire 2026-05-28 21:45:03 +00:00
dc0ce8cd02 chore(deploy): bump image to 7eb1181e [skip ci]
funman300 commented on issue funman300/Ferrous-Solitaire#73 2026-05-28 21:42:21 +00:00
bug(server): sync push always rejected — user_id nil placeholder fails mismatch check

Fix (commit 7eb1181)

The server's push handler now accepts Uuid::nil() as a valid placeholder and replaces it with the authenticated user's real UUID before the mismatch check:

/
funman300 closed issue funman300/Ferrous-Solitaire#73 2026-05-28 21:42:21 +00:00
bug(server): sync push always rejected — user_id nil placeholder fails mismatch check
funman300 commented on issue funman300/Ferrous-Solitaire#74 2026-05-28 21:42:20 +00:00
bug(server): replay upload uses client-supplied recorded_at for leaderboard — allows timestamp spoofing

Fix (commit 7eb1181)

The leaderboard recorded_at update in replays.rs now uses the server-computed received_at timestamp instead of the client-supplied header.recorded_at:

//…
funman300 closed issue funman300/Ferrous-Solitaire#74 2026-05-28 21:42:20 +00:00
bug(server): replay upload uses client-supplied recorded_at for leaderboard — allows timestamp spoofing
funman300 pushed to master at funman300/Ferrous-Solitaire 2026-05-28 21:41:32 +00:00
7eb1181e50 fix(server): accept nil user_id placeholder in push; use received_at for leaderboard (#73, #74)
funman300 opened issue funman300/Ferrous-Solitaire#74 2026-05-28 21:36:22 +00:00
bug(server): replay upload uses client-supplied recorded_at for leaderboard — allows timestamp spoofing
funman300 opened issue funman300/Ferrous-Solitaire#73 2026-05-28 21:36:21 +00:00
bug(server): sync push always rejected — user_id nil placeholder fails mismatch check
funman300 closed issue funman300/Ferrous-Solitaire#71 2026-05-28 21:25:32 +00:00
bug(engine): auto-complete does not block player drag/tap input
funman300 closed issue funman300/Ferrous-Solitaire#72 2026-05-28 21:25:31 +00:00
bug(challenge): silent no-op when all challenges are completed
funman300 commented on issue funman300/Ferrous-Solitaire#71 2026-05-28 21:25:14 +00:00
bug(engine): auto-complete does not block player drag/tap input

Fix (commit f444378)

Added an AutoCompleteState early-return guard to three input entry points so no player-initiated move can race with the auto-complete sequence:

start_drag

funman300 commented on issue funman300/Ferrous-Solitaire#72 2026-05-28 21:25:14 +00:00
bug(challenge): silent no-op when all challenges are completed

Fix (commit f444378)

Replaced the silent warn! + return with an InfoToastEvent so the player receives clear feedback when all challenges have been completed:

// Before
let
funman300 pushed to master at funman300/Ferrous-Solitaire 2026-05-28 21:24:22 +00:00
f444378184 fix(engine): toast on challenge exhaustion, block input during auto-complete (#71, #72)