Commit Graph
75 Commits
Author SHA1 Message Date
kamilkrzywda fb11a8ef81 Merge pull request 'v0.9.0 — EVENT LOG: real game events in the terminal (#11)' (#18) from event-log into master
CI / build + unit + e2e (push) Successful in 2m51s
v0.9.0
2026-09-29 05:05:30 +02:00
kamilkrzywda 37b193ffb8 test(e2e): tab-switch test — assert real log lines, not the removed placeholder
CI / build + unit + e2e (pull_request) Successful in 2m36s
CI run 361: v0.9.0 replaced the placeholder feed with EventLogPanel, but this
pre-existing assertion still expected 'SHIP LOG // PLACEHOLDER FEED'. Assert a
real T<turn> // <MESSAGE> line instead — every save has the turn-0 new_game
event, so it holds on a fresh stack and across retries.
2026-09-29 03:02:04 +00:00
kamilkrzywda 760a45fc4b release v0.9.0
CI / build + unit + e2e (pull_request) Failing after 3m12s
2026-09-29 02:48:25 +00:00
kamilkrzywda 0b435a583b test(e2e): event log entries + restart persistence
smoke: jump (shared helper) + scan, then assert both events are in
GET /api/events with the newer one first, and that the EVENT LOG terminal
renders both T<turn> // <MESSAGE> lines. Idempotent across retries — asserts
on this run's own entries by turn/message, never absolute counts. state: the
latest five log lines come back identical (ids included) after the mid-run
container restart.
2026-09-29 02:47:36 +00:00
kamilkrzywda 29e8ac6909 feat(ui): EVENT LOG tab renders the real game log
Self-fetching EventLogPanel (MissionPanel pattern — refetches on each tab
open). One terminal line per event: T<turn> // <MESSAGE>, newest first, with
the event's local time as the timestamp; new_game lines render as system
lines. Placeholder feed + now() removed from mission-control.
2026-09-29 02:45:38 +00:00
kamilkrzywda 21abf8768f feat(api): GET /api/events endpoint + OpenAPI
Latest game events, newest first; auto-initializes like the other reads.
?limit= defaults to 50 (cap 200), non-integer/out-of-range → 400. OpenAPI
spec gains the path + Event schema (14 -> 15 paths).
2026-09-29 02:45:38 +00:00
kamilkrzywda 8d678d73ce test: assert events for the remaining action types
expand had no event assertion at all; build and mission-complete asserted
type/message but not the event's turn. Issue #11 requires every action type
to be covered with correct turn/type/message.
2026-09-29 02:45:38 +00:00
kamilkrzywda 0d5858695a feat(events): event log read — getEvents + limit parsing
lib/game/events.ts: the latest N events of the save, newest first (ORDER BY
id DESC), with parseEventLimit for the optional ?limit= param (default 50,
cap 200, 400 otherwise). Unit tests cover default/accept/reject and
newest-first ordering + slicing.
2026-09-29 02:45:38 +00:00
kamilkrzywda 6c828e40a6 Merge pull request 'v0.8.0 — MISSIONS: generation, accept & complete (#10)' (#17) from missions into master
CI / build + unit + e2e (push) Successful in 2m44s
v0.8.0
2026-09-29 04:21:13 +02:00
kamilkrzywda b5a072c9aa test(e2e): mission test — match dotted ACTIVE badge, idempotent across retries
CI / build + unit + e2e (pull_request) Successful in 2m25s
CI run 358: the ACTIVE assertion used exact text but badge.tsx renders a
'●' dot prefix for ACTIVE variants (text is '●ACTIVE'), so it could never
match. And attempt 1's accept persisted an ACTIVE mission, leaving every
ACCEPT button disabled on retry. Drop exact matching and, when a leftover
active mission exists, assert the UI state and complete that one instead of
re-accepting.
2026-09-29 02:18:14 +00:00
kamilkrzywda 85eeeecc4a release v0.8.0
CI / build + unit + e2e (pull_request) Failing after 2m53s
2026-09-29 01:56:24 +00:00
kamilkrzywda 70f95145ae test(e2e): mission accept -> complete + board survives restart
smoke: pick an AVAILABLE contract (non-DELIVER preferred), accept it through
the UI (card flips ACTIVE, button disables), complete via API — scan loop for
EXPLORE/FIND, BFS jump path for DELIVER — assert DONE and the reward landed in
the hold. state: mission board deep-equal across the mid-run container restart.
2026-09-29 01:55:49 +00:00
kamilkrzywda 684a126a5b feat(ui): MISSIONS tab renders the live mission board
Self-fetching MissionPanel (world-map pattern — refetches on each tab open,
accept responses applied directly). One card per contract: type title + state
badge, CONTRACT // #id line, objective, reward line, EXPLORE progress line.
ACCEPT enabled only when AVAILABLE and nothing else is ACTIVE. Placeholder
encounter content removed.
2026-09-29 01:55:49 +00:00
kamilkrzywda 786a5ec001 feat(api): GET /api/missions + POST /api/missions/{id}/accept
Routes call ensureSave first (mission functions assume an initialized save),
map MissionError to 404/409 and non-integer path ids to 400. OpenAPI spec in
code gains both paths + the Mission schema (12 -> 14 paths); openapi.test.ts
covers the new shapes.
2026-09-29 01:55:41 +00:00
kamilkrzywda f356ffbe93 feat(missions): mission board — schema, deterministic generation, top-up + v6 backfill
New missions table (schema + DDL). Pure model in lib/game/missions.ts:
DELIVER / EXPLORE / FIND contracts generated from missionRng(seed, turn),
board always topped up to >=3 AVAILABLE after every action. save.ts wires
SCHEMA_VERSION 5 -> 6 with a v6 backfill step and completion hooks inside
jumpToSystem/explorePlanet (one atomic persist). Unit tests cover generation
determinism, top-up idempotency, backfill, accept validation and per-type
completion incl. reward accumulation.
2026-09-29 01:55:34 +00:00
kamilkrzywda 5657e8938a Merge pull request 'v0.7.0 — SKILL TREE: technology research unlocks (#9)' (#16) from skill-tree into master
CI / build + unit + e2e (push) Successful in 2m52s
v0.7.0
2026-09-29 02:59:32 +02:00
kamilkrzywda 80885c8ad7 test: e2e jump helper prefers undiscovered systems — fixes exhausted-territory ping-pong
CI / build + unit + e2e (pull_request) Successful in 2m30s
2026-09-29 00:56:28 +00:00
kamilkrzywda a62ed2cf95 release v0.7.0
CI / build + unit + e2e (pull_request) Failing after 2m41s
2026-09-29 00:39:04 +00:00
kamilkrzywda 672e99bd96 e2e: research unlocks the gated WEAPONS build via UI + tech state survives restart 2026-09-29 00:38:09 +00:00
kamilkrzywda 94e9fc728c ui: real SKILL TREE tab (research) + SHIP SYSTEMS buttons gated by researched techs 2026-09-29 00:35:39 +00:00
kamilkrzywda 7b0227cde9 api+openapi: GET /api/tech + POST /api/research with 400/404/409/422 mapping 2026-09-29 00:30:10 +00:00
kamilkrzywda 8818f0928d game: tech research action + ship-action gating by researched techs (build gate, raised caps) 2026-09-29 00:24:25 +00:00
kamilkrzywda 4ef924edd6 db+game: tech table + starting tech list seeded on new game and v5 backfill step 2026-09-29 00:20:02 +00:00
kamilkrzywda bd16d3fc47 Merge pull request 'v0.6.0 — SHIP SYSTEMS: expand/upgrade/build + save backfill (#8)' (#15) from ship-systems into master
CI / build + unit + e2e (push) Successful in 2m48s
v0.6.0
2026-09-29 01:55:06 +02:00
kamilkrzywda dcaeb4dded release v0.6.0
CI / build + unit + e2e (pull_request) Successful in 3m2s
2026-09-28 23:47:37 +00:00
kamilkrzywda 7e975566ab e2e: ship action via UI (bounded scan until affordable) + ship state survives container restart 2026-09-28 23:46:21 +00:00
kamilkrzywda de0cb45b09 ui: real SHIP SYSTEMS tab (upgrade/expand/build buttons) + left column mirrors live ship state 2026-09-28 23:43:03 +00:00
kamilkrzywda fce27ff6ca api+openapi: GET /api/ship + POST upgrade/expand/build with 400/404/409/422 mapping 2026-09-28 23:38:11 +00:00
kamilkrzywda 5fe306d64d game: ship actions — upgrade/expand/build with cost model, validation (404/409/422), turn + event per action 2026-09-28 23:35:28 +00:00
kamilkrzywda 0910891995 db+game: ship_systems table + starting ship seed (new game and v4 backfill step) 2026-09-28 23:32:04 +00:00
kamilkrzywda c7580d92bd db+game: schema_version on saves with ordered idempotent backfill (v2 bodies, v3 crew) — no more DB wipes 2026-09-28 23:25:06 +00:00
kamilkrzywda f5cba45b42 Merge pull request 'v0.5.0 — CREW: roster with good/bad traits (#7)' (#14) from crew-roster into master
CI / build + unit + e2e (push) Successful in 2m28s
v0.5.0
2026-09-29 01:03:25 +02:00
kamilkrzywda 59ccf5674e release v0.5.0
CI / build + unit + e2e (pull_request) Successful in 2m20s
2026-09-28 22:56:25 +00:00
kamilkrzywda 60947d3cda e2e: CREW tab renders real roster cards with both traits; roster survives container restart 2026-09-28 22:51:26 +00:00
kamilkrzywda 08a15a09cf ui: CREW tab renders real roster cards with traits + origin (real data from /api/crew) 2026-09-28 22:50:01 +00:00
kamilkrzywda a2c8586618 api: GET /api/crew roster endpoint, OpenAPI spec updated in code 2026-09-28 22:47:18 +00:00
kamilkrzywda 7a9ff110f3 game: starting crew seeded on new game; exploration rolls for a joining crew member (same per-planet stream) 2026-09-28 22:45:55 +00:00
kamilkrzywda ccd156b7c6 db+game: crew table and pure seeded crew generation (starting crew + exploration roll) 2026-09-28 22:42:28 +00:00
kamilkrzywda a6a5e827a1 Merge pull request 'v0.4.0 — LOCAL SYSTEM: planets + exploration (#6)' (#13) from local-system-explore into master
CI / build + unit + e2e (push) Successful in 2m55s
v0.4.0
2026-09-29 00:28:58 +02:00
kamilkrzywda 0ddba27333 release: v0.4.0 — LOCAL SYSTEM planet list + exploration to find things (issue #6)
CI / build + unit + e2e (pull_request) Successful in 3m6s
2026-09-28 22:17:56 +00:00
kamilkrzywda 1a50ffb2f9 e2e: local system smoke tests (staggered bodies, explore row state, inventory accumulation) + explored-state persistence across restart 2026-09-28 22:17:03 +00:00
kamilkrzywda 82d41b87be ui: LOCAL SYSTEM tab renders real bodies with explore buttons + cargo hold (real data from /api/system) 2026-09-28 22:13:19 +00:00
kamilkrzywda 8153007668 api: GET /api/system + POST /api/explore, OpenAPI spec updated in code 2026-09-28 22:11:01 +00:00
kamilkrzywda 3aa27ffd89 game: bodies generated with each system; explore action — deterministic haul, turn cost, inventory accumulation 2026-09-28 22:07:53 +00:00
kamilkrzywda cbab17047b game: seeded planet/moon generation per system + deterministic exploration roll 2026-09-28 22:04:23 +00:00
kamilkrzywda 172f167a15 db: planets (planets+moons via parent_id) and inventory_items tables 2026-09-28 22:01:41 +00:00
kamilkrzywda b79b77131f Merge pull request 'v0.3.0 — WORLD MAP: world generation + jump (#5)' (#12) from world-map-jump into master
CI / build + unit + e2e (push) Successful in 3m5s
v0.3.0
2026-09-28 23:43:08 +02:00
kamilkrzywda f36820ddff release: v0.3.0 — world generation + jump between solar systems (issue #5)
CI / build + unit + e2e (pull_request) Successful in 3m7s
2026-09-28 21:36:37 +00:00
kamilkrzywda 6a623c738a e2e: world map smoke tests + jump persistence across container restart 2026-09-28 21:35:15 +00:00
kamilkrzywda 80b493746f test: openapi spec assertions for the world endpoints 2026-09-28 21:35:15 +00:00