ginnoir
|
ee79872d4d
|
feat(ui): app shell with nav rail
|
2026-06-11 21:24:42 -05:00 |
|
ginnoir
|
ed9607e9e8
|
refactor(state): address HMR and defensive slicing recommendations for runtime
|
2026-06-11 21:23:18 -05:00 |
|
ginnoir
|
b29b17c6cb
|
refactor(state): fix code quality findings for runtime and story log
|
2026-06-11 21:20:52 -05:00 |
|
ginnoir
|
239b2506ec
|
feat(state): runtime performAction and nav story signals
|
2026-06-11 21:16:27 -05:00 |
|
ginnoir
|
adf730702d
|
refactor(state): address review recommendations for store and prefs
|
2026-06-11 21:14:04 -05:00 |
|
ginnoir
|
09e2d06b87
|
refactor(state): fix code quality findings for nav panel store and prefs
|
2026-06-11 21:12:20 -05:00 |
|
ginnoir
|
9b2793b264
|
feat(state): nav panel store and expanded prefs
|
2026-06-11 21:10:07 -05:00 |
|
ginnoir
|
73d836fe96
|
feat(state): project actions into columns and story tree
|
2026-06-11 21:01:42 -05:00 |
|
ginnoir
|
163f710f4c
|
feat(engine): add performAction dispatcher by kind
|
2026-06-11 20:53:55 -05:00 |
|
ginnoir
|
0de61d3e41
|
feat(engine): loop idle runner with enabledLoopActionIds
|
2026-06-11 20:44:20 -05:00 |
|
ginnoir
|
8d9484171f
|
feat(engine): execute story actions via storyChoiceId
|
2026-06-11 20:36:07 -05:00 |
|
ginnoir
|
b3940774c4
|
feat(engine): add instant action execution
Implements executeInstant, which applies an instant action's costs and
yields immediately with no queue slot and no duration requirement.
|
2026-06-11 20:29:28 -05:00 |
|
ginnoir
|
b54805637c
|
feat(content): migrate stub actions to kind/group model
|
2026-06-11 20:23:49 -05:00 |
|
ginnoir
|
c1b38e36aa
|
fix(content): guard optional durationMs and cover loop validation
|
2026-06-11 20:17:50 -05:00 |
|
ginnoir
|
c48e53cc7b
|
feat(content): add action kind and group schema
|
2026-06-11 20:12:21 -05:00 |
|
ginnoir
|
96ac4011eb
|
chore: format story.test.ts for CI
CI / verify (push) Successful in 1m4s
CI / verify (pull_request) Successful in 48s
|
2026-06-11 19:23:58 -05:00 |
|
ginnoir
|
c76265d648
|
docs: document story engine and PR2 playable loop
CI / verify (push) Failing after 58s
CI / verify (pull_request) Failing after 41s
|
2026-06-11 19:00:49 -05:00 |
|
ginnoir
|
1461510a4b
|
feat(content): stub story graph with A/B branch and route-gated actions
|
2026-06-11 18:59:17 -05:00 |
|
ginnoir
|
fdefe83b89
|
feat(ui): settings drawer and story button in app shell
|
2026-06-11 18:58:10 -05:00 |
|
ginnoir
|
9d58d97373
|
feat(ui): full-screen story panel with VN layout and story log
|
2026-06-11 18:57:30 -05:00 |
|
ginnoir
|
4be5223ca8
|
feat(ui): action queue list, cancel, disabled states, and hints
|
2026-06-11 18:56:54 -05:00 |
|
ginnoir
|
9a7eb3065a
|
feat(state): wire story triggers and choices through runtime
|
2026-06-11 18:55:42 -05:00 |
|
ginnoir
|
a230a46850
|
feat(state): story trigger orchestration and auto-open rules
|
2026-06-11 18:55:08 -05:00 |
|
ginnoir
|
a69585e89c
|
feat(state): store story panel and prefs UI state
|
2026-06-11 18:54:34 -05:00 |
|
ginnoir
|
8d83f9899b
|
fix(state): prefs test localStorage mock typing
|
2026-06-11 18:54:07 -05:00 |
|
ginnoir
|
f29b05bd70
|
feat(state): view model action availability and story passage
|
2026-06-11 18:53:50 -05:00 |
|
ginnoir
|
b88399ac14
|
feat(state): localStorage player prefs for story and action display
|
2026-06-11 18:52:39 -05:00 |
|
ginnoir
|
9196c77e25
|
feat(save): persist story flags and node progress in v1
|
2026-06-11 18:52:16 -05:00 |
|
ginnoir
|
51d3ec1a4b
|
feat(engine): applyChoice and gated choice filtering
|
2026-06-11 18:51:49 -05:00 |
|
ginnoir
|
720f6166cf
|
feat(engine): evaluateTriggers for boot, actionComplete, minResources
|
2026-06-11 18:51:07 -05:00 |
|
ginnoir
|
717af1ef51
|
feat(engine): story outcomes and enterStoryNode
|
2026-06-11 18:50:34 -05:00 |
|
ginnoir
|
c7d1f3f51b
|
feat(content): add action story hints and merge GameContent
|
2026-06-11 18:50:01 -05:00 |
|
ginnoir
|
a66a7db066
|
feat(content): add Zod story graph schema and validation
|
2026-06-11 18:49:28 -05:00 |
|
ginnoir
|
dc7b87eab2
|
feat(engine): tickGame returns completed action ids for story triggers
|
2026-06-11 18:48:41 -05:00 |
|
ginnoir
|
d2692bcc3c
|
feat(engine): add story fields to GameState
|
2026-06-11 18:47:18 -05:00 |
|
ginnoir
|
1c5fcc80ad
|
chore: pass PR1 verification gate (format, lint, coverage)
CI / verify (pull_request) Successful in 50s
CI / verify (push) Successful in 48s
|
2026-06-11 18:23:43 -05:00 |
|
ginnoir
|
fce561b8e5
|
feat(state): wire enqueueAction through runtime and view model
|
2026-06-11 18:21:12 -05:00 |
|
ginnoir
|
7625e081fd
|
feat(content): add M1 stub resource and action pack
|
2026-06-11 18:20:26 -05:00 |
|
ginnoir
|
964e9260fa
|
feat(save): persist action queue in v1 save payload
|
2026-06-11 18:19:49 -05:00 |
|
ginnoir
|
f514eeedf8
|
feat(engine): costs on start, unlock checks, queue completion advancement
|
2026-06-11 18:19:16 -05:00 |
|
ginnoir
|
ea2fb0afab
|
feat(engine): add action queue state and enqueue APIs
|
2026-06-11 18:18:17 -05:00 |
|
ginnoir
|
923a7a3dac
|
feat(content): add action unlock condition schema
|
2026-06-11 18:17:07 -05:00 |
|
ginnoir
|
ee3d463c9c
|
feat(content): add action costs and multi-yield schema
|
2026-06-11 18:16:26 -05:00 |
|
ginnoir
|
458a795014
|
docs(engine): clarify offline tick batching vs save-layer clamp
|
2026-06-11 18:15:27 -05:00 |
|
ginnoir
|
37f4460eaa
|
test(engine): guard against React/DOM imports in engine
|
2026-06-11 18:14:28 -05:00 |
|
ginnoir
|
e3f8cf7efc
|
test(engine): add tick loop + game determinism integration test
|
2026-06-11 18:12:52 -05:00 |
|
ginnoir
|
ec8f857845
|
feat: bootstrap walking skeleton
|
2026-06-11 17:06:52 -05:00 |
|