CTFd v3.6.0 has been released with some highly requested features!
This release has been long in the making with foundations being laid since the previous minor release. Significant changes have been made across many layers of CTFd to fulfill the headline feature which is Translations and Internalization (i18n).
As always, Hosted CTFd instances have already been upgraded to the latest version.
Here are the highlights:
Translations
One of CTFd's longest standing, most requested features is now available!
CTFd now supports translations!
Users can choose what language they'd like to use in their profile. If a user doesn't specify CTFd will automatically attempt to detect their language based on their browser settings.
Initially we are supporting German, Polish, Spanish, and Chinese.
If you are interested in adding a new language or updating an existing language please see our contribution guidelines on translations!
Translations has been a long project with many different pieces involved and we're still not done. But we've got hard parts out of the way now.
Big thanks to:
- POEditor for providing a hosted translation service!
- Max Moser for providing German translation support!
- Miłosz Skaza for providing Polish translation support!
core-beta for everyone
The core-beta theme that we discussed in the v3.5.0 blog post is now bundled in every CTFd installation and is the default theme during setup. Now all CTFd installations can take advantage of the faster load times and better developer experience.
The current core theme remains as a fallback option for those who need it but we recommend that new installations use core-beta.
Additionally, we also strongly recommend that existing CTFd installations migrate to core-beta as soon as possible. When CTFd reaches version 4.0, the current core theme will be entirely replaced by core-beta.
core-beta is the only theme that supports translations and new features will only be implemented on core-beta.
For now core-beta will remain in its own repo and we will continue copying changes into CTFd.
If there is a deficiency preventing you from switching from core to core-beta please open an issue for us to understand more.
Challenge Preview Improvements
We believe that with the advent of core-beta, there will be more custom themes in use. We also expect to release a base template for theme developers to bootstrap their projects from.
To accomodate that, the Challenge Preview in the Admin Panel has been updated to properly support custom themes instead of always being hard coded to the default theme.
Mark Submission Correct
A long standing issue in CTFd has been that you could not mark an incorrect submission as correct. Instead you had to mark a challenge as solved for a user losing the timing of the original submission.
Now you can easily mark submissions as correct in the Admin Panel.
In the future we will explore automatically accepting all submissions from other users that are similar to a corrected submission.
Dynamic Value Functions
You can now choose how the decay function of dynamic value challenges will behave.
Previously all dynamic value challenges would follow a logarithmic decay function. Now admins can choose between logarithmic and the newly added linear decay.
We welcome the contribution of other decay functions.
Flask & Werkzeug v2
CTFd's underlying Flask and Werkzeug versions have been updated to v2.0. This comes with some performance improvements but does intoroduce some deprecations.
Please monitor any plugins for breaking changes due to this change.
In future versions of CTFd we will incrementally increase our Flask & Werkzeug versions until we are at the latest versions.
Future Work
Admin Panel
With core-beta making its way into production for CTFd we now turn our attention to the Admin Panel which currently does not support translations and also is still using Bootstrap 4.
ctfcli
ctfcli has been rewritten to improve structure, logging, error messages and test coverage is now at 97%.
We expect to also migrate from the current ini configuration file to a TOML based structure.
While ctfcli does not yet have a stable release, we do use ctfcli internally for our own processes. We invite you to use it and give us your feedback
Official Themes
We will be releasing new (core-beta based) versions of our official themes to be used for self hosting.
That's all folks!
Thanks for reading! Not the longest blog post but a very important release.
As always if you have an idea/feature for CTFd feel free to contact us and let us know.