Dupes Clause greys out Pokemon in the encounter modal whose evolution family has already been caught, preventing duplicate selections. Shiny Clause adds a dedicated Shiny Box and lets shiny catches bypass the one-per-route lock via a new is_shiny column on encounters and a /pokemon/families endpoint that computes evolution family groups. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
992 B
992 B
title, status, type, priority, created_at, updated_at
| title | status | type | priority | created_at | updated_at |
|---|---|---|---|---|---|
| Implement Dupes Clause & Shiny Clause Enforcement | completed | feature | normal | 2026-02-07T20:03:12Z | 2026-02-07T20:07:50Z |
Add enforcement for duplicatesClause and shinyClause rules:
- Dupes Clause: Grey out Pokemon in encounter modal whose evolution family is already caught
- Shiny Clause: Dedicated Shiny Box for bonus shiny catches that bypass route locks
Checklist
- Migration: Add is_shiny column to encounters table
- Backend model + schema: Add is_shiny field
- Backend: Shiny route-lock bypass in create_encounter
- Backend: Evolution families endpoint (GET /pokemon/families)
- Frontend types + API: Add isShiny fields and fetchPokemonFamilies
- Frontend: Dupes Clause greying in EncounterModal
- Frontend: ShinyEncounterModal + ShinyBox components
- Frontend: RunEncounters orchestration (split encounters, duped IDs, shiny box)
- TypeScript type check passes