101 lines
4.6 KiB
Markdown
101 lines
4.6 KiB
Markdown
# EuchreCamp - Todo List
|
|
|
|
## Current Tasks
|
|
|
|
### Completed ✅
|
|
- [x] Add `site_admin` role to database schema and permissions system
|
|
- [x] Add `isCasual` boolean field to Match model (already existed)
|
|
- [x] Update match upload API to support casual matches
|
|
- [x] Update match upload UI to include casual checkbox
|
|
- [x] Add tournament deletion API endpoint with delete/orphan options
|
|
- [x] Add delete tournament button and modal to tournament detail page
|
|
- [x] Run tests and verify implementation (84 tests passing)
|
|
- [x] Fix session issues with tournament admin access
|
|
- [x] Fix Elo recalculation error for player merge (delete elo snapshots before deleting players)
|
|
- [x] Add admin player management page
|
|
- [x] Add player name editing functionality in admin UI
|
|
- [x] Add admin panel links to navigation header
|
|
- [x] Add tournament update API endpoint (PUT /api/tournaments/[id])
|
|
- [x] Consolidate delete endpoint from admin API to main tournaments API
|
|
- [x] Update database schema to add variant scoring fields (targetScore, allowTies)
|
|
- [x] Fix tie handling logic in partnership stats (ties now correctly tracked)
|
|
- [x] Fix test files for normalizedName field in Player model
|
|
- [x] Fix auth.ts to include normalizedName in Player creation
|
|
- [x] Write TODO list to repository file
|
|
- [x] Auto-create tournament when uploading matches without selecting one
|
|
|
|
### In Progress 🔄
|
|
- [ ] Update API routes to handle new variant scoring fields
|
|
- [ ] Update EditTournamentForm to add variant scoring controls
|
|
- [ ] Update MatchEditor to use tournament-specific target score
|
|
- [ ] Run tests and verify variant scoring implementation
|
|
|
|
### Recently Completed ✅
|
|
- [x] Add OpenSkill rating system support (src/lib/openskill-utils.ts)
|
|
- [x] Add Glicko2 rating system support (src/lib/glicko2-utils.ts)
|
|
- [x] Reset database and run all migrations from scratch
|
|
- [x] Regenerate Prisma client with new rating models
|
|
- [x] Update match upload page to auto-create tournament if none selected
|
|
- [x] Update all admin scripts to use PrismaPg adapter and dotenv
|
|
- [x] Create migration to add rating system tables (elo_ratings, glicko2_ratings, open_skill_ratings)
|
|
- [x] Add tabbed rankings page to display Elo, OpenSkill, and Glicko2 ratings
|
|
|
|
### Backlog 📋
|
|
- [ ] Add UI controls for variant scoring in tournament creation/edit
|
|
- [ ] Test variant tournament functionality end-to-end
|
|
- [ ] Add validation for tie scores based on tournament configuration
|
|
- [ ] Document variant tournament features
|
|
|
|
## Recently Completed (Detailed)
|
|
|
|
### Variant Euchre Scoring Support
|
|
- Added `targetScore` and `allowTies` fields to Event model
|
|
- Created database migration for new fields
|
|
- Fixed partnership stats tie handling (ties now increment neither wins nor losses)
|
|
- Updated Elo calculation functions to handle ties correctly (0.5 points for draw)
|
|
|
|
### Tournament Deletion
|
|
- Consolidated delete endpoint to `/api/tournaments/[id]`
|
|
- Added options to delete matches or orphan them
|
|
- Updated DeleteTournamentButton to use consolidated endpoint
|
|
|
|
### Player Management
|
|
- Added admin players page at `/admin/players`
|
|
- Added player name editing functionality via PATCH endpoint
|
|
- Added player merge functionality with automatic Elo recalculation
|
|
- Fixed foreign key constraint issues with elo_snapshots
|
|
|
|
### Permissions
|
|
- Added `site_admin` role as highest privilege level
|
|
- Updated all permission functions to include site_admin support
|
|
- Fixed session cache issues by reading roles from database
|
|
|
|
## Notes
|
|
- All 84 unit tests passing
|
|
- Database migrations applied successfully
|
|
- TypeScript compilation has pre-existing errors unrelated to our changes
|
|
|
|
### Completed After Commit 1729dac
|
|
|
|
#### Next.js 16 Breaking Change Fixes
|
|
- [x] Fixed `params.id` usage in all page components (must use `await params`)
|
|
- [x] Fixed `params.id` usage in all API routes (must use `await params`)
|
|
- [x] Updated client components to use `Promise<{ id: string }>` type
|
|
- [x] Added regression tests for Next.js 16 params Promise handling
|
|
- [x] Verified all 100 unit tests pass
|
|
|
|
#### Files Updated:
|
|
- Player pages: `profile.tsx`, `schedule.tsx`
|
|
- Tournament pages: `page.tsx`, `results.tsx`, `edit.tsx`, `entry.tsx`
|
|
- API routes: `admin/players/[id]/route.ts`, `users/[id]/route.ts`, `users/[id]/role/route.ts`
|
|
- Tournament API routes: `[id]/route.ts`, `[id]/participants/route.ts`, `[id]/games/bulk/route.ts`
|
|
|
|
#### Root Cause
|
|
Next.js 16 requires `params` to be awaited in both server components and API routes:
|
|
- Before: `const { id } = params`
|
|
- After: `const { id } = await params`
|
|
|
|
This was not caught by the unit test suite because:
|
|
- Unit tests test individual functions in isolation
|
|
- E2E tests (Playwright) would catch this but weren't run after the upgrade
|