moth

Monarch Of The Hill game server
git clone https://git.woozle.org/neale/moth.git

Neale Pickett  ·  2024-04-18

CHANGELOG.md

  1# Changelog
  2All notable changes to this project will be documented in this file.
  3
  4The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
  5and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
  6
  7## [v4.6.2] - 2024-04-17
  8### Fixed
  9- Fixed code to intentionally break config.json loading, used to test v4.6.1
 10
 11## [v4.6.1] - 2024-04-17
 12### Fixed
 13- Fixed bug with solved puzzle tracking when config.json cannot be loaded.
 14
 15## [v4.6.0] - 2024-04-17
 16### Fixed
 17- Mothd now correctly handles using the current directory for a path.
 18  For instance, `-puzzles .`
 19
 20### Changed
 21- Theme configuration has a new structure: 
 22  old theme config files need to be modified
 23- Theme now omits the qix animation in the background
 24  if the user has configured the browser to reduce motion.
 25  This should help people with vestibular motion disorders,
 26  or people who are annoyed by the animation.
 27- Theme colors are now specified with CSS variables,
 28  making the theme (hopefully) easier to re-color.
 29  
 30### Added
 31- Theme: brought back integrated Python IDE,
 32  with updated versions of CodeJar and Prism.js.
 33  These depend on a CDN, but if it cannot be reached,
 34  there is a graceful fallback.
 35- Theme (nearly) instantly updates the list of open puzzles
 36  when a puzzle is solved. 
 37  Users should no longer need to refresh the index after solving a puzzle.
 38- Theme fires confetti 🎊 when a puzzle is answered correctly.
 39  This requires a CDN; if unreachable, everything still works.
 40- Theme closes the tab a few seconds after a puzzle is answered
 41  correctly.
 42
 43## [v4.5.0] - 2024-01-19
 44### Changed
 45- Answer hashes are now the first 4 characters of the hex-encoded SHA1 digest
 46- Reworked the built-in theme
 47- Devel mode no longer accepts an empty team ID
 48- messages.html moved into theme
 49
 50### Added
 51- [moth.mjs](theme/moth.mjs) is now the standard MOTH library for ECMAScript
 52- Exported state now includes "Enabled" boolean
 53- New `Extra` field on puzzles will allow arbitrary metadata on puzzles.
 54
 55## [v4.4.11] - 2023-04-11
 56### Changed
 57- CI/CD now builds tags
 58
 59## [v4.4.10] - 2022-10-21
 60### Changed
 61- `enabled` file is no longer used
 62- `hours.txt` parsing logs more verbosely
 63- Participant IDs are no longer used anywhere
 64- A few changes to CI/CD test reporting
 65
 66## [v4.4.9] - 2022-05-12
 67### Changed
 68- Added a performance optimization for events with a large number of teams
 69  backed by NFS
 70
 71## [v4.4.8] - 2022-05-10
 72### Changed
 73- You can now join with a team ID not appearing in `teamids.txt`, 
 74  as long as it is registered (in the `teams/` directory)
 75
 76## [v4.4.7] - 2022-05-10
 77### Changed
 78- Initializing an instance now truncates `events.csv`
 79
 80## [v4.4.6] - 2021-10-26
 81### Added
 82- State is now cached in memory, in an attempt to reduce filesystem metadata operations,
 83  which kill NFS.
 84
 85## [v4.4.5] - 2021-10-26
 86### Added
 87- Images deploying to docker hub too. We're now at capacity for our Docker Hub team.
 88
 89## [v4.4.4] - 2021-10-20
 90### Changed
 91- Trying to get CI push of built images. I expect this to fail, too. But in a way that can help me debug the issue.
 92
 93## [v4.3.3] - 2021-10-20
 94### Fixed
 95- Points awarded while scoring is paused are now correctly sorted (#168)
 96- Writing a new mothball with the same name is now detected and the new mothball loaded (#172)
 97- Regression test for issue where URL path leading directories were ignored (#144)
 98- A few other very minor bugs were closed when I couldn't reproduce them or decided they weren't actually bugs.
 99
100### Changed
101- Many error messages were changed to start with a lower-case letter, 
102  in order to satisfy a new linter check.
103- CI/CD moved to our Cyber Fire Gitlab instance
104- I attempted to have the build thingy automatically build moth:v4 and moth:v4.3 and moth:v4.3.3 images, 
105  but I can't test it without tagging a release. 
106  So v4.3.4 might come out very soon after this ;)
107
108## [v4.2.2] - 2021-09-30
109### Added
110- `debug.notes` front matter field
111
112## [v4.2.1] - 2021-04-13
113### Fixed
114- Transpiled KSAs no longer dropped
115
116## [v4.2.0] - 2020-03-26
117### Changed
118- example/5/draggable.js fix for FireFox to prevent dropping a draggable trying to load a URL
119- `transpile` arguments now work the same way for the transpile binary as they do for mkpuzzle
120- `transpile inventory` does what you expect: inventory of current category, not inventory of all categories
121
122### Removed
123- No longer building a `moth-devel` image,
124  this is now handled by the
125  [moth-devel repository](https://github.com/dirtbags/moth-devel).
126
127### Fixed
128- `transpile` will now run `mkcategory` and `mkpuzzle` when invoked without `-dir`
129
130
131## [v4.1.1] - 2020-03-02
132### Removed
133- ppc64le and i386 builds of github, because ppc64le keep failing mysteriously, and we don't need them anyhow.
134
135
136## [v4.1.0] - 2020-03-02
137### Added
138- `transpile` now has a `markdown` command,
139  so you can use the "stock" markdown formatter
140
141### Changed
142- event.log is now events.csv, to make it easier to import to a spreadsheet
143- When in devel mode, any team ID may score points. This allows more interaction with the state directory.
144- When in devel mode, any team ID may be registered.
145  It still works the same way if you register a team in `teamids.txt`,
146  but now you can use anything and it will put you on an already existing team
147  named `<devel:$ID>`.
148- switched from `blackfriday` to `goldmark`, to support CommonMark
149- `puzzle.json`no longer has `Pre` and `Post` sections
150
151### Removed
152- JavaScript code we didn't write is now pulled from a CDN
153
154
155## [v4.0.2] - 2020-10-29
156### Added
157- Build multiarch Docker images
158### Changed
159- Stop building devel server from this codebase; this is moving to a new repo
160
161## [v4.0.1] - 2020-10-27
162### Fixed
163- Clear Debug.summary field when making mothballs
164
165### Changed
166- Regulated category/puzzle provider API: now everything returns a JSON dictionary (or octet stream for files)
167
168### Added
169- More log events
170- [Log channels document](docs/logs.md)
171- More detailed [API documntation](docs/api.md)
172- Transpiler warning if `mkpuzzle` exists but is not executable
173
174
175## [v4.0.0] - 2020-10-14
176### Fixed
177- Multiple bugs preventing production server from working properly
178- CI builds should be working now
179- Team registration now correctly writes names to files
180- Anonymized team names now only computed once per team
181- Don't output "self" team for unauthenticated state exports
182
183### Added
184- Documented the HTTP API
185- Added a drawing of how things fit together
186
187
188## [v4.0-rc1] - 2020-10-13
189### Changed
190- Major rewrite/refactor of `mothd`
191  - Clear separation of roles: State, Puzzles, and Theme
192    - Sqlite, Redis, or S3 should fit in easily now
193    - Will allow "dynamic" puzzles now, we just need a flag to enable it
194  - Server no longer provides unlocked content
195    - Puzzle URLs are now just `/content/${cat}/${points}/`
196  - Changes to `state` directory
197    - Most files now have a bit of (English) documentation at the beginning
198    - `state/until` is now `state/hours` and can specify multiple begin/end hours
199    - `state/disabled` is now `state/enabled`
200- Mothball structure has changed
201  - Mothballs no longer contain `map.txt`
202  - Mothballs no longer obfuscate content paths
203  - Clients now expect unlocked puzzles to just be `map[string][]int`
204- New `/state` API endpoint
205  - Provides *all* server state: event log, team mapping, messages, configuration
206
207### Added
208- New `transpile` CLI command
209  - Provides `mothball` action to create mothballs
210  - Lets you test a few development server things, if you want
211
212### Deprecated
213
214### Removed
215- Development server is gone now; use `mothd` directly with a flag to transpile on the fly
216
217### Fixed
218
219### Security
220
221
222## [v3.5.1] - 2020-03-16
223### Fixed
224- Support insta-checking for legacy puzzles
225
226
227## [v3.5.0] - 2020-03-13
228### Changed
229- We are now using SHA256 instead of djb2hash
230
231### Added
232- URL parameter to points.json to allow returning only the JSON for a single
233  team by its team id (e.g., points.json?id=abc123).
234- A CONTRIBUTING.md to describe expectations when contributing to MOTH
235- Include basic metadata in mothballs
236- add_script_stream convenience function allows easy script addition to puzzle
237- Autobuild Docker images to test buildability
238- Extract and use X-Forwarded-For headers in mothd logging
239- Mothballs can now specify `X-Answer-Pattern` header fields, which allow `*`
240  at the beginning, end, or both, of an answer. This is `X-` because we
241  are hoping to change how this works in the future.
242
243### Fixed
244- Handle cases where non-legacy puzzles don't have an `author` attribute
245- Handle YAML-formatted file and script lists as expected
246- YAML-formatted example puzzle actually works as expected
247- points.log will now always be sorted chronologically
248
249
250## [3.4.3] - 2019-11-20
251### Fixed
252- Made top-scoring teams full-width
253
254
255## [3.4.2] - 2019-11-18
256### Fixed
257- Issue with multiple answers in devel server and YAML-format .moth
258
259
260## [3.4.1] - 2019-11-17
261### Fixed
262- Scoreboard was double-counting points
263
264
265## [3.4] - 2019-11-13
266### Added
267- A changelog
268- Support for embedding Python libraries at the category or puzzle level
269- Minimal PWA support to permit caching of currently-unlocked content
270- Embedded graph in scoreboard
271- Optional tracking of participant IDs
272- New `notices.html` file for sending broadcast messages to players
273
274### Changed
275- Use native JS URL objects instead of wrangling everything by hand