Merged
Conversation
Simplify ReplayVerifier to 4-step verification (regenerate + compare snapshot, walk clears, verify empty, compute time from events). Remove deadEndLimit references (removed from codebase). Replace OnlineController MonoBehaviour with static ScoreSubmitter helper. Remove inline victory leaderboard. Add totalEntries to leaderboard response DTOs. Renumber phases 6-10 to 6-9. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Server: ReplayVerifier validates replays by regenerating the board from seed, comparing to snapshot, and simulating all clear events. GameService handles submission with idempotency, rate limiting, and top-50 snapshot management. LeaderboardService provides per-size and cross-size rankings with totalEntries. Score model with EF migration, 6 new API endpoints. Client: ApiClient extended with score/leaderboard/replay methods. ScoreSubmitter fires submission silently during victory animation with toast notification on failure and retry. LeaderboardScreenController global tab with server fetch, player panel, refresh icon, replay playback, and snapshot decompression. ReplayViewController regenerates boards from seed for non-top-50 replays and saves locally for instant subsequent loads. Fixes: ReplayPlayer/ReplayRecorder handle orphan session_rejoin (no prior session_leave from force-quit). ReplayPlayer handles legacy replays without start_solve event. PerformanceTests cleaned up for removed deadEndLimit parameter. UI: Victory modal decluttered (removed New Best label, gold timer suffices). Submission toast in victory overlay. Leaderboard player panel with play button. Circular refresh icon in tab bar. Replay viewer play button centered, controls bar blocks camera input pass-through. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…, and others TechnicalDesign: Fix VictoryController (gold timer styling, not "New Best!" label; toast not inline note). Fix SettingsController (singleton with auto-bootstrap, not manual per-scene setup). Fix ReplayData version description (defaults to 1, set to 3 by recorder). OnlineRoadmap: Remove stale DeadEndLimit from Score model. Mark all endpoints and tests as done (were still "planned"). Update test count from 38 to 61. Update VictoryController description. CLAUDE.md: Fix VictoryController (gold timer, ScoreSubmitter, toast). Add ScoreSubmitter and ApiClient leaderboard descriptions. Update LeaderboardScreenController (global tab) and ReplayViewController (seed-restore path). BoardGeneration.md: Remove deadEndLimit from function signatures. LocalServerSetup.md: Rewrite for .env-based config (replaces user secrets approach). Add docker-compose.dev.yml instructions, leaderboard endpoints table, seed script usage. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
EditMode: ReplayRecorderTests.Resume_ContinuesSeqFromNextSeq expects 4 events (injected session_leave + session_rejoin) instead of 3. PlayMode: Rename Victory_NewBestAndLeaderboard to Victory_GoldTimer, remove assertion on deleted new-best-label element. Server: SubmitValidReplay asserts rank > 0 (not exact 1) since tests share a DB. GetLeaderboard uses isolated 5x5 board size. MalformedJson expects 400 (service returns BadRequest). RateLimit test skipped (needs separate counter, not row-based). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ReplayVerifier) validates replays by regenerating the board from seed, comparing to snapshot, and simulating clear eventsBug fixes
session_rejoin(no priorsession_leavefrom force-quit)start_solveeventdeadEndLimitparameter from PerformanceTests and TestBoardHelperInfrastructure
docker-compose.dev.ymlfor local PostgreSQL.env-based local dev config (replaces user-secrets approach)seed-leaderboard.jsfor populating test dataTest plan
🤖 Generated with Claude Code