---
# nuzlocke-tracker-hm6t
title: Pokemon Status Management
status: completed
type: task
priority: normal
created_at: 2026-02-04T15:44:37Z
updated_at: 2026-02-05T16:47:18Z
parent: nuzlocke-tracker-f5ob
---

Implement the system for tracking Pokémon status (alive, dead, boxed).

## Checklist
- [x] Create Pokémon card/tile component showing:
  - [x] Sprite, name, nickname
  - [x] Current status with visual indicator (green/red dot)
  - [x] Location caught
- [x] Implement status transitions:
  - [x] Alive → Dead (fainted in battle) via StatusChangeModal with confirmation
  - [ ] Alive → Boxed (stored in PC) — deferred, no boxed tracking yet
  - [ ] Boxed → Alive (added to party) — deferred, no boxed tracking yet
- [x] Add death recording:
  - [x] Optional: record cause of death (free text, max 100 chars)
  - [x] Optional: record level at death
- [x] Create "Graveyard" view for fallen Pokémon (on RunDashboard)
- [ ] Create "Box" view for stored Pokémon — deferred, no boxed tracking yet

## Implementation (death_cause feature)
- Backend: Alembic migration adds `death_cause` VARCHAR(100) to encounters
- Backend: Model + schemas updated with `death_cause` field
- Frontend: `StatusChangeModal` for recording death with confirmation from RunDashboard
- Frontend: `PokemonCard` now clickable with status indicator dot and death cause display
- Frontend: `EncounterModal` includes death cause input alongside faint level
- Frontend: `RunEncounters` shows death cause in route list

## Notes
- Status changes should be confirmable (prevent accidental deaths) ✓
- Consider undo functionality for misclicks — not implemented (Nuzlocke rules: death is permanent)