Public sync 2026-W26#205
Conversation
|
Mention Blocks like a regular teammate with your question or request: @blocks review this pull request Run |
Code Review Roast 🔥Verdict: Unable to Review | Recommendation: Skip automated review for weekly sync PRs OverviewThis PR (#205) is a weekly export from a private repository containing 2791 changed files. The diff exceeds GitHub's API limits for inline review comments, making detailed line-by-line analysis impossible. ContextThe PR description indicates this is auto-generated from RecommendationFor weekly sync PRs of this nature:
📊 Overall: Like being asked to proofread Wikipedia in 30 seconds — technically impossible but the spirit of openness is appreciated. Files Reviewed
|
Code Review Roast 🔥Verdict: Unable to Review | Recommendation: Skip automated review for weekly sync PRs OverviewThis PR (#205) is a weekly export from a private repository containing 2791 changed files. The diff exceeds GitHub's API limits for inline review comments, making detailed line-by-line analysis impossible. ContextVerified export report confirms this is a legitimate public sync from:
RecommendationFor weekly sync PRs of this nature:
📊 Overall: Like being asked to proofread Wikipedia in 30 seconds — technically impossible but the spirit of openness is appreciated. Files Reviewed (sampled)
~2787 other files skipped due to API limitations. Reviewed by laguna-m.1-20260312:free · Input: 646.2K · Output: 4.2K · Cached: 322.5K |
🤖 Augment PR SummarySummary: Weekly public sync export from the private repo, updating engine/simulator sources and synced data for 2026-W26. Changes:
Technical Notes: SSR behavior now forwards cookies + 🤖 Was this summary useful? React with 👍 or 👎 |
| const fixtureIds = useMemo(() => new Set(fixtures.map((f) => f.id)), [fixtures]); | ||
|
|
||
| const requestedFixtureId = new URLSearchParams(window.location.search).get("fixture"); | ||
| const requestedFixtureId = |
There was a problem hiding this comment.
Because this route is SSR-enabled, deriving requestedFixtureId from window.location.search means the server render will always use null, but the client’s first render may pick up ?fixture=... and initialize selectedFixtureId differently. That can lead to a hydration mismatch / UI jump; consider sourcing the search param from React Router’s request/location so server+client agree.
Severity: medium
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8e01b0ebde
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if (currentHandle !== null && currentSlug === gameSlug) { | ||
| currentSnapshot = nextSnapshot; | ||
| return; |
There was a problem hiding this comment.
Reauthenticate the root socket when credentials change
When the same game slug is reloaded after sign-out, sign-in as another account, or a refreshed SSR ticket/JWT, this branch only mutates currentSnapshot and returns while the existing Socket.IO connection stays authenticated as the previous user until a transport reconnect happens. The auth callback is only read on handshakes, so the gateway presence/join identity can remain stale across same-slug auth changes; force a reconnect or release/reacquire when the credential identity/requireAuth state changes.
Useful? React with 👍 / 👎.
| (candidate) => candidate.owner === command.playerId && candidate.zone === "deck", | ||
| ) | ||
| : undefined; | ||
| moveCardToZone(state, command.cardId, playZone); |
There was a problem hiding this comment.
Enforce play costs before moving cards
When playCard reaches this line for any card in hand, it moves the card straight to its destination without checking definition.cost against readyResources or exhausting resources to pay that cost. In a normal action-phase game this lets a player with 0 ready resources play any event/unit/upgrade for free, so resource counts and cost-gated card behavior become meaningless.
Useful? React with 👍 / 👎.
| moveCardToZone(state, command.cardId, playZone); | ||
| card.playedThisPhase = true; |
There was a problem hiding this comment.
Exhaust non-leader units when they enter play
For a normal unit play from hand, createRuntimeCard starts cards as exhausted: false and this path never marks the unit exhausted after moving it into an arena. Since resolveAttack only rejects exhausted attackers, a unit played this phase can attack on a later action without Ambush or another readying effect, which breaks the core SWU rule that non-leader units enter play exhausted.
Useful? React with 👍 / 👎.
Weekly export from TheCardGoat/the-card-goat-online. Generated from private commit 8414e9200cef64ff263b586504b05e7d98b8c6f4.