501e1b7e23
## Summary This PR fixes the release workflow to properly handle version bumping on PR merge and uses the new Docker registry authentication secrets. ## Changes ### Release Workflow (release.yml) - **Version Bumping**: Now automatically bumps version on PR merge - Determines bump type from commit messages (major/minor/patch) - Commits version bump to `package.json` and `CHANGELOG.md` - Creates git tag for the release - **Docker Registry Auth**: Uses `DOCKER_LOGIN` and `DOCKER_PASSWORD` secrets - Falls back gracefully if secrets are not configured - **Tag Handling**: Checks if tag exists before creating (prevents failures) ### PR Workflow (pr.yml) - NEW - Runs unit tests on every PR - Analyzes commits to suggest bump type - Comments the suggested bump type on the PR ### Documentation - Added `WORKFLOW_ARCHITECTURE.md` explaining the workflow design ## Workflow Architecture **Two-step process:** 1. **PR Workflow** (on PR): Analyzes commits and suggests bump type 2. **Release Workflow** (on merge): Bumps version, creates tag, builds Docker image ## Benefits 1. **No CI Loops**: Version bump commits are detected and skipped 2. **Clear Communication**: PR comments inform developers of version impact 3. **Semantic Versioning**: Automated adherence to semver rules 4. **Traceability**: Git tags and changelog reflect all changes ## Testing The new workflows will be tested when this PR is merged. Closes #13 (Add database test safety configuration) Reviewed-on: #17 Co-authored-by: David Gwilliam <dhgwilliam@gmail.com> Co-committed-by: David Gwilliam <dhgwilliam@gmail.com>
103 lines
4.7 KiB
Markdown
103 lines
4.7 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] Fix match diagram player positioning
|
|
- [x] Add CasaOS deployment configuration and documentation
|
|
- [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
|