35 lines
1.6 KiB
Markdown
35 lines
1.6 KiB
Markdown
# NEO-72 — Manual QA checklist
|
||
|
||
| Field | Value |
|
||
|-------|-------|
|
||
| Key | NEO-72 |
|
||
| Title | E3.M3: Client inventory snapshot HUD (E3S5-01) |
|
||
| Linear | https://linear.app/neon-sprawl/issue/NEO-72/e3m3-client-inventory-snapshot-hud-e3s5-01 |
|
||
| Plan | `docs/plans/NEO-72-implementation-plan.md` |
|
||
| Branch | `NEO-72-client-inventory-snapshot-hud` |
|
||
|
||
## Preconditions
|
||
|
||
- Server running with default dev player (`dev-local-1`) and item catalog loaded (NEO-51–NEO-55 on `main`).
|
||
|
||
## Checklist
|
||
|
||
1. Start server: `cd server/NeonSprawl.Server && dotnet run`.
|
||
2. Run Godot main scene (**F5**). **`InventoryLabel`** (below cooldown HUD) shows **`Inventory: (refresh: I)`**, **`Bag: (empty)`**, and **`Equipment:`** / **`slot 0: — empty`** on a fresh dev player.
|
||
3. Seed inventory via Bruno or curl:
|
||
|
||
```bash
|
||
curl -sS -X POST "http://localhost:5253/game/players/dev-local-1/inventory" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"schemaVersion":1,"mutationKind":"add","itemId":"scrap_metal_bulk","quantity":5}'
|
||
```
|
||
|
||
4. Press **`I`** (or **`inventory_refresh`**). HUD lists occupied bag slot with **`Scrap Metal (Bulk) x5`** (display name from NEO-53 defs).
|
||
5. Stop the server; press **`I`**. HUD shows **`error — …`** and Output shows **`InventoryClient:`** **`push_warning`**.
|
||
6. Restart server; press **`I`** again — HUD returns to synced inventory lines.
|
||
|
||
## Notes
|
||
|
||
- **`I`** is handled in **`main.gd`** **`_unhandled_key_input`** (same reliability pattern as **E** / **R** interact keys).
|
||
- POST inventory mutations from UI are out of scope; use Bruno/curl to seed stock for this story.
|