moth/CHANGELOG.md

276 lines
9.2 KiB
Markdown
Raw Permalink Normal View History

2019-11-26 12:09:40 -07:00
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
2024-04-17 17:31:17 -06:00
## [v4.6.2] - 2024-04-17
### Fixed
- Fixed code to intentionally break config.json loading, used to test v4.6.1
2024-04-17 17:17:58 -06:00
## [v4.6.1] - 2024-04-17
2024-04-17 17:31:17 -06:00
### Fixed
2024-04-17 17:17:58 -06:00
- Fixed bug with solved puzzle tracking when config.json cannot be loaded.
2024-04-17 11:43:02 -06:00
## [v4.6.0] - 2024-04-17
2024-04-18 10:28:59 -06:00
### Fixed
2024-04-17 11:43:02 -06:00
- Mothd now correctly handles using the current directory for a path.
For instance, `-puzzles .`
2024-04-18 10:28:59 -06:00
### Changed
2024-04-17 11:43:02 -06:00
- Theme configuration has a new structure:
old theme config files need to be modified
- Theme now omits the qix animation in the background
if the user has configured the browser to reduce motion.
This should help people with vestibular motion disorders,
or people who are annoyed by the animation.
- Theme colors are now specified with CSS variables,
making the theme (hopefully) easier to re-color.
### Added
- Theme: brought back integrated Python IDE,
with updated versions of CodeJar and Prism.js.
These depend on a CDN, but if it cannot be reached,
there is a graceful fallback.
- Theme (nearly) instantly updates the list of open puzzles
when a puzzle is solved.
Users should no longer need to refresh the index after solving a puzzle.
- Theme fires confetti 🎊 when a puzzle is answered correctly.
This requires a CDN; if unreachable, everything still works.
- Theme closes the tab a few seconds after a puzzle is answered
correctly.
2024-01-19 12:24:37 -07:00
2024-01-19 12:09:53 -07:00
## [v4.5.0] - 2024-01-19
2023-09-12 17:30:36 -06:00
### Changed
- Answer hashes are now the first 4 characters of the hex-encoded SHA1 digest
- Reworked the built-in theme
2023-09-14 17:42:02 -06:00
- Devel mode no longer accepts an empty team ID
- messages.html moved into theme
2024-01-03 14:28:50 -07:00
### Added
- [moth.mjs](theme/moth.mjs) is now the standard MOTH library for ECMAScript
- Exported state now includes "Enabled" boolean
2024-01-03 14:30:13 -07:00
- New `Extra` field on puzzles will allow arbitrary metadata on puzzles.
2023-09-12 17:30:36 -06:00
2023-10-18 15:01:51 -06:00
## [v4.4.11] - 2023-04-11
### Changed
- CI/CD now builds tags
## [v4.4.10] - 2022-10-21
### Changed
- `enabled` file is no longer used
- `hours.txt` parsing logs more verbosely
- Participant IDs are no longer used anywhere
- A few changes to CI/CD test reporting
2022-05-12 18:15:46 -06:00
## [v4.4.9] - 2022-05-12
### Changed
- Added a performance optimization for events with a large number of teams
backed by NFS
2022-05-10 17:53:31 -06:00
## [v4.4.8] - 2022-05-10
### Changed
- You can now join with a team ID not appearing in `teamids.txt`,
as long as it is registered (in the `teams/` directory)
2022-05-10 15:26:01 -06:00
## [v4.4.7] - 2022-05-10
### Changed
- Initializing an instance now truncates `events.csv`
2021-10-26 13:33:57 -06:00
## [v4.4.6] - 2021-10-26
2021-10-26 12:48:23 -06:00
### Added
- State is now cached in memory, in an attempt to reduce filesystem metadata operations,
which kill NFS.
## [v4.4.5] - 2021-10-26
### Added
- Images deploying to docker hub too. We're now at capacity for our Docker Hub team.
2021-10-20 14:27:32 -06:00
## [v4.4.4] - 2021-10-20
### Changed
- 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.
2021-10-20 14:22:21 -06:00
## [v4.3.3] - 2021-10-20
2021-10-13 16:43:51 -06:00
### Fixed
- Points awarded while scoring is paused are now correctly sorted (#168)
- Writing a new mothball with the same name is now detected and the new mothball loaded (#172)
- Regression test for issue where URL path leading directories were ignored (#144)
2021-10-20 14:22:30 -06:00
- A few other very minor bugs were closed when I couldn't reproduce them or decided they weren't actually bugs.
2021-10-13 16:43:51 -06:00
2021-10-14 19:17:38 -06:00
### Changed
- Many error messages were changed to start with a lower-case letter,
in order to satisfy a new linter check.
2021-10-19 17:22:11 -06:00
- CI/CD moved to our Cyber Fire Gitlab instance
2021-10-20 14:22:21 -06:00
- I attempted to have the build thingy automatically build moth:v4 and moth:v4.3 and moth:v4.3.3 images,
but I can't test it without tagging a release.
So v4.3.4 might come out very soon after this ;)
2021-10-14 19:17:38 -06:00
2021-09-30 16:50:32 -06:00
## [v4.2.2] - 2021-09-30
### Added
- `debug.notes` front matter field
## [v4.2.1] - 2021-04-13
2021-04-13 17:28:22 -06:00
### Fixed
- Transpiled KSAs no longer dropped
2021-03-29 12:27:07 -06:00
## [v4.2.0] - 2020-03-26
### Changed
- example/5/draggable.js fix for FireFox to prevent dropping a draggable trying to load a URL
- `transpile` arguments now work the same way for the transpile binary as they do for mkpuzzle
- `transpile inventory` does what you expect: inventory of current category, not inventory of all categories
### Removed
- No longer building a `moth-devel` image,
this is now handled by the
[moth-devel repository](https://github.com/dirtbags/moth-devel).
### Fixed
- `transpile` will now run `mkcategory` and `mkpuzzle` when invoked without `-dir`
## [v4.1.1] - 2020-03-02
2021-03-02 12:42:43 -07:00
### Removed
- ppc64le and i386 builds of github, because ppc64le keep failing mysteriously, and we don't need them anyhow.
2021-03-02 11:26:54 -07:00
## [v4.1.0] - 2020-03-02
2021-02-25 16:00:19 -07:00
### Added
2021-02-25 16:03:41 -07:00
- `transpile` now has a `markdown` command,
2021-03-02 11:25:38 -07:00
so you can use the "stock" markdown formatter
2021-02-25 16:00:19 -07:00
2020-11-19 14:26:53 -07:00
### Changed
2020-12-02 19:55:23 -07:00
- event.log is now events.csv, to make it easier to import to a spreadsheet
- When in devel mode, any team ID may score points. This allows more interaction with the state directory.
2021-02-01 16:55:23 -07:00
- When in devel mode, any team ID may be registered.
It still works the same way if you register a team in `teamids.txt`,
but now you can use anything and it will put you on an already existing team
named `<devel:$ID>`.
- switched from `blackfriday` to `goldmark`, to support CommonMark
2021-02-25 16:00:19 -07:00
- `puzzle.json`no longer has `Pre` and `Post` sections
### Removed
2021-02-25 16:00:19 -07:00
- JavaScript code we didn't write is now pulled from a CDN
2020-10-29 13:51:49 -06:00
2020-10-29 13:51:49 -06:00
## [v4.0.2] - 2020-10-29
2020-10-29 10:45:45 -06:00
### Added
- Build multiarch Docker images
2020-10-28 17:42:23 -06:00
### Changed
- Stop building devel server from this codebase; this is moving to a new repo
2020-10-27 16:23:03 -06:00
## [v4.0.1] - 2020-10-27
### Fixed
- Clear Debug.summary field when making mothballs
2020-10-16 14:18:44 -06:00
### Changed
- Regulated category/puzzle provider API: now everything returns a JSON dictionary (or octet stream for files)
2020-10-14 18:20:49 -06:00
### Added
- More log events
- [Log channels document](docs/logs.md)
- More detailed [API documntation](docs/api.md)
2020-10-20 11:18:15 -06:00
- Transpiler warning if `mkpuzzle` exists but is not executable
2020-10-14 18:20:49 -06:00
2020-10-14 16:08:19 -06:00
## [v4.0.0] - 2020-10-14
2020-10-13 18:43:36 -06:00
### Fixed
- Multiple bugs preventing production server from working properly
- CI builds should be working now
- Team registration now correctly writes names to files
2020-10-14 09:46:51 -06:00
- Anonymized team names now only computed once per team
2020-10-14 10:11:37 -06:00
- Don't output "self" team for unauthenticated state exports
2020-10-13 18:43:36 -06:00
2020-10-14 16:08:19 -06:00
### Added
- Documented the HTTP API
- Added a drawing of how things fit together
2020-10-13 18:43:36 -06:00
## [v4.0-rc1] - 2020-10-13
2019-11-26 12:09:40 -07:00
### Changed
- Major rewrite/refactor of `mothd`
2020-09-17 18:56:40 -06:00
- Clear separation of roles: State, Puzzles, and Theme
- Sqlite, Redis, or S3 should fit in easily now
- Will allow "dynamic" puzzles now, we just need a flag to enable it
- Server no longer provides unlocked content
2020-09-17 18:56:40 -06:00
- Puzzle URLs are now just `/content/${cat}/${points}/`
- Changes to `state` directory
- Most files now have a bit of (English) documentation at the beginning
- `state/until` is now `state/hours` and can specify multiple begin/end hours
- `state/disabled` is now `state/enabled`
- Mothball structure has changed
- Mothballs no longer contain `map.txt`
2020-09-17 18:56:40 -06:00
- Mothballs no longer obfuscate content paths
- Clients now expect unlocked puzzles to just be `map[string][]int`
2020-09-17 18:56:40 -06:00
- New `/state` API endpoint
- Provides *all* server state: event log, team mapping, messages, configuration
### Added
- New `transpile` CLI command
- Provides `mothball` action to create mothballs
- Lets you test a few development server things, if you want
2019-11-26 12:09:40 -07:00
### Deprecated
### Removed
- Development server is gone now; use `mothd` directly with a flag to transpile on the fly
### Fixed
### Security
2020-03-16 10:34:36 -06:00
## [v3.5.1] - 2020-03-16
2020-03-16 10:31:44 -06:00
### Fixed
- Support insta-checking for legacy puzzles
2020-03-13 15:14:43 -06:00
2020-03-13 15:14:43 -06:00
## [v3.5.0] - 2020-03-13
2020-03-10 14:58:43 -06:00
### Changed
- We are now using SHA256 instead of djb2hash
2019-11-20 14:52:58 -07:00
### Added
- URL parameter to points.json to allow returning only the JSON for a single
team by its team id (e.g., points.json?id=abc123).
2019-12-17 10:48:22 -07:00
- A CONTRIBUTING.md to describe expectations when contributing to MOTH
- Include basic metadata in mothballs
- add_script_stream convenience function allows easy script addition to puzzle
- Autobuild Docker images to test buildability
- Extract and use X-Forwarded-For headers in mothd logging
2020-03-10 14:58:43 -06:00
- Mothballs can now specify `X-Answer-Pattern` header fields, which allow `*`
at the beginning, end, or both, of an answer. This is `X-` because we
are hoping to change how this works in the future.
### Fixed
- Handle cases where non-legacy puzzles don't have an `author` attribute
- Handle YAML-formatted file and script lists as expected
- YAML-formatted example puzzle actually works as expected
- points.log will now always be sorted chronologically
2019-11-18 10:42:56 -07:00
2019-11-20 17:30:48 -07:00
## [3.4.3] - 2019-11-20
2019-11-20 17:29:44 -07:00
### Fixed
- Made top-scoring teams full-width
2019-11-18 10:42:56 -07:00
2019-11-18 10:42:56 -07:00
## [3.4.2] - 2019-11-18
### Fixed
- Issue with multiple answers in devel server and YAML-format .moth
2019-11-13 15:31:13 -07:00
2019-11-17 17:20:22 -07:00
## [3.4.1] - 2019-11-17
### Fixed
- Scoreboard was double-counting points
2019-11-13 15:31:13 -07:00
## [3.4] - 2019-11-13
2019-11-08 12:26:53 -07:00
### Added
- A changelog
- Support for embedding Python libraries at the category or puzzle level
2019-11-08 12:29:38 -07:00
- Minimal PWA support to permit caching of currently-unlocked content
- Embedded graph in scoreboard
- Optional tracking of participant IDs
- New `notices.html` file for sending broadcast messages to players
### Changed
- Use native JS URL objects instead of wrangling everything by hand