You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## Summary
- **Player Search (#9)**: Backend service + handler for `GET
/api/v1/players/search`, frontend search-then-navigate flow with error
alerts and recent searches in localStorage
- **Lifetime Stats Display (#10)**: StatCard, StatsHero (K/D, Wins,
Kills), and StatsGrid (12 secondary stats) components with responsive
CSS Grid layouts
- **Stats Visualizations (#11)**: Tree-shaken ECharts setup with 5 chart
components — Radar, K/D Gauge, Mode Comparison Bar, Placement Donut,
Performance Trend Line
- **Match History (#12)**: Backend service + handler for `GET
/api/v1/players/{platform}/{gamertag}/matches`, NDataTable with sorting,
mode filter, win highlighting, and gulag badges
- **Game Mode Breakdown (#13)**: Mode tabs (NTabs segment),
ModeSummaryRow with click-to-switch cards, ModeBreakdown parsing from
single API response
### Bugfixes (commit 2)
- Fix CoD API base URL (`my.callofduty.com` → `www.callofduty.com`
redirects to store)
- Add NoRedirectPolicy + doRequest helper to detect 3xx as expired
tokens
- Parse 200 OK responses with `{"status":"error"}` JSON bodies into
sentinel errors
- Fix `profileResponse.Level/Prestige` type mismatch (API returns float,
struct expected int)
- Fix nullable `activision_id` column scan crash (`string` → `*string`)
- Add error logging in writeAPIError default case
### Multi-title support (commit 3)
- Add `title` and `mode` query params to all API endpoints (defaults:
`mw`/`wz`)
- Support Warzone 1 (`mw`/`wz`), Warzone 2 (`mw2`/`wz2`), MW MP
(`mw`/`mp`), MW2 MP (`mw2`/`mp`)
- Use `id` lookup type for `uno` (Activision) platform per API spec
- Add game selector dropdown to HomeView
- Thread title/mode through cache, services, handlers, store, and
PlayerView
## Test plan
- [ ] `go build ./...` and `go vet ./...` pass
- [ ] `cd web && npm run build-only && npm run type-check` pass
- [ ] `cd web && npx oxlint . && npx eslint . --cache` pass
- [ ] Start dev server with valid `COD_SSO_TOKEN` + PostgreSQL
- [ ] Search for a known gamertag on HomeView — verify no 500 errors
- [ ] Test game selector: switch between WZ, WZ2, MW MP, MW2 MP
- [ ] Verify redirect to PlayerView with stats cards rendering
- [ ] Verify match history table populates
- [ ] Switch mode tabs and verify stats update
- [ ] Check charts render with correct data
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
0 commit comments