Skip to content

Feat: added zip as a game#205

Open
Krishang-Zinzuwadia wants to merge 6 commits into
ACM-VIT:stagingfrom
Krishang-Zinzuwadia:feat/zip
Open

Feat: added zip as a game#205
Krishang-Zinzuwadia wants to merge 6 commits into
ACM-VIT:stagingfrom
Krishang-Zinzuwadia:feat/zip

Conversation

@Krishang-Zinzuwadia

@Krishang-Zinzuwadia Krishang-Zinzuwadia commented Jul 12, 2026

Copy link
Copy Markdown
Contributor
image image image

dynamic zip generation added no 2 zips are same

spent a lot of water and tokens to review your slop

Greptile Summary

This PR adds Zip as a dynamically generated multiplayer puzzle game. The main changes are:

  • Adds the interactive Zip grid and game screens to the web app.
  • Adds puzzle generation, validation, hints, scoring, and multi-round play to the SFU.
  • Registers Zip in the web and server game catalogs.
  • Adds tests for the game module and puzzle solver.

Confidence Score: 5/5

This looks safe to merge.

  • Active-player reconciliation prevents disconnected boards from blocking completion.
  • No separate blocking issue remains in the updated request-handling path.
  • The new imports and registrations match the existing build and module contracts.

Important Files Changed

Filename Overview
packages/sfu/server/games/modules/zip.ts Adds the Zip game lifecycle, move validation, hints, scoring, views, and multi-round handling.
packages/sfu/server/games/modules/zipSolver.ts Adds dynamic puzzle generation and path-solving helpers.
apps/web/src/app/components/games/ZipGame.tsx Adds the interactive puzzle grid, controls, standings, timing, and results UI.
packages/sfu/test/zip.test.ts Adds coverage for the Zip game lifecycle and player actions.
packages/sfu/test/zipSolver.test.ts Adds coverage for puzzle generation and solver behavior.

Reviews (2): Last reviewed commit: "fix(sfu): complete zip rounds after disc..." | Re-trigger Greptile

@Krishang-Zinzuwadia Krishang-Zinzuwadia changed the title Feat/zip Feat: added zip as a game Jul 12, 2026
Comment thread packages/sfu/server/games/modules/zip.ts Outdated
const submitPath = useCallback(
async (cells: CellIndex[]) => {
if (busyRef.current) return;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Busy Guard Drops New Path

The grid remains interactive while the first path request is awaiting its acknowledgement. If the player extends and releases the path again during that window, this return silently skips the second submission; the next server view restores the older path and the newer progress disappears.

Fix in Codex Fix in Claude Code Fix in Cursor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants