docs: mark phases 3-5 complete, update API/FRONTEND/MODULES/CLAUDE.md
This commit is contained in:
24
FRONTEND.md
24
FRONTEND.md
@@ -69,8 +69,8 @@ frontend/src/
|
||||
│ │ ├── PlayerTable.tsx # Current players + history with search
|
||||
│ │ ├── BanTable.tsx # Ban list + create/revoke form
|
||||
│ │ ├── MissionList.tsx # Available missions + Mission Rotation sections; multi-file upload
|
||||
│ │ ├── ModList.tsx # Mod list with enable/disable checkboxes
|
||||
│ │ └── LogViewer.tsx # Log display with level filter (receives logs as props)
|
||||
│ │ ├── ModList.tsx # Split-pane mod selector (Available vs Selected); Apply Selection button
|
||||
│ │ └── LogViewer.tsx # Log display with level filter + collapsible Log Files browser (download/delete)
|
||||
│ ├── settings/
|
||||
│ │ ├── PasswordChange.tsx # Password change form
|
||||
│ │ └── UserManager.tsx # User CRUD table (admin only)
|
||||
@@ -134,8 +134,8 @@ App
|
||||
│ │ │ ├── PlayerTable (current + history with search)
|
||||
│ │ │ ├── BanTable (ban list + create/revoke)
|
||||
│ │ │ ├── MissionList (Available + Rotation sections, multi-file upload)
|
||||
│ │ │ ├── ModList (enable/disable checkboxes)
|
||||
│ │ │ └── LogViewer (level filter, real-time via WebSocket onEvent)
|
||||
│ │ │ ├── ModList (split-pane: Available | Selected; Apply Selection)
|
||||
│ │ │ └── LogViewer (level filter, real-time stream + Log Files browser)
|
||||
│ │ ├── /servers/new → CreateServerPage
|
||||
│ │ │ └── 4-step wizard (Game Type → Info → Options → Review)
|
||||
│ │ └── /settings → SettingsPage
|
||||
@@ -186,6 +186,10 @@ All server data flows through TanStack Query hooks:
|
||||
| `useDeleteMission(id)` | Mutation | `DELETE /api/servers/:id/missions/:filename` | Invalidates `["missions", id]` |
|
||||
| `useSetEnabledMods(id)` | Mutation | `PUT /api/servers/:id/mods/enabled` | Invalidates `["mods", id]` |
|
||||
| `useSendCommand(id)` | Mutation | `POST /api/servers/:id/rcon/command` | No invalidation |
|
||||
| `useKickPlayer(id)` | Mutation | `POST /api/servers/:id/players/:slot_id/kick` | Invalidates `["players", id]` |
|
||||
| `useBanPlayer(id)` | Mutation | `POST /api/servers/:id/players/:slot_id/ban` | Invalidates players + bans |
|
||||
| `useServerLogFiles(id)` | Query | `GET /api/servers/:id/logfiles` | `["servers", id, "logfiles"]` (refetch 30s) |
|
||||
| `useDeleteLogFile(id)` | Mutation | `DELETE /api/servers/:id/logfiles/:filename` | Invalidates logfiles |
|
||||
|
||||
**Auth** (`useAuth.ts`):
|
||||
|
||||
@@ -210,18 +214,10 @@ All server data flows through TanStack Query hooks:
|
||||
**Key type notes**:
|
||||
- `Server` type in `useServers.ts` uses `game_port`, `current_players`, `max_players` (matches enriched API response)
|
||||
- `Mission` type: `{ name, filename, size_bytes, terrain }` — terrain parsed from filename
|
||||
- `Mod` type: `{ name, path, size_bytes, enabled, display_name, workshop_id }` — `display_name`/`workshop_id` from mod.cpp/meta.cpp (planned Phase 3)
|
||||
- `Mod` type: `{ name, path, size_bytes, enabled, display_name, workshop_id }` — `display_name`/`workshop_id` from mod.cpp/meta.cpp
|
||||
- `Ban` type: `{ id, server_id, guid, name, reason, banned_by, banned_at, expires_at, is_active, game_data }` (matches API)
|
||||
- There is no REST endpoint for logs — logs are only pushed via WebSocket events
|
||||
|
||||
**Planned hooks (UX Enhancement Plan — remaining):**
|
||||
|
||||
| Hook | Phase | Endpoint |
|
||||
|---|---|---|
|
||||
| `useKickPlayer(id)` | Phase 4 | `POST /api/servers/:id/players/:slot_id/kick` |
|
||||
| `useBanPlayer(id)` | Phase 4 | `POST /api/servers/:id/players/:slot_id/ban` |
|
||||
| `useLogFiles(id)` | Phase 5 | `GET /api/servers/:id/logfiles` |
|
||||
|
||||
QueryClient defaults: `staleTime: 10s`, `retry: 2`, `refetchOnWindowFocus: false`.
|
||||
|
||||
### Client State (Zustand)
|
||||
@@ -285,7 +281,7 @@ Dark neumorphic theme defined in `tailwind.config.js`:
|
||||
|
||||
## Testing
|
||||
|
||||
### Unit Tests (120 tests, Vitest + React Testing Library)
|
||||
### Unit Tests (149 tests, Vitest + React Testing Library)
|
||||
|
||||
| Test File | Tests | Coverage |
|
||||
|---|---|---|
|
||||
|
||||
Reference in New Issue
Block a user