Neale Pickett
·
2026-01-07
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## [1.2.8] - 2026-01-07
8### Changed
9- Default variant no longer publishes all params
10
11### Added
12- Default variant adds "moth releaseid" with .Params.release-id
13
14
15## [1.2.7] - 2025-10-27
16### Added
17- Seed is now stored in v5 mothballs
18
19### Changed
20- Modifying a file in the middle of the build will restart the build
21
22
23## [1.2.6] - 2025-05-08
24### Changed
25- SCTR variant now uses `$VERSION` instead of `$GITLAB_CI_VERSION`
26
27
28## [1.2.5] - 2025-05-08
29### Fixed
30- Version number is now correct (oops, forgot to edit changelog)
31
32
33## [1.2.4] - 2025-05-08
34### Added
35- `getenv` template function
36
37### Changed
38- SCTR variant changes
39
40## [1.2.3] - 2025-03-31
41### Fixed
42- moth4 variant adds question to body, if a question field exists
43
44## [1.2.2] - 2025-03-25
45### Changed
46- Default variant no longer sets a title when no title is provided for a puzzle
47
48## [1.2.1] - 2025-03-25
49### Fixed
50- Default variant logs every "moth" metadata field (#12)
51- More relative URLs fixed in docs HTML
52- Default variant: `-unsafe` now creates an unlocked category, which it should have been doing all along
53
54### Changed
55- Adjusted some documentation to better reflect reality
56
57### Added
58- Documentation on category formatting
59- Descriptions of puzzle front matter fields
60- "markdown" variant writes `puzzles.md`, covering every puzzle in the category
61
62
63## [1.2.0] - 2025-03-03
64### Added
65- Cocoon can now be used to debug MOTH clients with `-web`.
66- Stub call for `PUT /-/state/teamdata` to make clients think that team registration worked.
67- State information now includes `TeamData.self`,
68 so clients will think they are already logged in.
69
70### Changed
71- Variant web files are now served from `/`, not `/web`.
72- Variant web files are only served in no such file exists in the `-web` directory.
73 This allows client developers to use cocoon to work on (parts of) their client.
74
75## [1.1.2] - 2025-02-25
76### Fixed
77- Another attempt to fix the CI/CD release rule.
78
79## [1.1.1] - 2025-02-25
80### Fixed
81- Fixed (I hope) the CI/CD release rule, so there's actually a release.
82 No other changes.
83
84## [1.1.0] - 2025-02-24
85### Added
86- New `cocoon` command provides interactive HTTPd view of transpiile;
87 previously, this functionality was part of `pupate`
88- `cocoon` will set up a `categories` directory, populating it with the example puzzles.
89 You can skip this by providing your own puzzle categories directory as an argument.
90- `pupate` command only compiles categories now;
91 the interactive development environment is `cocoon`
92- "markdown" is a new variant that just outputs basic text.
93
94### Fixed
95- Preserve whitespace in debug block (#4)
96- Skip hidden directories when building categories (#5)
97- Propagate environment variables (#6)
98- Don't overwrite files created by mkpuzzle (#7)
99- Unique $SEED per puzzle (#9)
100
101## [1.0.9] - 2025-01-31
102### Fixed
103- mothv4 variant no longer fails when objectives are provided
104
105
106## [1.0.8] - 2025-01-31
107### Fixed
108- Restored `{{.PupateVersion}}` and `{{.PupateDate}}`
109
110
111## [1.0.7] - 2025-01-24
112### Fixed
113- Restored ability to use template functions in puzzle.md files
114
115
116## [1.0.6] - 2025-01-02
117### Changed
118- Code restructured to support >1 command
119- CI/CD releases of container images and executables, from tagged commits
120- `static` directory is now `web`
121
122
123## [1.0.5] - 2024-12-17
124- Rapid development here in an attempt to automate Cyber Fire puzzle builds.
125
126### Fixed
127- v4 variant now includes answer hashes
128
129### Changed
130- We try to run python as `python3`. If that doesn't exist, we try `python`.
131 We do this because Windows and Linux disagree on what the executable is called.
132
133
134## [1.0.4] - 2024-12-16
135### Added
136- Variant configuration option `Mothball` to create `.mb` files from categories.
137- examples/counting/500 demonstrates attachments
138- category bodies are displayed by default variant
139- CI/CD container image build
140
141### Removed
142- InjectStyle / OverrideStyle is gone now.
143 If you don't want style sheets in a puzzle, you can remove them with JavaScript.
144 To date, we have never had a puzzle that wanted to do this:
145 the strategy appears to be "link to a new .html file".
146
147### Changed
148- unsafe mothballs get their own extension, to prevent possible oopsies
149- Linux binary no longer links libc
150- CI/CD builds Linux and Windows executables
151- Variant configuration is now YAML, not JSON
152- HTTP server mirros change to MOTHv5 API URLs:
153 `/puzzles/-/counting/1/index.html` is now
154 `/-/puzzles/1/index.html`
155- Removed outdated `moth.mjs` dependency:
156 everything is just inline now. Possibly easier to read.
157- When running as a server,
158 pupate will keep going if it encounters an error in a category.
159 This will let you preview changes to a working puzzle,
160 even if there are problems with other puzzles in the category.
161- On Windows, we now try to run Python 3 as `python`, not `python3`.
162 This works on both installations of Python I have access to,
163 which is 100%!
164
165### Fixed
166- Added missing `puzzles.txt` to default variant.
167- Default variant now correctly creates `__MOTH` meta-directory.
168- Puzzle content no longer gets HTML escaped by `eval`:
169 This was causing `<` to be double-escaped by `markdownify`.
170
171
172## [1.0.3] - 2024-08-23
173### Added
174- `TrimSpace` template function
175- Version appears in a few places, and is computed from this changelog
176- `moth4` variant
177- Variant template directories can now have subdirectories
178- `{{skip}}` lets you omit pages
179- `{{(eval "content" .) | markdownify}}` works:
180 `{{(template "content" .) | markdownify}}` doesn't.
181- Log messages are now colorful, like a delicious fruit salad
182- Color syntax highlighting for code examples,
183 if you can get to cloudflare. Gracefully handles if you can't.
184
185### Changed
186- The web server always starts now, even when there is a build error
187- Builds are "debounced": you should only get one reload per save now
188- Try to speed up calls to `currentuser` on Windows by preloading at startup
189- MOTH and SCTR variants pull unique names for css and mjs,
190 helping with browser caching
191- Bespoke frontmatter library, so SCTR can fall back to rendering something
192 if cdnjs is unreachable, like if your roof is gone so you had to take down your
193 microwave Internet transciever
194- Variant directories now have static files at the top level
195- Internal refactoring
196- Pages and variants both use the same templating system (mostly).
197
198### Fixed
199- Documentation no longer has `{{- /* front matter line */ -}}` all over
200- SCTR variant works again
201- The way variants work internally makes me less confused
202
203
204## [1.0.2] - 2024-08-20
205### Fixed
206- `moth.mjs`: Possible fix for older Firefox puzzle rendering problem
207
208
209## [1.0.1] - 2024-08-19
210### Added
211- Online documentation
212- Loads and loads of changes
213
214
215## [1.0.0] - 2024-08-15
216- Initial release for internal testing