v0.17.0 Characinae
This is a minor version update. As mentioned in 0.5.0 logs, the new version system would merge the old major and minor version numbers into new minor version numbers, thus as the 17th minor version update since NOJ 0.1.0, this version would be numbered as major version 0, minor version 17, build pack 0 and patch number 0.
Important: Please follow NOJ Document's guide to upgrading your NOJ from v0.16.x to v0.17.0.
Summary: Update Laravel from 6.x to 8.5, update Laravel Mix to 6.0, requires WKHTMLPDF installed, uses new logo design, supports multiple log channels, supports group homework, supports strong password, supports C11, C++14 and C++17, supports new contest rejudge interface, supports new contest pdf generation interface, supports problem lazy load that increases site rank and group loading time, supports new material preloader, supports new sortable.js as a sortable method, supports Carbon as time processer, supports 2 fonts and 5 environment variables. This version update also includes lots of query optimizations, bug fixes, functionality & UI improvements, and security updates.
Update Logs
- Compatibility: NOJ now supports Laravel
8.5per #672 requests, the latest version of Laravel.8.xuses Symphony 4, which introduced a lot of changes to the base code. - Compatibility: NOJ now deprecates DomPDF and uses WKHTMLPDF instead.
- Compatibility: NOJ now uses
laxfor the same site verification. - Compatibility: NOJ now uses
Throwableinstead ofExceptionfor the error handler. - Compatibility: NOJ now uses Laravel Mix
6.0. - Compatibility: NOJ now separate log channels,
group_elo_updateandbabel_judge_syncare now stored in different files apart fromapp.log(which originally namedlaravel.log) and expired after 7 days. - New: Group homework support per #667 requests, this feature can be seen as the privatized lite version of NOJ Dojo.
- New: Add
createHomeworkAJAX API. - New: Use the third edition of the NOJ logo materialized design per #676 requests. While replacing all old logos, the third edition also modifies its dark and light flattened variant.
- New: Strong password support via environment variable
FUNC_STRONG_PASSWORD. - New: Add
C11language support per #663 requests (require NOJ JudgeServerv0.2.1or higher). - New: Add
C++14language support per #663 requests (require NOJ JudgeServerv0.2.1or higher). - New: Add
C++17language support per #663 requests (require NOJ JudgeServerv0.2.1or higher). - New: Add new problem selector component per #664 requests.
- New: Remastered contest rejudge feature per #673 requests. This function now opt-in for the beta test.
- New: Contest rejudge now supports custom verdict to rejudge.
- New: Remastered contest pdf generation feature by using WKHTMLPDF per #670 requests. This function now opt-in for the beta test and can only apply to contests in which all problems are self-hosted and you need to install WKHTMLPDF first then setup 2 environment variables,
WKHTML_PDF_BINARYandWKHTML_IMG_BINARY. - New: Contest pdf generation now supports math formula rendering.
- New: Contest pdf generation now supports removing after generation.
- New: Add site-wide
delayProblemLoadfunction for image lazy loading. - New: NOJ now uses the new material preloader component.
- New: NOJ now uses
sortable.jsfor sortable elements. - New: Add group left-to-right layout.
- New: Add
users_latest_submissionquery builder for problem model. - New: Add
problems_latest_submissionquery builder for user model. - New: NOJ now uses
lluminate\Support\Carbonand its aliasCarbonfor time processing. - New: Add
fonts-asset/simsunpackage, see #504. - New: Add
fonts-asset/dejavupackage, see #504. - New: Add
barryvdh/laravel-snappypackage. - New: Add
_declarationas an scss component. - New: Add
_mathjaxas an scss component. - New: Add
_refreshingas an scss component. - New: Add
defaultAvatarPNGasNOJVariablesin typescript. - New: PDF generation locale support for contest admin panel.
- New: Group homework locale support.
- Deprecated: Remove
EloquentModelalias for all eloquent models from now on, eloquent models will be referred to directly. - Deprecated: Remove
barryvdh/laravel-dompdfpackage. - Deprecated: Remove
jquery-uiandnoj-jquery-ui-sortablepackage. - Fixed: Duplicate
lodashpackage. - Fixed: A bug causing
babel:installto fail when making directories. - Fixed: A bug causing email verification hidden when social login is disabled.
- Fixed: A bug causing congratulation and other dialogs dismissable via ESC key while exit logic not triggered, see #722.
- Fixed: A bug causing math formula overflow, see #723.
- Fixed: A bug causing sample note blank, see #662.
- Fixed: A bug causing admin portal contest registant_type field mapped wrongly.
- Fixed: A bug causing SPJ uploading to fail.
- Fixed: Typo (we mean it).
- Improved: NOJ Dojo is now greatly optimized by using the new dojo status method, see #725.
- Improved: Optimized site rank page performance, see #726.
- Improved: Optimized group detail page performance, see #728.
- Improved: Multidomain config now does not take effect in the console environment.
- Improved: Eloquent contest model
getProblemSetmethod now optimized. - Improved: PDF generation advice page now uses pure latex formula.
- Improved: PDF generation cover page now uses the latest ICPC standard.
- Improved: Contest admin panel now separates section-panel to own blade template.
- Improved: Problem pagination is now configurable via environment variable
PAGINATION_PROBLEM_PER_PAGE. - Improved: NOJ now uses blade stack to replace outdated
additionJSyield. - Improved: NOJ ico file now bundles
16*16,48*48and256*256resolution. - Improved: NOJ now uses a new refreshing button design.
- Improved: NOJ now uses the new problem selector component for contest editing and arranging per #664 requests.
- Improved: Redesign
ajax/problemExistsAJAX API. - Improved: Group function block now has a color scheme.
- Improved: Group left-to-right layout now applies to all group detail-related pages.
- Improved: NOJ now uses the new left-to-right layout for the analysis page, see #719.
- Improved: Eloquent problem model
getProblemStatusmethod. - Improved: NOJ now uses the dot-separated router for problems.
- Improved: Google Recaptcha now defaults to false.
- Improved: Admin Portal now displays babel mirror as part of the environment info.
- Security:
beyondcode/laravel-dump-serveris now at1.7.0. - Security:
dragonmantank/cron-expressionis now at3.1.0. - Security:
encore/laravel-adminis now at1.8.14. - Security:
filp/whoopsis now at2.14.4. - Security:
graham-campbell/markdownis now at13.1.1. - Security:
intervention/imageis now at2.7.0. - Security:
laravel/frameworkis now at8.63.0. - Security:
laravel/passportis now at10.1.3. - Security:
laravel/socialiteis now at5.2.5. - Security:
laravel/tinkeris now at2.6.2. - Security:
laravelium/sitemapis now at8.0.1. - Security:
league/mime-type-detectionis now at1.8.0. - Security:
mockery/mockeryis now at1.4.4. - Security:
monolog/monologis now at2.3.5. - Security:
nesbot/carbonis now at2.53.1. - Security:
nikic/php-parseris now at4.13.0. - Security:
nunomaduro/collisionis now at5.10.0. - Security:
phar-io/manifestis now at2.0.3. - Security:
phar-io/versionis now at3.1.0. - Security:
phpdocumentor/type-resolveris now at1.5.1. - Security:
phpoption/phpoptionis now at1.8.0. - Security:
phpseclib/phpseclibis now at3.0.10. - Security:
phpspec/prophecyis now at1.14.0. - Security:
phpunit/php-code-coverageis now at9.2.7. - Security:
phpunit/php-file-iteratoris now at3.0.5. - Security:
phpunit/php-text-templateis now at2.0.4. - Security:
phpunit/php-timeris now at5.0.3. - Security:
phpunit/phpunitis now at9.5.10. - Security:
predis/predisis now at1.1.9. - Security:
psy/psyshis now at0.10.8. - Security:
ramsey/uuidis now at4.2.3. - Security:
sebastian/code-unit-reverse-lookupis now at2.0.3. - Security:
sebastian/comparatoris now at4.0.6. - Security:
sebastian/diffis now at4.0.4. - Security:
sebastian/environmentis now at5.1.3. - Security:
sebastian/exporteris now at4.0.3. - Security:
sebastian/global-stateis now at5.0.3. - Security:
sebastian/object-enumeratoris now at4.0.4. - Security:
sebastian/object-reflectoris now at2.0.4. - Security:
sebastian/recursion-contextis now at4.0.4. - Security:
sebastian/resource-operationsis now at3.0.3. - Security:
sebastian/versionis now at3.0.2. - Security:
symfony/consoleis now at5.3.7. - Security:
symfony/dom-crawleris now at5.3.7. - Security:
symfony/error-handleris now at5.3.7. - Security:
symfony/event-dispatcheris now at5.3.7. - Security:
symfony/event-dispatcher-contractsis now at2.4.0. - Security:
symfony/finderis now at5.3.7. - Security:
symfony/http-foundationis now at5.3.7. - Security:
symfony/http-kernelis now at5.3.9. - Security:
symfony/mimeis now at5.3.8. - Security:
symfony/processis now at5.3.7. - Security:
symfony/routingis now at5.3.7. - Security:
symfony/translationis now at5.3.9. - Security:
symfony/var-dumperis now at5.3.8. - Security:
vlucas/phpdotenvis now at5.3.1. - Security:
webpackis now at5.52.1. - Security:
typescriptis now at4.4.3. - Security:
sassis now at1.42.1. - Security:
pdfobjectis now at2.2.7. - Security:
codemirroris now at5.63.1. - Security:
axiosis now at0.21.4. - Security:
dompurifyis now at2.3.2. - Security:
postcssis now at8.3.9.