All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
1.4.0 (2021-06-06)
- actor: begin emitting commands for behavior actors (#91) (12811d8)
- command: add worlds list (fixes #104) (80a3ff5)
- loader: check path protocol before handling (fixes #56) (e116eab)
- loader: extract URL split helper (4d4469f)
- model: add default entity templates to world template, use default scripts (6f4e42c)
- random: rename seed generator to alea, reflecting the algorithm used (11d7dc9)
- render: add basic shortcut menus (#72) (ef9eef3)
- render: add game over screens to React DOM and Ink renders (fixes #97) (fafc7f6)
- render: debounce room and output updates, add mock shortcut menus (7fa2445)
- render: make shortcut menus optional (fixes #72) (92df77b)
- script: actors drop inventory upon death (fixes #106) (f7b33cb)
- script: provide and use state find helper (55cf06c)
- script: remove direct access to state, rename signal constants, begin testing local state (418d843)
- state: clarify world state vs template (fixes #93) (3869e60)
- state: merge state creation methods, remove noop save (d8941be)
- state: move state creation to generator (a2143d5)
- state: provide a way for scripts to end game (#83) (66b348a)
- state: queue actor commands and step once all actors have responded (fixes #112) (61276f3)
- state: remove verbs by setting script name to empty (fixes #75) (7932c5c)
- state: support loading data files that do not contain state (#105) (04a60e3)
- test: switch tests to console logging when DEBUG=TRUE (3fb7b79)
- util: add collection to track queue completion (6fa2128)
- util: pass config to managed services (8c8e6c3)
- util: use page URL for config paths (25d57b5)
- add and use catch-and-log helper (f5d2525)
- add argument to run commands when state starts (fixes #79) (6148dea)
- add helper for events without cancellation, use (d0d642c)
- add service manager for batch stop (422cc1c)
- combine entity slots and verbs into scripts, invoke verbs through script svc, split up scripts (12dd40c)
- put loader on event bus (#85), update main to fire events, add create world meta-command (#70) (81c9821)
- queue commands in state for next step (fixes #91), inform actor services of their actor(s), consolidate behavior actors (fixes #88) (a759b6e)
- support custom verbs (fixes #78), show actor verbs in help (c7bfa2d)
- trigger first render after input args (76912bf)
- actor: localize help and game over text, improve error handling (2d4edef)
- build: make it possible to switch layout for debug graph (a973526)
- build: update esbuild exclude patterns (d9cb18e)
- command: fix scrolling for debug meta-command (080a2f2)
- data: increase damage for bat teeth (d21098d)
- data: register common verbs for existing actors (48e8fab)
- data: restore english text for debug graph (a8cde9a)
- data: show inventory item ID when looking (940a920)
- data: translate unknown verbs in error message (04c29bf)
- docs: add animated snippet to readme (6448df6)
- docs: add examples of template primitives (#98) (b51a285)
- docs: add table of service eventing, coupling (ee7db0b)
- docs: describe common verbs in getting started (13de49d)
- docs: explain how to play (715fc3b)
- docs: move custom verbs from planned to done (e9c8dc1)
- docs: put services in their own doc (0bd1411)
- module: make parser and tokenizer singletons in core module (f607a1e)
- render: auto-focus Ink input, use typed config for render (01574de)
- state: type step event (153c3d9)
- type actor and render output, eliminate redundant single-element arrays (f5c019c)
- docs: show major event flows (02fdf35)
- docs: update arch with new services, world templates with format changes (#98) (8a413a7)
- render: do not submit empty lines (8ca6d01)
- script: remove test broadcast script (fa34063)
- script: split up verb scripts (cc90062)
- state: add error messages for pre-state verbs (fixes #99) (0f703c6)
- state: clean up search params, remove leftover matcher params (9e797a7)
- state: combine redundant searches for actor-room transfer, fix room expansion (0ad9c17)
- state: emit load event when world loads, not just after creation (5191466)
- state: fire join event before adding new actor to room (97bfb3e)
- state: handle not-yet-valid verbs better (#99), invoke room verbs correctly, do not overwrite signal scripts (ab595f3)
- state: make transfer helper entity type checks more strict, test (0241bad)
- state: run initial room population before load event (b32b3d1)
- state: use existing player actor when loading (fixes #100), keep player actor name and set id to pid (844663d)
- state: wait until loader indicates done before showing save message, check load event for state property rather than path, test (edfac98)
- test: cover behavior actor eventing, node fetch loader, stub others (1a3692b)
- test: cover more meta commands (54d67bc)
- test: cover player join, uninitialized state step (bba0901)
- test: cover volume filter, stack map, state generator modifiers (700c147)
- util: split up state and script utils (0cf60a6)
- automatically create world when browser bundle starts (29abd47)
- copy full context when calling transfer scripts, test stack map more (d0bbeab)
- release services, listeners on quit, add event constants (3832dfc)
- update embedded config in index (f19aa7d)
1.3.0 (2021-05-29)
- actor: make non-player actors move between rooms and attack players (fixes #49) (e503f38)
- actor: notify behavior actors of state changes (b5a60a2)
- build: add esbuild bundle and browser entrypoint (#7) (0626e63)
- command: move command uses index, target portals by group and/or name (fixes #66) (a311955)
- command: roll random damage on hit (fixes #65) (4a9bce9)
- event: consolidate events through a bus (9f9e6b8)
- loader: add browser fetch loader (fixes #77), split up node and browser loaders, load demo world from github (7e51863)
- loader: add node-fetch loader for http/s worlds (#77) (89470f7)
- locale: get current language from config (fixes #84) (d8e18ef)
- state: filter output by source entity, room, and volume (fixes #67) (3b1637f)
- state: fully implement template modifiers (fixes #6) (836f28f)
- state: show help when game loop starts (c46fa21)
- state: start applying template modifiers (#6) (d999962)
- template: use template primitives in modifiers, basic replacement string (fixes #90) (6a8c71d)
- add base types for template modifiers (#6) (0b9c2e9)
- add React render, page loader, basic web UI (#7) (a3226ac)
- generate unidirectional portals (fixes #59) (b96a040)
- parse real CLI arguments to main (fixes #69) (b359902)
- split actor service and tokenizer, type actor/render/state events (dc7d635)
- unify browser/node entrypoints, enable DI modules through main args (ad12a7f)
- use event bus throughout, strip whitespace from command parts, move common verbs to config, make portal depth an argument (320e5f7)
- template: add step to template number (fixes #58) (5c036b0)
- template: render verb and mixed-primitive maps (685dfe7)
- util: add and test entity containment helpers (fixes #53) (7932e27)
- world: record starting actor and room in saved state (fixes #68) (e64e561)
- build: copy entry HTML to output (06e4c8d)
- build: exclude docs, bundles from coverage (2daee6d)
- build: process coverage correctly for repeat bundle builds (50842fa)
- build: rename push branch var to fix CC report branch (03e9541)
- command: add localized error when portal is missing, describe room on entry (8a4e63d)
- command: filter hit messages (fixes #82) (28c239b)
- command: only allow actors to drop items from their own inventory (#64) (e46165e)
- command: only take items in the current room, prevent accidental pickpocketing (fixes #64) (dbb6634)
- command: print help verbs as lines to fix translation (9b455f0)
- component: monospace React output (3d18347)
- data: add marsh room (fd3e64a)
- data: correct damage modifier for shiny swords (0ad032d)
- data: give multiple possible destinations to more portals (1be1635)
- docs: add snippet image to reamde (42a1c95)
- docs: link dev, worlds from getting started (ecb0d7e)
- docs: link readme image to GH pages (728b5f4)
- docs: mention GH pages in readme (1ec1326)
- locale: log when adding locale bundles (2de2471)
- module: export actor locator rather than calling DI container during state steps (3c1903d)
- module: remove player-actor injection symbol, ensure actor service only starts once (8469297)
- random: generate integers correctly when min equals max (bcc6f33)
- random: remove unused ID method, cover the rest with tests (df2d5d6)
- render: add debounce helper for React output, unused (b7a57d9)
- render: add kind field to ink render logs (b17fc26)
- render: unify React-based render frontends (ee497c5)
- render: update React turn indicator (dea790e)
- script: flatten actor step logic, cover with tests (5e71721)
- script: prevent actors from hitting themselves (#64) (c2e59fb)
- state: DRY up generator logic, add template ref list methods (8d9294f)
- state: print help on a single line again, but translated (2877e01)
- test: begin testing input services, fix errors (db0e356)
- test: cover collection rendering in chain template (9def185)
- test: cover i18next locale, local script services (25a2e7a)
- test: cover local ID counter, chain template engine (4e1c7a9)
- test: cover page loader (931158d)
- test: cover state focus helper (c9273c9)
- test: cover YAML parser (ecbc828)
- util: clean up debug graph portal labels (c6a4b29)
- util: correct ID prefix matching, test that and tranfer helper (7174c30)
- world: reduce the chances of normal goblins having swords (95679c4)
- replace incorrectly-used invalid target errors (adc429c)
- use typed errors (0784fcd)
1.2.0 (2021-05-23)
- input: translate verbs before sending commands (e03f0f5)
- state: localize output while streaming (#60), select random dest portal from options (5ed643c)
- begin loading and using locale from config (0645a3e)
- make state event emitter, consume events from render (#63) (3722671)
- build: add docker image, split up dev and prod deps (a9d4cbe)
- build: add eslint target (90186a0)
- build: add gitlab CI pipeline (11e99f4)
- command: add item get slot to actors and show item info (fixes #45) (dd03793)
- command: honor target for look command (fixes #5) (31b6d0f)
- command: look up local target for use command (fixes #28) (3c96730)
- command: use command target for actor step target searches, disable actor step after death (69cb0e8)
- input: move actor/input mapping into DI module (f2c3c7f)
- input: parse target index from commands (4de58c7)
- module: split input services into their own module (2741b22)
- render: add marker in between turns (fixes #48) (87207ec)
- template: reverse join chain operator order, AND first (d72d955)
- util: provide singleton factory in constructor (79164b5)
- world: add chance to template refs (fixes #55) (aed8219)
- world: extract focus and transfer helpers from state svc (#50) (4c97f1b)
- world: implement save/load for local state (c866e64)
- world: turn name/desc into template strings and start actor/room into template refs (c1fca0c)
- move meta command handling to state service (d4a9b14)
- build: add codeclimate and npm configs (1243a99)
- build: add coverage and help targets, help for others (8f3d94e)
- build: lower coverage reqs to match current tests (38a3283)
- build: make docker image script fail if build or push does (9c2f1eb)
- build: make docker image variable, DRY up run targets (353938e)
- build: remove noop CC prep job (f0b3614)
- component: remove output from Ink/React state (d32dae5)
- docs: cover build targets, debugging (043522d)
- render: remove extra newline, fix input height for ink render (86434ad)
- render: use text box component in ink render that supports scrolling (c272d0b)
- translate verbs when world is created, remove min param from map increment helper, various lint fixes (7657454)
- build: add CI target (e58adea)
- build: specify paths for CC upload (56ea58c)
- docs: describe most world template fields (9a6f389)
- docs: start describing world format, authoring (42e25b2)
- lint: give single-letter generic params better names (1b240fe)
- lint: initial cleanup (77f7e97)
- lint: move components out of render tree (8a7a707)
- lint: remove unnecessary cast, some obsolete todos (e141fd7)
- lint: rename script scope to context, which it is (5bdf6da)
- lint: round 2 (3d87338)
- locale: localize existing strings, improve some logs (fd4d769)
- module: use singleton helper in DI modules (3ce8e44)
- render: consolidate line render prompts, limit ink render history size (a5c415a)
- render: ensure line render writes output before next prompt (26b26e6)
- render: handle errors within effects when event listeners are released early (9003a5d)
- render: move step output display to render hook (25f0d3b)
- render: put newline between turn prompt and output on line render (d5ad920)
- render: remove event listeners during component cleanup (a95934f)
- render: remove logger-render adapter, do not write world state to logs on exit (306a791)
- render: show turn prompt, split input into its own module (b3713eb)
- state: extract world generator helper from state service (19d3b6b)
- state: refresh focus and transfer helpers on state load (0e77722)
- update line render to work with new events, clean up meta commands (c72fc5d)
- render: pass step result directly to ink state, split step and line state (531a3eb)
- script: only describe current room if no target is passed to look (b27c15e)
- script: only print command info for player (af3efe6)
- script: send command feedback to render output (8619bf1)
- template: join templates with spaces now that IDs are not templates (fixes #52) (f2acbb0)
- test: cover map and state debug helpers (283c8ba)
- test: cover models, register chai-as-promised (ba6cc55)
- test: join chain tests for AND/OR flip (9311363)
- util: make state debug utils return output as strings rather than rendering (fa9a26f)
- util: reduce looping when searching state, support custom matchers (fixes #44) (a305361)
- world: do not template entity IDs (fixes #54) (c51434d)
- world: match entities by ID segment when searching state (fixes #57) (50708bc)
- world: remove redundant lookup from transfer helpers, since clients already have target info (518d94c)
- make sure service loggers create a child with their constructor name (4c106f6)
- remove controller nomenclature (7ae4fe8)
1.1.0 (2021-05-16)
- command: implement actor hit command (e25be91)
- config: load logger options from config (1e38a04)
- config: validate config data before use (d49d597)
- loader: validate most data file fields (071e543)
- render: add Ink renderer with history and input (c2ffe69)
- render: limit Ink render history length, exit cleanly (40c3a44)
- render: push main loop into render (dd6a53d)
- script: add room id to look output (201e28e)
- state: implement item transfer, drop/take commands (b823475)
- util: add state search helper for name or id (2266380)
- render: remove handlers individually rather than by name (2f8289e)
- script: use scope state for broadcast search (7a1c5de)
- state: prevent transfer when target item is not in the same room, or when source and dest are the same (1a418a6)
- template: use group/item delimiters from options when splitting (76b1fe6)
- util: move async tracker out of main (30d6341)