Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
3705abf
feat: add DAB redo, turn indicators, landing redesign, and player rules
May 20, 2026
fbbee75
fix(UTTT): won inner grids are still playable - use !== null check
May 20, 2026
ed960d1
fix: Bingo numbers, UTTT dead-grid logic, leave cleanup
May 20, 2026
92311dc
fix(Bingo): use const for handleCellClick (not class field)
May 20, 2026
1501af5
fix: clear roomId from context on leave/back, add clearRoomId to Game…
May 20, 2026
18f4d88
Refactor game managers with sanitizeRoomId, add UI components and hoo…
May 22, 2026
b58051e
P0: Hotfixes — fix dab.js duplication, ErrorBoundary, TTT tests, dead…
May 22, 2026
de0a027
fix: remove duplicate DAB methods, fix JSX entity escaping, use Vite …
May 22, 2026
a8dd2a7
feat: add root-level dev toolchain with ESLint, Prettier, Husky, and CI
May 22, 2026
9d76cfa
fix: add root .gitignore and install root deps in CI for eslint@8
May 23, 2026
7e5ea8c
fix: explicitly set working-directory for root npm ci in CI
May 23, 2026
e2e7a65
fix: CI
May 23, 2026
e351921
fix: resolve CI failures — handleDisconnect bug, lint warnings, worki…
May 23, 2026
93749ce
fix: resolve all 6 failing tests — shutdown io.close race, afterEach …
May 23, 2026
c447e97
chore: commit all outstanding changes across the codebase
May 23, 2026
083e0cd
chore: add e2e and load testing infrastructure
May 23, 2026
5c26d36
fix(ci): install API deps in e2e job before Playwright webServer starts
May 23, 2026
21a06a0
fix(e2e): navigate to app origin before accessing localStorage in set…
May 23, 2026
cbde055
fix: resolve 10 bugs across socket.io-games project
May 25, 2026
c29105a
fix: complete e2e test fixes with addInitScript, debug logging, and u…
May 25, 2026
8516325
fix: update e2e tests, dab/tictactoe components and test files
May 25, 2026
d017451
feat: add SOS and Connect4 multiplayer games
May 25, 2026
173142e
feat: add SOS and Connect4 multiplayer games
May 25, 2026
739a5c7
fix: CI
May 25, 2026
5d86f12
fix: CI
May 25, 2026
2dd1dab
fix: CI
May 25, 2026
1081f83
Merge branch 'feat/sos-connect4' of https://github.com/PritOrg/socket…
May 26, 2026
5f133bd
fix(reconnect): handle gameState on roomInfo for SOS and Connect4
May 28, 2026
9ad6fd3
feat: add SOS and Connect4 multiplayer games with spectator support a…
Jun 3, 2026
a4e2d34
Fix critical bugs in socket.io-games
Jun 5, 2026
529ed87
feat: implement backend improvements B1-B5
Jun 5, 2026
e63a7c4
feat: add GameLobby, UndoUI, reconnection and socket listener hooks
Jun 5, 2026
6903876
fix: align frontend tests with refactored components
prit-007 Jun 7, 2026
c68a9ec
feat: add new components and stores
prit-007 Jun 7, 2026
5dbef3a
Improve reconnection & error handling in games
prit-007 Jun 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false
6 changes: 6 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
node_modules
dist
.kilo
*.lock
e2e/
load/
45 changes: 45 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
module.exports = {
root: true,
env: {
es2021: true,
},
extends: ['eslint:recommended'],
parserOptions: {
ecmaVersion: 'latest',
},
overrides: [
{
files: ['api/**/*.js', '*.config.js', '*.config.mjs', '.eslintrc.js'],
env: { node: true, es2021: true },
parserOptions: { sourceType: 'script' },
rules: {
'no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
'no-console': 'off',
},
},
{
files: ['pro/**/*.js', 'pro/**/*.jsx'],
env: { browser: true, es2021: true },
parserOptions: {
sourceType: 'module',
ecmaFeatures: { jsx: true },
},
plugins: ['react', 'react-hooks'],
extends: ['eslint:recommended', 'plugin:react/recommended', 'plugin:react-hooks/recommended'],
settings: { react: { version: 'detect' } },
rules: {
'no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
'react/react-in-jsx-scope': 'off',
'react/prop-types': 'off',
'no-console': 'off',
},
},
{
files: ['*.test.js', '*.test.jsx'],
env: { mocha: true, jest: true },
rules: {
'no-unused-expressions': 'off',
},
},
],
};
157 changes: 157 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
name: CI

on:
push:
branches: [main, fix/*, feat/*]
pull_request:
branches: [main]

jobs:
api:
name: API (Server)
runs-on: ubuntu-latest
timeout-minutes: 10

steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
cache-dependency-path: |
package-lock.json
api/package-lock.json

- name: Install root dependencies
run: npm ci
working-directory: .
- name: Install API dependencies
run: npm ci
working-directory: api
- name: Lint
run: npx eslint --ext .js . --max-warnings 50
working-directory: .
- name: Test
run: npm test
working-directory: api

pro:
name: Frontend
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
cache-dependency-path: |
package-lock.json
pro/package-lock.json

- name: Install root dependencies
run: npm ci
working-directory: .
- name: Install Frontend dependencies
run: npm ci
working-directory: pro
- name: Lint
run: npx eslint --ext .js,.jsx . --max-warnings 50
working-directory: .
- name: Test
run: npx vitest run
working-directory: pro

e2e:
name: E2E (Playwright)
runs-on: ubuntu-latest
timeout-minutes: 15

steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
cache-dependency-path: |
api/package-lock.json
pro/package-lock.json

- name: Install API dependencies
run: npm ci
working-directory: api

- name: Install Frontend dependencies
run: npm ci
working-directory: pro

- name: Install E2E dependencies
run: npm install
working-directory: e2e

- name: Install Playwright browsers
run: npx playwright install --with-deps chromium
working-directory: e2e

- name: Run E2E tests
run: npx playwright test
working-directory: e2e
env:
CI: true

- name: Upload Playwright report
uses: actions/upload-artifact@v4
if: failure()
with:
name: playwright-report
path: e2e/playwright-report/
retention-days: 7

load:
name: Load Test
runs-on: ubuntu-latest
timeout-minutes: 10

steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
cache-dependency-path: |
api/package-lock.json

- name: Install API dependencies
run: npm ci
working-directory: api

- name: Install Load Test dependencies
run: npm install
working-directory: load

- name: Start API server
run: |
node index.js &
echo "Waiting for server..."
for i in $(seq 1 10); do
curl -s http://localhost:4000/health > /dev/null && echo "Server ready" && break
sleep 1
done
working-directory: api

- name: Run load test
run: node runner.js --connections 10 --duration 15
working-directory: load
env:
LOAD_SERVER_URL: http://localhost:4000

- name: Stop API server
run: kill $(lsof -t -i:4000) 2>/dev/null || true

- name: Upload load report
uses: actions/upload-artifact@v4
if: always()
with:
name: load-report
path: load/*.log
retention-days: 7
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules/
1 change: 1 addition & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
npx lint-staged
Loading
Loading