Files
euchre_camp/docs/TODO.md
T
david 501e1b7e23
Release / release (push) Failing after 1m9s
Test / unit-tests (push) Successful in 2m5s
fix: version bumping and Docker registry authentication (#17)
## 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>
2026-04-01 05:03:14 +00:00

4.7 KiB

EuchreCamp - Todo List

Current Tasks

Completed

  • Add site_admin role to database schema and permissions system
  • Add isCasual boolean field to Match model (already existed)
  • Update match upload API to support casual matches
  • Update match upload UI to include casual checkbox
  • Add tournament deletion API endpoint with delete/orphan options
  • Add delete tournament button and modal to tournament detail page
  • Run tests and verify implementation (84 tests passing)
  • Fix session issues with tournament admin access
  • Fix Elo recalculation error for player merge (delete elo snapshots before deleting players)
  • Add admin player management page
  • Add player name editing functionality in admin UI
  • Add admin panel links to navigation header
  • Add tournament update API endpoint (PUT /api/tournaments/[id])
  • Consolidate delete endpoint from admin API to main tournaments API
  • Update database schema to add variant scoring fields (targetScore, allowTies)
  • Fix tie handling logic in partnership stats (ties now correctly tracked)
  • Fix test files for normalizedName field in Player model
  • Fix auth.ts to include normalizedName in Player creation
  • Write TODO list to repository file
  • 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

  • Add OpenSkill rating system support (src/lib/openskill-utils.ts)
  • Add Glicko2 rating system support (src/lib/glicko2-utils.ts)
  • Reset database and run all migrations from scratch
  • Regenerate Prisma client with new rating models
  • Update match upload page to auto-create tournament if none selected
  • Update all admin scripts to use PrismaPg adapter and dotenv
  • Fix match diagram player positioning
  • Add CasaOS deployment configuration and documentation
  • Create migration to add rating system tables (elo_ratings, glicko2_ratings, open_skill_ratings)
  • 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

  • Fixed params.id usage in all page components (must use await params)
  • Fixed params.id usage in all API routes (must use await params)
  • Updated client components to use Promise<{ id: string }> type
  • Added regression tests for Next.js 16 params Promise handling
  • 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