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
kamilkrzywda
37c3800479
ui: WORLD MAP tab renders live world state with jump buttons (real data from /api/world)
2026-09-28 21:32:48 +00:00
kamilkrzywda
cc6abe8f36
api: GET /api/world + POST /api/jump, OpenAPI spec updated in code
2026-09-28 21:29:23 +00:00
kamilkrzywda
58ac64af4f
game: save lifecycle — auto-init, world state, jump with adjacency validation + chart growth
2026-09-28 21:28:14 +00:00
kamilkrzywda
1634c0602e
game: seeded world generation (pure) — start region + expansion rings
2026-09-28 21:25:14 +00:00
kamilkrzywda
922a20707b
db: game save schema — saves, solar_systems, jump_routes, events (single-player, one save)
2026-09-28 21:25:14 +00:00