Gen: each system gets 2–5 planets, 60% of them with 1–3 moons; pure + seeded per system in lib/game/world.ts so bodies are identical regardless of generation order
Exploration:POST /api/explore {planetId} — deterministic roll per save+planet (70% resource qty 1–4, 30% part qty 1, ~21% nothing), one scan per body, turn cost, event write; 404/409 validation
UI: LOCAL SYSTEM tab renders live data — staggered moon layout kept, real UNEXPLORED/SCANNED/HAZARD badges, EXPLORE per row, SCAN RESULT strip + CARGO HOLD panel; placeholder constants removed for this tab only
Tests: unit 20→29 (gen shape/determinism, explore lifecycle incl. known-seed determinism), e2e 7→10 (fresh-stack render, scan changes state + yields cargo, explored state survives the mid-run container restart)
Local verification: tsc ✓, vitest 29/29 ✓, playwright --list ✓, next build clean (7 tab triggers present).
Closes #6. Real planet list for the current system and exploration that finds things.
- **DB:** `planets` (system_id, parent_id for nested moons, name/type/hazard/explored), `inventory_items` (kind resource|part, name, qty — accumulates)
- **Gen:** each system gets 2–5 planets, 60% of them with 1–3 moons; pure + seeded per system in lib/game/world.ts so bodies are identical regardless of generation order
- **Exploration:** `POST /api/explore {planetId}` — deterministic roll per save+planet (70% resource qty 1–4, 30% part qty 1, ~21% nothing), one scan per body, turn cost, event write; 404/409 validation
- **API:** `GET /api/system` (planets incl. moons + inventory + turn), OpenAPI updated in code
- **UI:** LOCAL SYSTEM tab renders live data — staggered moon layout kept, real UNEXPLORED/SCANNED/HAZARD badges, EXPLORE per row, SCAN RESULT strip + CARGO HOLD panel; placeholder constants removed for this tab only
- **Tests:** unit 20→29 (gen shape/determinism, explore lifecycle incl. known-seed determinism), e2e 7→10 (fresh-stack render, scan changes state + yields cargo, explored state survives the mid-run container restart)
Local verification: tsc ✓, vitest 29/29 ✓, playwright --list ✓, next build clean (7 tab triggers present).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #6. Real planet list for the current system and exploration that finds things.
planets(system_id, parent_id for nested moons, name/type/hazard/explored),inventory_items(kind resource|part, name, qty — accumulates)POST /api/explore {planetId}— deterministic roll per save+planet (70% resource qty 1–4, 30% part qty 1, ~21% nothing), one scan per body, turn cost, event write; 404/409 validationGET /api/system(planets incl. moons + inventory + turn), OpenAPI updated in codeLocal verification: tsc ✓, vitest 29/29 ✓, playwright --list ✓, next build clean (7 tab triggers present).