Skip to content

Module 6: Lobby & Matchmaking System (frontend) - #12

Merged
MohanEhab merged 3 commits into
mainfrom
feature/module-06-lobby-matchmaking-system
Jul 12, 2026
Merged

Module 6: Lobby & Matchmaking System (frontend)#12
MohanEhab merged 3 commits into
mainfrom
feature/module-06-lobby-matchmaking-system

Conversation

@MohanEhab

Copy link
Copy Markdown
Contributor

Summary

  • Adds lobby and matchmaking client features: LobbyPage, CreateLobbyModal, QuickMatchModal, and API clients/error mappers/types, wired into the dashboard, search, game detail, profile, and friend-invite flows.
  • Ships as a documented foundation PR, paired with the SimPle.Backend PR: Module 8 (match runtime) is not built yet, so Start/Quick-Match surfaces a runtime-unavailable state rather than a playable match.

What changed

  • src/features/lobby/* (new: lobbyApi.ts, lobbyErrors.ts, types.ts) and src/features/matchmaking/* (new)
  • src/components/lobby/{CreateLobbyModal.tsx,QuickMatchModal.tsx}
  • src/lib/routes.ts, src/mock/lobbies.ts, src/types/index.ts — routing/type extensions
  • Entry-point wiring: src/features/dashboard/DashboardPage.tsx, src/features/search/SearchResultsPage.tsx, src/features/games/GameDetailPage.tsx, src/features/profile/ProfilePage.tsx, src/components/friends/InviteFriendModal.tsx (lobby invites)
  • Test coverage: new component tests (CreateLobbyModal, LobbyPage, SearchResultsPage), updated existing tests, new tests/e2e/module-06-lobby-matchmaking.spec.ts, and a locator fix in tests/e2e/module-04-game-library.spec.ts found during the same verification pass

Tests

  • Vitest: 243/243 passed across 24 files
  • End-to-end: 2/2 passed against a live local stack (Postgres + backend + frontend, no mocks)
  • tsc, lint, and Next build all clean; contract-drift check: 0 drift (85 backend routes / 71 frontend calls)

Security/docs

  • Post-frontend-phase ASVS-lite audit: CLOSED, zero unwaived Critical/High/Medium. 2 Low findings (M06-001 per-instance join-throttle, M06-005 join credential not cleared from sessionStorage on leave) + 5 Info findings open, non-blocking.

Risks/deferred

  • Blocking dependency: Module 8 match runtime not yet built — matches are not playable yet, only MatchRuntimeUnavailable outcomes are reachable.
  • A small set of known non-blocking bugs carried forward from verification (see testing-report.md in the companion SimPle.Project PR): Windows spawnSync EINVAL in run-module-e2e.mjs, catalog seeder checksum fragility, a CreateLobbyModal accessible-name bleed on the privacy toggle, a hardcoded placeholder link in Sidebar.tsx, and an incomplete Module-4-originated .page-title sweep.

…eatures

Adds LobbyPage, CreateLobbyModal, QuickMatchModal, and the lobby/
matchmaking API clients, error mappers, and types. Extends routes and
shared types for lobby/matchmaking flows, gated behind the M8 match
runtime dependency.
…ing pages

Adds lobby/quick-match entry points to the dashboard, search results,
game detail, and profile pages, and extends the friend invite modal to
support inviting into an active lobby.
Covers CreateLobbyModal, LobbyPage, SearchResultsPage lobby entry points,
and updates to DashboardFriends/GameDetailPage/InviteFriendModal tests
for the new lobby wiring. Adds the module-06 end-to-end spec and fixes
a locator regression in the module-04 game library end-to-end spec
surfaced during the same verification pass. 243/243 Vitest, 2/2 e2e.
@MohanEhab
MohanEhab merged commit f3940a2 into main Jul 12, 2026
2 checks passed
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.

1 participant