From 735faf0e238baef7fe8dfc3c3df74bbef09d114a Mon Sep 17 00:00:00 2001 From: Kevin Chung Date: Sat, 2 May 2020 02:49:03 -0400 Subject: [PATCH] Mark new version and add rough changelog --- CHANGELOG.md | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ CTFd/__init__.py | 3 ++- docs/conf.py | 2 +- package.json | 2 +- 4 files changed, 53 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 74321606..dc3efca7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,52 @@ +2.4.0 / +================== + +**General** +* Cache user and team attributes and use those perform certain page operations intead of going to the database for data + * After modifying the user/team attributes you should call the appropriate cache clearing function (clear_user_session/clear_team_session) +* Cache user IPs for the last hour to avoid hitting the database on every authenticated page view + * Update the user IP's last seen value at least every hour or on every non-GET request +* Replace `flask_restplus` with `flask_restx` +* Remove `datafreeze`, `normality`, and `banal` dependencies in favor of in-repo solutions to exporting database + +**Admin Panel** +* Make some Admin tables sortable by table headers +* Create a score distribution graph in the statistics page +* Make instance reset more granular to allow for choosing to reset Accounts, Submissions, Challenges, Pages, and/or Notificatoins +* Properly update challenge visibility after updating challenge +* Show total possible points in Statistics page +* Add bulk selection and deletion for Users, Teams, Scoreboard, Challenges, Submissions +* Add searching for Users, Teams, Challenges, Submissions +* Move User IP addresses into a modal +* Move Team IP addresses into a modal +* Show User website in a user page button +* Show Team website in a team page button +* Make the Pages editor use proper HTML syntax highlighting +* Theme header and footer editors now use CodeMirror +* Make default CodeMirror font-size 12px + +**Themes** +* Make page selection a select and option instead of having a lot of page links +* Add the JSEnum class to create constants that can be accessed from webpack. Generate constants with `python manage.py build jsenums` +* Add the JinjaEnum class to inject constants into the Jinja environment to access from themes +* Update jQuery to 3.5.0 to resolve potential security issue +* Add some new CSS utilities (`.min-vh-*` and `.opacity-*`) +* Change some rows to have a minimum height so they don't render oddly without data +* Deprecate `.spinner-error` CSS class +* Deprecate accessing the type variable to check user role. Instead you should use `is_admin()` + +**Miscellaneous** +* Enable foreign key enforcement for SQLite. Only really matters for the debug server. +* Remove the duplicated `get_config` from `CTFd.models` +* Fix possible email sending issues in Python 3 by using `EmailMessage` +* Dont set User type in the user side session. Instead it should be set in the new user attributes +* Fix flask-profiler and bump dependency to 1.8.1 +* Switch to using the `Faker` library for `populate.py` instead of hardcoded data +* Add a `yarn lint` command to run eslint on JS files +* Always insert the current CTFd version at the end of the import process +* Fix issue where files could not be downloaded on Windows + + 2.3.3 / 2020-04-12 ================== diff --git a/CTFd/__init__.py b/CTFd/__init__.py index dbc0b669..3837e7b3 100644 --- a/CTFd/__init__.py +++ b/CTFd/__init__.py @@ -31,7 +31,7 @@ if sys.version_info[0] < 3: reload(sys) # noqa: F821 sys.setdefaultencoding("utf-8") -__version__ = "2.3.3" +__version__ = "2.4.0" class CTFdRequest(Request): @@ -182,6 +182,7 @@ def create_app(config="CTFd.config.Config"): # Enable foreign keys for SQLite. This must be before the # db.create_all call because tests use the in-memory SQLite # database (each connection, including db creation, is a new db). + # https://docs.sqlalchemy.org/en/13/dialects/sqlite.html#foreign-key-support from sqlalchemy.engine import Engine from sqlalchemy import event diff --git a/docs/conf.py b/docs/conf.py index 87c4d4f9..51d9e9af 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -26,7 +26,7 @@ author = u"Kevin Chung" # The short X.Y version version = u"" # The full version, including alpha/beta/rc tags -release = u"2.3.3" +release = u"2.4.0" # -- General configuration --------------------------------------------------- diff --git a/package.json b/package.json index a52d17ab..0849215c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ctfd", - "version": "2.3.3", + "version": "2.4.0", "description": "CTFd is a Capture The Flag framework focusing on ease of use and customizability. It comes with everything you need to run a CTF and it's easy to customize with plugins and themes.", "main": "index.js", "directories": {