Dmoj

Latest version: v4.1.0

Safety actively analyzes 619197 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 3

4.1.0

This minor release contains improvements to MLE reporting for a few runtimes, as well as a few bugfixes.

Runtimes

* Java `java.lang.OutOfMemoryError` as well as certain GC failures are now mapped to `MLE` verdicts.
* Guaranteed that Java, Python 2/3, PyPy 2/3, and C submissions will report `MLE` rather than `RTE` or `IR` when graded on problems with memory limits lower than baseline runtime overhead.

Bugfixes

* Fixed a bug where some problem directories specified with `problem_storage_globs` may not have been picked up.
* Fixed the C++03 executor relying on the compiler's default standard (which is now C++17 for GCC).

Miscellaneous

* `dmoj-cli` now indents batched cases.

Full changelog

The full changelog is available [here](https://github.com/DMOJ/judge-server/compare/v4.0.1...v4.1.0) as well as below.

<details><summary>Changelog</summary>

* Fix bug where `get_supported_problems_and_mtimes` won't recursively scan by kiritofeng in https://github.com/DMOJ/judge-server/pull/1104
* Increase grace limits to allow important runtimes to be marked as MLE by Xyene in https://github.com/DMOJ/judge-server/pull/1097
* Declare types for `Result` and `CheckerResult` by kiritofeng in https://github.com/DMOJ/judge-server/pull/1106
* Detect JVM initialization errors by kiritofeng in https://github.com/DMOJ/judge-server/pull/1107
* executors: add version checks to self-tests by kiritofeng in https://github.com/DMOJ/judge-server/pull/1109
* Indent batched cases when running tests by kiritofeng in https://github.com/DMOJ/judge-server/pull/1105
</details>

4.0.1

This is a bugfix release, fixing the behavior of problem storage configured through the new `problem_storage_globs` key.

Full changelog

The full changelog is available [here](https://github.com/DMOJ/judge-server/compare/v4.0.0...v4.0.1) as well as below.

<details><summary>Changelog</summary>

* Fix bug with globs by kiritofeng in https://github.com/DMOJ/judge-server/pull/1103
</details>

4.0.0

This release is meant to be used with the [DMOJ Judge v4.0.0](https://github.com/DMOJ/judge/releases/tag/v4.0.0) release or newer.

Thanks to Ninjaclasher, int-y1, WallE256, kiritofeng, Carson-Tang, and Riolku for contributing major changes in this release.

Features

* Added support for contest curator and tester roles.
* Added support for safe Markdown rendering. By default, problems, blogs, etc. will now disallow unsafe HTML tags.
* Added an option for users to download their data.
* Added support for locking submissions from being rejudged.
* Added support for voting on problem point values.
* Added scratch code support for 2-factor authentication.
* Added language and judge endpoints to API v2.
* Added support for classes within organizations.
* Added the ability to disable a judge without terminating its connection.
* ...more.

UI changes

* The logo is now symmetrical. :tada:
* Many CSS fixups as we work towards supporting dark mode in a future release.
* Numerous improvements to site internationalization.
* Use a different color for the first letter of target-rated users.
* Added a submission activity graph to user pages.
* Added a column on the problems list showing whether an editorial is available.
* Highlighted partial AC testcases differently.
* Added participation start time tooltip to contest rankings.
* Made the submissions list more mobile-friendly.
* Made the contest list page sortable.
* Submissions list now uses infinite pagination.
* Surface maximum runtime on a single test case for AC submissions.
* Removed "share to Google+" buttons on content.
* Limit height of ongoing contest display on the home page.
* Added a confirmation dialog when rejudging submissions.
* Improved formatting of the password reset and account activation emails.
* ...more.

Miscellaneous
* Judge scheduling improvements for submission prioritization: in-contest > regular > rejudge > batch rejudge.
* Various site performance improvements.
* Contest ranking sorting now uses decimal precision.
* Disallow rating contests which haven't finished yet.
* Deleted orphaned editorials, and prevented them from being generated in the future
* ...more.

Security
* Patched XSS vulnerabilities around select2 (https://github.com/DMOJ/online-judge/pull/1398).
* Prevent users from voting on hidden comments.
* Prevent muted users from voting on comments.
* ...more.

Full changelog

The full changelog is available [here](https://github.com/DMOJ/online-judge/compare/v2.1.1...v4.0.0) as well as below.

<details><summary>Changelog</summary>

* Make code lint correctly with new flake8 by quantum5 in https://github.com/DMOJ/online-judge/pull/1388
* Fix 500 error on unathenticated user in ticket ajax views by fluix-dev in https://github.com/DMOJ/online-judge/pull/1387
* Move login requirement check out of TicketMixin by fluix-dev in https://github.com/DMOJ/online-judge/pull/1389
* Correctly reject invalid IDs in ajax ticket views by quantum5 in https://github.com/DMOJ/online-judge/pull/1390
* Add option for user to download their data; 40 by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1351
* Implement submission locks by WallE256 in https://github.com/DMOJ/online-judge/pull/1391
* Make TOTP login the default form action by quantum5 in https://github.com/DMOJ/online-judge/pull/1395
* Add admin action to set problem publish date to now by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1392
* Organization improvements by Carson-Tang in https://github.com/DMOJ/online-judge/pull/1393
* Do not write empty `init.yml` by kiritofeng in https://github.com/DMOJ/online-judge/pull/1397
* Remove XSS vulnerabilities through poor select2 usage by quantum5 in https://github.com/DMOJ/online-judge/pull/1398
* Remove widget if no open organizations available by kevinjycui in https://github.com/DMOJ/online-judge/pull/1399
* Run unit tests on GitHub actions by quantum5 in https://github.com/DMOJ/online-judge/pull/1404
* Unset `Contest.is_locked` when cloning a contest by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1405
* Add IOI format with new rules from 2016 by adambenali in https://github.com/DMOJ/online-judge/pull/1401
* Remove contest editorial column if empty by kevinjycui in https://github.com/DMOJ/online-judge/pull/1406
* Defer Problem.summary on ProblemList by quantum5 in https://github.com/DMOJ/online-judge/pull/1407
* Coalesce i18n_name in python by quantum5 in https://github.com/DMOJ/online-judge/pull/1408
* Mark all strings in models as translation strings by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1409
* Correctly cache comment titles on home page by quantum5 in https://github.com/DMOJ/online-judge/pull/1412
* Compute judge runtime versions in a single query by quantum5 in https://github.com/DMOJ/online-judge/pull/1413
* Switch CI test database to MySQL by quantum5 in https://github.com/DMOJ/online-judge/pull/1417
* Remove secondary ID sort on user list by quantum5 in https://github.com/DMOJ/online-judge/pull/1414
* Generate test coverage and upload to codecov by quantum5 in https://github.com/DMOJ/online-judge/pull/1418
* Add caching to pip install when running tests by quantum5 in https://github.com/DMOJ/online-judge/pull/1419
* Improve submission lock UI by WallE256 in https://github.com/DMOJ/online-judge/pull/1402
* Fix `Submission.can_see_detail` erroring when user is not authenticated by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1423
* Remove superuser optimizations for most recent comments by quantum5 in https://github.com/DMOJ/online-judge/pull/1421
* Make `Problem.is_accessible_by` consistent with `Problem.get_visible_problems` by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1420
* Fix contest ranking scroll on medium width screens for some browsers by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1396
* Unconditionally deny access when a comment's related object doesn't exist by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1426
* Add controls for full HTML markup access in problems by quantum5 in https://github.com/DMOJ/online-judge/pull/1424
* Fix lxml adding extra tags by quantum5 in https://github.com/DMOJ/online-judge/pull/1428
* Remove random 'k' in contest template by fluix-dev in https://github.com/DMOJ/online-judge/pull/1429
* Exclude locked submissions from celery task filter by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1432
* Hide `locked` word on submissions list for small-width screens by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1430
* Fix problem solution access check; fixes 1371 by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1425
* Update robots.txt with new URL endpoints; 504 by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1427
* Exempt flatpages from the HTML restrictions by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1431
* Allow most sane HTML tags and attributes by quantum5 in https://github.com/DMOJ/online-judge/pull/1434
* Properly redirect when the organization slug is wrong by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1436
* Fix org kick by Carson-Tang in https://github.com/DMOJ/online-judge/pull/1437
* Add keyboard shortcut for triggering abort action; 1191 by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1435
* Update problem stats on submission delete by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1438
* Don't show rejudge link on submission source view when locked by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1441
* Fix comment body not breaking text on some browsers; 1443 by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1444
* Use `has_other_pages()` to check if the pagination bar should be shown by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1446
* Add unittests for models by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1416
* Hide vertical scrollbar for `wmd-button-row`; 1447 by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1449
* Break usernames and problem names in submission row instead of overflow by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1450
* Show comment post time as a readonly field on admin page by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1451
* Fix broken HTML tags by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1454
* Use Python for getting the contest problem label in contest formats by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1453
* Add scratch code support for 2FA; fixes 784 by Carson-Tang in https://github.com/DMOJ/online-judge/pull/1334
* Remove hidden word for non generated scratch codes by Carson-Tang in https://github.com/DMOJ/online-judge/pull/1458
* Check none type scratch codes by Carson-Tang in https://github.com/DMOJ/online-judge/pull/1459
* Correctly handle string prefix in lxml tree creation by quantum5 in https://github.com/DMOJ/online-judge/pull/1463
* Add (slightly better) mobile support for comments by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1455
* Make problems list ordering consistent by kevinjycui in https://github.com/DMOJ/online-judge/pull/1452
* Mark submissions with wrong acknowledgements as IE by quantum5 in https://github.com/DMOJ/online-judge/pull/1467
* Fix race condition between freeing judge and judge selection by quantum5 in https://github.com/DMOJ/online-judge/pull/1468
* Add Language and Judge endpoints to API v2 by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1471
* Vertically align checkbox input type by fluix-dev in https://github.com/DMOJ/online-judge/pull/1465
* Clear MiscConfig cache properly when saving/deleting the object; 1339 by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1340
* Revert "Replace join text with spectate if user is finished contest; fixes 544" by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1473
* Make comment votes icon use pointer cursor by fluix-dev in https://github.com/DMOJ/online-judge/pull/1469
* Add unittests for solutions by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1475
* Make submission list more mobile friendly by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1478
* Add past contests anchor for the pagination bar pages by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1477
* Fix problem breakdown table CSS after dccf6af by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1479
* Fix contest lock permission typo in admin site by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1488
* Fix CSS in case where only extended feedback is displayed by kiritofeng in https://github.com/DMOJ/online-judge/pull/1466
* Fix style.css not updating when it exists under resources/ by quantum5 in https://github.com/DMOJ/online-judge/pull/1491
* Log dispatch message only after submission has been dispatched by Xyene in https://github.com/DMOJ/online-judge/pull/1497
* Update README to reflect new repository names by kiritofeng in https://github.com/DMOJ/online-judge/pull/1498
* Fix abort any submission permission typo by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1499
* Prevent users from voting on hidden comments by zecookiez in https://github.com/DMOJ/online-judge/pull/1503
* Make removing a submission from list symmetric with adding by quantum5 in https://github.com/DMOJ/online-judge/pull/1502
* Use input and output file fields for PDFs by fluix-dev in https://github.com/DMOJ/online-judge/pull/1500
* Add participation start time tooltip to contest rankings by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1482
* Add Sorting to Contest Page 2 by slightlyskepticalpotat in https://github.com/DMOJ/online-judge/pull/1481
* Add page to view all user submissions in given contest by kiritofeng in https://github.com/DMOJ/online-judge/pull/1492
* Allow org admins to see all org problems by kiritofeng in https://github.com/DMOJ/online-judge/pull/1464
* Add CSS for 1481 by kiritofeng in https://github.com/DMOJ/online-judge/pull/1505
* Annotate ContestParticipations with `key` before sorting by kiritofeng in https://github.com/DMOJ/online-judge/pull/1506
* Fix ternary operator order for batch rejudges by Xyene in https://github.com/DMOJ/online-judge/pull/1507
* Stop updating user stats on grading end for private problems by quantum5 in https://github.com/DMOJ/online-judge/pull/1510
* Add missed semicolon by kiritofeng in https://github.com/DMOJ/online-judge/pull/1513
* Update translations from Crowdin by dmoj-build in https://github.com/DMOJ/online-judge/pull/1256
* Add Catalan language option by malbareda in https://github.com/DMOJ/online-judge/pull/1518
* Fix language fixture parameters by zecookiez in https://github.com/DMOJ/online-judge/pull/1508
* Add zero default for contest-output-prefix-length; Fixes 1515 by Carson-Tang in https://github.com/DMOJ/online-judge/pull/1516
* Allow hyphens in usernames by quantum5 in https://github.com/DMOJ/online-judge/pull/1520
* Add unittests for organization-private problems by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1504
* Explicitly set `case_points` and `case_total` to 0 by kiritofeng in https://github.com/DMOJ/online-judge/pull/1537
* Do bounds checks when fetching comment history; fixes 1542 by kiritofeng in https://github.com/DMOJ/online-judge/pull/1551
* Clone organizations for org-private problems; fixes 1530 by xiaowuc1 in https://github.com/DMOJ/online-judge/pull/1531
* Allow blank assignees when editing ticket by zecookiez in https://github.com/DMOJ/online-judge/pull/1534
* Correct pluralization of contest count; fixes 1550 by kiritofeng in https://github.com/DMOJ/online-judge/pull/1554
* Correctly pluralize assignees on ticket page by zecookiez in https://github.com/DMOJ/online-judge/pull/1555
* Fix font colour on rating tooltip by kiritofeng in https://github.com/DMOJ/online-judge/pull/1552
* Link user ranking graph to user-specific ranking by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1557
* Add file extension field to Language by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1553
* Set points to 0 upon aborting a submission by quantum5 in https://github.com/DMOJ/online-judge/pull/1528
* Fix markdown preview not working when replying to comments by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1558
* Disable codecov status by quantum5 in https://github.com/DMOJ/online-judge/pull/1562
* Fix contest ranking start time tooltip by quantum5 in https://github.com/DMOJ/online-judge/pull/1565
* Use a more precise filter for participation start tooltip by quantum5 in https://github.com/DMOJ/online-judge/pull/1566
* Do not run user scripts on the Edit Profile page by WallE256 in https://github.com/DMOJ/online-judge/pull/1561
* Add is_public to APIProblemDetail by jtyliu in https://github.com/DMOJ/online-judge/pull/1564
* Use infinite pagination on all submissions API page by quantum5 in https://github.com/DMOJ/online-judge/pull/1519
* Implement basic user migration command by quantum5 in https://github.com/DMOJ/online-judge/pull/1489
* Prevent muted people from voting. by ehhthing in https://github.com/DMOJ/online-judge/pull/1563
* Surface maximum runtime on single test case for AC submissions by xiaowuc1 in https://github.com/DMOJ/online-judge/pull/1525
* Use sentence case headings consistently by Xyene in https://github.com/DMOJ/online-judge/pull/1567
* Add submission activity graph to users page; 236 by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1480
* Decimal precision for user points in contest; Fixes 675 by Carson-Tang in https://github.com/DMOJ/online-judge/pull/1223
* Make admin notes into a codeblock by ehhthing in https://github.com/DMOJ/online-judge/pull/1571
* Make problem breakdown rows have relative dates; 1574 by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1575
* Add missing translation strings by Carson-Tang in https://github.com/DMOJ/online-judge/pull/1568
* Fix minor submission activity graph issues by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1573
* Fix ticket author indenting on front page sidebar by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1577
* Fix error in `trans` block by kiritofeng in https://github.com/DMOJ/online-judge/pull/1578
* Prioritize contest problem access checks by quantum5 in https://github.com/DMOJ/online-judge/pull/1579
* Better queries for Problem.author/editor/tester_ids by quantum5 in https://github.com/DMOJ/online-judge/pull/1580
* Remove share to Google Plus on Contests and Blogs by kevinjycui in https://github.com/DMOJ/online-judge/pull/1583
* Update format of Git requirements by WallE256 in https://github.com/DMOJ/online-judge/pull/1585
* Add support for C++20 by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1588
* Remove CSS For Google+ Features by slightlyskepticalpotat in https://github.com/DMOJ/online-judge/pull/1593
* Don't wrap testdata case type column in select2 by Xyene in https://github.com/DMOJ/online-judge/pull/1596
* Don't rate contests which have not finished yet by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1591
* Switch from pyotp to secrets for generating backup 2FA tokens by fluix-dev in https://github.com/DMOJ/online-judge/pull/1594
* Use the correct permissions for showing contest admin tab by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1601
* Remove rate button for ongoing contests; 1592 by Carson-Tang in https://github.com/DMOJ/online-judge/pull/1599
* Added option DMOJ_PRIVATE_SUBMISSION to hide source code by munhyunsu in https://github.com/DMOJ/online-judge/pull/1582
* Show admin tabs on own profile page by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1603
* Expose participation start and end times through API; fixes 1586 by WallE256 in https://github.com/DMOJ/online-judge/pull/1587
* Ensure `0` instead of `None` in home page submission count by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1611
* Fix styling error with admin tabs by kiritofeng in https://github.com/DMOJ/online-judge/pull/1613
* Make cache versioned so we can purge manually by quantum5 in https://github.com/DMOJ/online-judge/pull/1619
* Make updatemessages use peter-evans/create-pull-requestv3 by quantum5 in https://github.com/DMOJ/online-judge/pull/1618
* Make updatemessages workflow run daily by quantum5 in https://github.com/DMOJ/online-judge/pull/1620
* Do not increase volatility for DQed users by xiaowuc1 in https://github.com/DMOJ/online-judge/pull/1608
* Consolidate pagination bar spacings by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1589
* Exclude unlisted user submissions from total submissions by quantum5 in https://github.com/DMOJ/online-judge/pull/1625
* Limit height of ongoing contest box on home page by quantum5 in https://github.com/DMOJ/online-judge/pull/1629
* Add CI test to build CSS by quantum5 in https://github.com/DMOJ/online-judge/pull/1632
* Require a solved problem to update profile about by quantum5 in https://github.com/DMOJ/online-judge/pull/1633
* Use Profile.has_any_solves in CommentedDetailView.get_context_data by quantum5 in https://github.com/DMOJ/online-judge/pull/1634
* Remove organization registrant field by kiritofeng in https://github.com/DMOJ/online-judge/pull/1637
* Filter submissions by language before generating rankings by quantum5 in https://github.com/DMOJ/online-judge/pull/1628
* Always show top border line on submission table by quantum5 in https://github.com/DMOJ/online-judge/pull/1630
* Support django-recaptcha2>=1.4.0 by quantum5 in https://github.com/DMOJ/online-judge/pull/1631
* Properly centre forms on login and 2fa pages by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1622
* Limit width of registration form for mobile by leduythuccs in https://github.com/DMOJ/online-judge/pull/1638
* Require a solved problem to create a new ticket out of contest by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1639
* Correctly implement lazy static URL resolution by quantum5 in https://github.com/DMOJ/online-judge/pull/1640
* Added scoreboard_visibility by jtyliu in https://github.com/DMOJ/online-judge/pull/1627
* Use gettext_lazy to translate title by leduythuccs in https://github.com/DMOJ/online-judge/pull/1644
* Add is_organization_private to automatic problem rescore check by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1643
* Fix ranked submissions on empty language filter by quantum5 in https://github.com/DMOJ/online-judge/pull/1646
* Don't set negative margin followed by padding on ticket messages by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1647
* Set updatemessages PR author to dmoj-build by quantum5 in https://github.com/DMOJ/online-judge/pull/1650
* Set caniuse PR author to dmoj-build by quantum5 in https://github.com/DMOJ/online-judge/pull/1651
* Add validation on problem statement for disallowed characters; fixes … by Carson-Tang in https://github.com/DMOJ/online-judge/pull/1623
* Add copy button on loading comment history by quantum5 in https://github.com/DMOJ/online-judge/pull/1653
* Faster filtering on submission API v2 endpoint by quantum5 in https://github.com/DMOJ/online-judge/pull/1654
* Improve balancing between judges with same load by quantum5 in https://github.com/DMOJ/online-judge/pull/1652
* Fix impossible to translate strings by quantum5 in https://github.com/DMOJ/online-judge/pull/1656
* Update translations from Crowdin by dmoj-build in https://github.com/DMOJ/online-judge/pull/1521
* Import latest Can I use... data by dmoj-build in https://github.com/DMOJ/online-judge/pull/1302
* Add minor improvements to user data downloads by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1655
* Reduce time complexity for chain of * in problem filter by quantum5 in https://github.com/DMOJ/online-judge/pull/1658
* Update English source .po files in updatemessages by quantum5 in https://github.com/DMOJ/online-judge/pull/1657
* Add problem visibility to APIProblemList by jtyliu in https://github.com/DMOJ/online-judge/pull/1661
* Make caniuse PR use reviewers instead of assignees by quantum5 in https://github.com/DMOJ/online-judge/pull/1665
* Pretty format caniuse.json by quantum5 in https://github.com/DMOJ/online-judge/pull/1664
* Make translations PR use reviewers instead of assignees by quantum5 in https://github.com/DMOJ/online-judge/pull/1666
* Add comment for non-trivial submission saving logic by kiritofeng in https://github.com/DMOJ/online-judge/pull/1669
* Ignore Vim's backups by kiritofeng in https://github.com/DMOJ/online-judge/pull/1671
* Add contest curator and testers by kiritofeng in https://github.com/DMOJ/online-judge/pull/1668
* Add `is_locked` to `submission_related` by kiritofeng in https://github.com/DMOJ/online-judge/pull/1673
* Compute user_tester_ids without an inner join by quantum5 in https://github.com/DMOJ/online-judge/pull/1674
* Allow contest curators and authors to see submissions made in contest by kiritofeng in https://github.com/DMOJ/online-judge/pull/1672
* Fix missing `distinct()` by kiritofeng in https://github.com/DMOJ/online-judge/pull/1675
* Set submission contest object to None on contest submission delete by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1676
* Remove unneeded `profile.update_contest()` call in `ProblemSubmit` by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1677
* Fix `SubmissionMixin` `access_check()` method by kiritofeng in https://github.com/DMOJ/online-judge/pull/1678
* Remove unused PrivateMessage model by kiritofeng in https://github.com/DMOJ/online-judge/pull/1680
* Create initial revision on contest/problem clone by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1679
* Convert submission lock, rejudged date, and contest lock to timestamps by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1660
* Refactor atomic revisions by kiritofeng in https://github.com/DMOJ/online-judge/pull/1682
* Consistently cache global submission stats by quantum5 in https://github.com/DMOJ/online-judge/pull/1681
* Fix attempt to fetch all submissions by quantum5 in https://github.com/DMOJ/online-judge/pull/1683
* Allow unlisted users to see contest rank; fixes 1607 by kiritofeng in https://github.com/DMOJ/online-judge/pull/1609
* Refactor implementation of contest rating by quantum5 in https://github.com/DMOJ/online-judge/pull/1685
* Use correct spacing for rating column in contest rankings by quantum5 in https://github.com/DMOJ/online-judge/pull/1686
* ratings: correctly handle unrated users in SQL by quantum5 in https://github.com/DMOJ/online-judge/pull/1687
* Pass request as context in default flatpage template by quantum5 in https://github.com/DMOJ/online-judge/pull/1689
* Recompute rating for all users that participated by quantum5 in https://github.com/DMOJ/online-judge/pull/1697
* Remove unused `valid_id` in `judge/views/register.py` by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1703
* Expose `is_rated` and `rate_all` in API v2 contest list by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1694
* Remove unneeded rating object delete operation in `rate_contest` by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1699
* Atomically rate multiple contests by quantum5 in https://github.com/DMOJ/online-judge/pull/1702
* Filter contest submissions properly in live updates by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1701
* Refactor TOTPEnableView in preparation for 1693 by quantum5 in https://github.com/DMOJ/online-judge/pull/1708
* Display better message on editorial 404 by quantum5 in https://github.com/DMOJ/online-judge/pull/1711
* Implement TOTP key refreshing by quantum5 in https://github.com/DMOJ/online-judge/pull/1710
* Allow TOTP to be disabled when WebAuthn is enabled by quantum5 in https://github.com/DMOJ/online-judge/pull/1712
* Allow WebAuthn devices to be managed in admin by quantum5 in https://github.com/DMOJ/online-judge/pull/1713
* Use html.unescape instead of deprecated HTMLParser.unescape by quantum5 in https://github.com/DMOJ/online-judge/pull/1715
* Allow scratch codes with only WebAuthn by quantum5 in https://github.com/DMOJ/online-judge/pull/1716
* Refactor TOTP code checking to its own function by quantum5 in https://github.com/DMOJ/online-judge/pull/1719
* Make TOTP enable/disable views mobile friendly by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1714
* Use django-admin-sortable2 for contest problem ordering by quantum5 in https://github.com/DMOJ/online-judge/pull/1717
* Add option to hide problem authors while in contest by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1718
* Add word wrap to case feedback on submission status by quantum5 in https://github.com/DMOJ/online-judge/pull/1726
* Prevent the reuse of TOTP authentication codes by quantum5 in https://github.com/DMOJ/online-judge/pull/1720
* Store rounded participation score in database by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1725
* Implement per-problem submission access control by quantum5 in https://github.com/DMOJ/online-judge/pull/1727
* Check correct variable on submission detail pages by quantum5 in https://github.com/DMOJ/online-judge/pull/1728
* Reorder fields in problem admin by kiritofeng in https://github.com/DMOJ/online-judge/pull/1730
* Remove unused `malformed_packet` method by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1729
* Remove unused ticket CSS "messages" class by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1734
* Remove duplicated and unused `manifest.json` by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1735
* fix: font-size unit correction by subramanian0 in https://github.com/DMOJ/online-judge/pull/1736
* fix: security - window.opener property should not be available for third party sites. by subramanian0 in https://github.com/DMOJ/online-judge/pull/1737
* Cap new rating before computing new volatility by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1738
* Update translations from Crowdin by dmoj-build in https://github.com/DMOJ/online-judge/pull/1659
* Add rate limit to password reset view by quantum5 in https://github.com/DMOJ/online-judge/pull/1741
* Return to first page of paginator after changing filter options by quantum5 in https://github.com/DMOJ/online-judge/pull/1739
* Implement user display name override by quantum5 in https://github.com/DMOJ/online-judge/pull/1747
* Migrate rating system from Topcoder to Elo-MMR by int-y1 in https://github.com/DMOJ/online-judge/pull/1751
* For DQ'ed contest participations, set cumtime to zero unconditionally. by xiaowuc1 in https://github.com/DMOJ/online-judge/pull/1752
* For DQ'ed contest participations, set tiebreaker to zero unconditionally. by xiaowuc1 in https://github.com/DMOJ/online-judge/pull/1753
* Do not render MathJax math in description editor by int-y1 in https://github.com/DMOJ/online-judge/pull/1754
* Implement contest settings short display by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1732
* Fix `li` tag in contest short form display by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1755
* Use CSPRNG for judge keys by int-y1 in https://github.com/DMOJ/online-judge/pull/1757
* Update translations from Crowdin by dmoj-build in https://github.com/DMOJ/online-judge/pull/1740
* Implement hardcore 2FA mode by quantum5 in https://github.com/DMOJ/online-judge/pull/1762
* Ensure `edit_own_problem` is a prerequisite for `edit_all_problem` by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1722
* Add flake8-quotes to the linter by Riolku in https://github.com/DMOJ/online-judge/pull/1763
* Return a plaintext 404 response for comment vote view by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1769
* Prevent multiple pending join requests from same user by quantum5 in https://github.com/DMOJ/online-judge/pull/1770
* Fix linter mistake by int-y1 in https://github.com/DMOJ/online-judge/pull/1771
* Implement dumb full text search for CJK by quantum5 in https://github.com/DMOJ/online-judge/pull/1772
* Add styling for spoilers with HTML <details> tag by quantum5 in https://github.com/DMOJ/online-judge/pull/1774
* Allow <details> and <summary> tags by quantum5 in https://github.com/DMOJ/online-judge/pull/1775
* Allow joining a new contest while a participation is already active by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1778
* Add disallowed character validation for other Problem-related fields by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1779
* Remove CachedContestCalendar view by quantum5 in https://github.com/DMOJ/online-judge/pull/1781
* Replace force_text with force_str by quantum5 in https://github.com/DMOJ/online-judge/pull/1784
* Remove dependency on django.utils.six by quantum5 in https://github.com/DMOJ/online-judge/pull/1783
* Remove unused `rated_users` context on profile page by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1786
* Surface problem links for authors/curators on contest page; fixes 1746 by kiritofeng in https://github.com/DMOJ/online-judge/pull/1787
* Fix ticket message styling, add relative dates and admin button by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1780
* Preventing duplicate form submissions by leduythuccs in https://github.com/DMOJ/online-judge/pull/1777
* Fix join/spectate button in contest listing by int-y1 in https://github.com/DMOJ/online-judge/pull/1765
* Change style of unrated username by int-y1 in https://github.com/DMOJ/online-judge/pull/1795
* Add checkmark to hide closed tickets by int-y1 in https://github.com/DMOJ/online-judge/pull/1793
* Copy supported languages from judge-server to README by int-y1 in https://github.com/DMOJ/online-judge/pull/1792
* Avoid marking graded submissions as aborted by WallE256 in https://github.com/DMOJ/online-judge/pull/1798
* Move to MathJax 3.2.0 by int-y1 in https://github.com/DMOJ/online-judge/pull/1797
* Explicitly exclude current user from rank by point query by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1785
* Remove raw problem view by kiritofeng in https://github.com/DMOJ/online-judge/pull/1801
* Remove deprecated abstractproperty by quantum5 in https://github.com/DMOJ/online-judge/pull/1788
* Display rating level names as hover text by quantum5 in https://github.com/DMOJ/online-judge/pull/1790
* Remove uses of Django 3.0 deprecations by quantum5 in https://github.com/DMOJ/online-judge/pull/1789
* Avoid PyPI webauthn 1.x for now by quantum5 in https://github.com/DMOJ/online-judge/pull/1803
* Remove PO-Revision-Date-only translation PRs by quantum5 in https://github.com/DMOJ/online-judge/pull/1805
* Implement basic contest iCalendar output by quantum5 in https://github.com/DMOJ/online-judge/pull/1782
* Remove POT-Creation-Date-only translation PRs by quantum5 in https://github.com/DMOJ/online-judge/pull/1807
* Allow PDF footers to be disabled by quantum5 in https://github.com/DMOJ/online-judge/pull/1808
* Fix race condition in PDF math rendering by int-y1 in https://github.com/DMOJ/online-judge/pull/1810
* Properly prevent multiple form submissions by leduythuccs in https://github.com/DMOJ/online-judge/pull/1809
* Prevent editing of comment score from admin panel by kiritofeng in https://github.com/DMOJ/online-judge/pull/1812
* Typo fix by int-y1 in https://github.com/DMOJ/online-judge/pull/1818
* Fix mistune by UnknowName01 in https://github.com/DMOJ/online-judge/pull/1825
* Pass ticket to TicketMessageDataAjax view by quantum5 in https://github.com/DMOJ/online-judge/pull/1826
* Add space in rating chart by int-y1 in https://github.com/DMOJ/online-judge/pull/1817
* Add support for classes by quantum5 in https://github.com/DMOJ/online-judge/pull/1828
* Leave a spare judge when rejudging if possible by quantum5 in https://github.com/DMOJ/online-judge/pull/1842
* Distinguish virtual participations in contest submission inline by quantum5 in https://github.com/DMOJ/online-judge/pull/1841
* Fix contest editorial display for future editorials by Riolku in https://github.com/DMOJ/online-judge/pull/1845
* Infer private booleans; fixes 1829 by kiritofeng in https://github.com/DMOJ/online-judge/pull/1830
* Don't write empty dict to init.yml by leduythuccs in https://github.com/DMOJ/online-judge/pull/1794
* Full hidden scoreboard & Post-window own scoreboard by Riolku in https://github.com/DMOJ/online-judge/pull/1843
* Use different colour for the first letter of target by quantum5 in https://github.com/DMOJ/online-judge/pull/1814
* Correctly redirect organization user page with wrong slug by quantum5 in https://github.com/DMOJ/online-judge/pull/1813
* Set `u+x` on `manage.py` by kiritofeng in https://github.com/DMOJ/online-judge/pull/1848
* Add editorial column and filtering by Riolku in https://github.com/DMOJ/online-judge/pull/1844
* Auto-submit search form when has editorial is clicked by Riolku in https://github.com/DMOJ/online-judge/pull/1849
* Convert django.conf.urls.url to django.conf.urls.(re_)path by jisoochoi7561 in https://github.com/DMOJ/online-judge/pull/1823
* fix submission visibility in contests by Riolku in https://github.com/DMOJ/online-judge/pull/1850
* Fix errors in 1830 by kiritofeng in https://github.com/DMOJ/online-judge/pull/1852
* Fix problem name sort for untranslated problems by quantum5 in https://github.com/DMOJ/online-judge/pull/1853
* Fix statistics tab; fixes 1756 by kiritofeng in https://github.com/DMOJ/online-judge/pull/1851
* add submission 403 page by Riolku in https://github.com/DMOJ/online-judge/pull/1858
* add editorial book and sort by Riolku in https://github.com/DMOJ/online-judge/pull/1857
* cmd+enter to submit by y0105w49 in https://github.com/DMOJ/online-judge/pull/1868
* fix visibility check on contest saving by Riolku in https://github.com/DMOJ/online-judge/pull/1865
* add toggle for testers to see scoreboard by Riolku in https://github.com/DMOJ/online-judge/pull/1871
* Save submission state before rejudging by quantum5 in https://github.com/DMOJ/online-judge/pull/1867
* Change wording of "Maximum runtime on single test case" by slightlyskepticalpotat in https://github.com/DMOJ/online-judge/pull/1569
* add editorial tooltip by Riolku in https://github.com/DMOJ/online-judge/pull/1866
* shrink editorial column by Riolku in https://github.com/DMOJ/online-judge/pull/1863
* Can join organizations by Riolku in https://github.com/DMOJ/online-judge/pull/1854
* add `view_contest_submissions` field by Riolku in https://github.com/DMOJ/online-judge/pull/1860
* Fix Contest model fields without translation by quantum5 in https://github.com/DMOJ/online-judge/pull/1873
* add change visibility blog post perm by Riolku in https://github.com/DMOJ/online-judge/pull/1870
* Make massive Q chains look less silly by quantum5 in https://github.com/DMOJ/online-judge/pull/1874
* Add spectator to contests by Riolku in https://github.com/DMOJ/online-judge/pull/1869
* add `tester_see_scoreboard` to ContestAdmin by Riolku in https://github.com/DMOJ/online-judge/pull/1875
* fix contest join buttons by Riolku in https://github.com/DMOJ/online-judge/pull/1877
* Fix problems list not showing all problems a user has access to by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1820
* warn on joining, not spectating on list by Riolku in https://github.com/DMOJ/online-judge/pull/1880
* Avoid passing models to celery tasks by quantum5 in https://github.com/DMOJ/online-judge/pull/1878
* Compare i18n changes with correct branch by int-y1 in https://github.com/DMOJ/online-judge/pull/1884
* Fetch all branches in GitHub action by int-y1 in https://github.com/DMOJ/online-judge/pull/1885
* Avoid closing the translations PR when there is no change by quantum5 in https://github.com/DMOJ/online-judge/pull/1889
* Log context switch information into JSON logger by quantum5 in https://github.com/DMOJ/online-judge/pull/1882
* Switch custom requirements from unencrypted git to https by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1896
* Fix i18n messages for pwned passwords by int-y1 in https://github.com/DMOJ/online-judge/pull/1894
* Update Ruby key in language fixture by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1892
* Fix i18n in fields by int-y1 in https://github.com/DMOJ/online-judge/pull/1897
* Allow rejudging when there is only a single judge by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1902
* Add judge.utils.iterator.chunk by quantum5 in https://github.com/DMOJ/online-judge/pull/1903
* Use new safe translation module for Jinja2 by quantum5 in https://github.com/DMOJ/online-judge/pull/1899
* Remove unsafe translations in Python code by quantum5 in https://github.com/DMOJ/online-judge/pull/1900
* Add i18n to a line of text by int-y1 in https://github.com/DMOJ/online-judge/pull/1898
* Import Markup from MarkupSafe instead of jinja2 by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1909
* Make submission history chart timezone aware by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1904
* Localize date in user rating chart tooltip by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1908
* Fix i18n issues in models by int-y1 in https://github.com/DMOJ/online-judge/pull/1910
* Link editorial on problem list by Riolku in https://github.com/DMOJ/online-judge/pull/1906
* Fix translations unparsable by Django's extractor by quantum5 in https://github.com/DMOJ/online-judge/pull/1905
* updatemessages: checkout from $i18n_head when no material change by quantum5 in https://github.com/DMOJ/online-judge/pull/1912
* Fix dependency versions by int-y1 in https://github.com/DMOJ/online-judge/pull/1918
* Typo fix by int-y1 in https://github.com/DMOJ/online-judge/pull/1922
* Fix i18n on content titles by int-y1 in https://github.com/DMOJ/online-judge/pull/1920
* Fix countdown space by int-y1 in https://github.com/DMOJ/online-judge/pull/1928
* Remove useless "set title" by int-y1 in https://github.com/DMOJ/online-judge/pull/1924
* Clean up i18n in __str__ by int-y1 in https://github.com/DMOJ/online-judge/pull/1932
* Disallow voting on own comments by int-y1 in https://github.com/DMOJ/online-judge/pull/1927
* Remove dead templates by int-y1 in https://github.com/DMOJ/online-judge/pull/1923
* Fix TypeError with new version of Pygments by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1936
* Upgrade to actions/checkoutv2 by int-y1 in https://github.com/DMOJ/online-judge/pull/1930
* Fix i18n issues with relative_time by int-y1 in https://github.com/DMOJ/online-judge/pull/1934
* Fix comment editor's buttons on narrow screens by int-y1 in https://github.com/DMOJ/online-judge/pull/1907
* Clean up css for content columns by int-y1 in https://github.com/DMOJ/online-judge/pull/1926
* Fix preview when editing comment twice by int-y1 in https://github.com/DMOJ/online-judge/pull/1925
* Remove html tags in i18n translations by int-y1 in https://github.com/DMOJ/online-judge/pull/1921
* Remove py2 syntax in fixture by int-y1 in https://github.com/DMOJ/online-judge/pull/1957
* Fix bugs on class page by int-y1 in https://github.com/DMOJ/online-judge/pull/1963
* Update translations from Crowdin by dmoj-build in https://github.com/DMOJ/online-judge/pull/1891
* Updated the memory limit help text shown in the problem editor from 64mb to 256mb by wesley-a-leung in https://github.com/DMOJ/online-judge/pull/1950
* Better timezone detection in registration forms by int-y1 in https://github.com/DMOJ/online-judge/pull/1944
* Fix 500 error on /contest/\<code\>/leave by int-y1 in https://github.com/DMOJ/online-judge/pull/1956
* Improve license link by int-y1 in https://github.com/DMOJ/online-judge/pull/1959
* Ban pointless Unicode characters from problem statements by int-y1 in https://github.com/DMOJ/online-judge/pull/1960
* Remove py2 unicode syntax by int-y1 in https://github.com/DMOJ/online-judge/pull/1947
* Translate the problem types in a dropdown by int-y1 in https://github.com/DMOJ/online-judge/pull/1948
* Improve password reset email by int-y1 in https://github.com/DMOJ/online-judge/pull/1945
* Improve submission status's i18n strings by int-y1 in https://github.com/DMOJ/online-judge/pull/1946
* Fix filters that break i18n by int-y1 in https://github.com/DMOJ/online-judge/pull/1939
* Minor i18n message fixes by int-y1 in https://github.com/DMOJ/online-judge/pull/1937
* Make DMOJ logo symmetrical by int-y1 in https://github.com/DMOJ/online-judge/pull/1931
* Added Greek language option in UI by ptheoch in https://github.com/DMOJ/online-judge/pull/1972
* Fix regression caused by 42ee283; fixes 1970 by kiritofeng in https://github.com/DMOJ/online-judge/pull/1976
* Fix rare bug on copying text by int-y1 in https://github.com/DMOJ/online-judge/pull/1979
* Use full sentences in help_text by int-y1 in https://github.com/DMOJ/online-judge/pull/1988
* Fix scratch code's copy button by int-y1 in https://github.com/DMOJ/online-judge/pull/1982
* Fix code comments by int-y1 in https://github.com/DMOJ/online-judge/pull/1978
* Fix pwned passwords throwing `ValueError` by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/1991
* bridge: make blocked judges less noisy by Xyene in https://github.com/DMOJ/online-judge/pull/1998
* Fix broken celery dependency by quantum5 in https://github.com/DMOJ/online-judge/pull/2000
* Update admin sidebar by kiritofeng in https://github.com/DMOJ/online-judge/pull/1999
* Only display editorials for public problems; fixes 1961 by kiritofeng in https://github.com/DMOJ/online-judge/pull/2001
* Fix period in sentences by int-y1 in https://github.com/DMOJ/online-judge/pull/1992
* Avoid waiting when only one judge can handle a submission by quantum5 in https://github.com/DMOJ/online-judge/pull/2002
* Show more comment info in admin page by int-y1 in https://github.com/DMOJ/online-judge/pull/2012
* Check for organization join limit at registration by int-y1 in https://github.com/DMOJ/online-judge/pull/2003
* Fix i18n messages by int-y1 in https://github.com/DMOJ/online-judge/pull/1984
* Add i18n plurals in templates by int-y1 in https://github.com/DMOJ/online-judge/pull/1983
* Add i18n to js messages by int-y1 in https://github.com/DMOJ/online-judge/pull/1985
* Change how username is displayed in tickets by int-y1 in https://github.com/DMOJ/online-judge/pull/2008
* Allow sorting of organization's user list by int-y1 in https://github.com/DMOJ/online-judge/pull/1977
* Confirm rejudging on submission page by Riolku in https://github.com/DMOJ/online-judge/pull/2010
* Increase precision on relative time offsets by int-y1 in https://github.com/DMOJ/online-judge/pull/1990
* Add i18n to server-side messages by int-y1 in https://github.com/DMOJ/online-judge/pull/1980
* Fixup active tab having a pixel border drawn by Xyene in https://github.com/DMOJ/online-judge/pull/2014
* Upgrade to Django 3.2 by quantum5 in https://github.com/DMOJ/online-judge/pull/1811
* Make comments work again on Django 3.2 by quantum5 in https://github.com/DMOJ/online-judge/pull/2016
* Add related_model to FakeJoinField for join_sql_subquery by quantum5 in https://github.com/DMOJ/online-judge/pull/2017
* Fix rating graph regression from cd167f8 by Xyene in https://github.com/DMOJ/online-judge/pull/2018
* Partially revert fd8f8fc to fix 2013 by Xyene in https://github.com/DMOJ/online-judge/pull/2019
* ci: update actions by Xyene in https://github.com/DMOJ/online-judge/pull/2015
* Remove dead settings by int-y1 in https://github.com/DMOJ/online-judge/pull/1952
* Migrate to bleach 5.0.0 by int-y1 in https://github.com/DMOJ/online-judge/pull/1915
* Remove useless locale files by int-y1 in https://github.com/DMOJ/online-judge/pull/1940
* i18n plurals in error messages by int-y1 in https://github.com/DMOJ/online-judge/pull/1953
* Remove reply button on old comments by int-y1 in https://github.com/DMOJ/online-judge/pull/2009
* Refactor user submission table's js by int-y1 in https://github.com/DMOJ/online-judge/pull/1954
* Highlight partial AC testcases differently by Xyene in https://github.com/DMOJ/online-judge/pull/2021
* Make contest list header casing match the rest of the site by Xyene in https://github.com/DMOJ/online-judge/pull/2022
* Improve styling of password reset email by int-y1 in https://github.com/DMOJ/online-judge/pull/1993
* Replace unique_together_left_join with FilteredRelation by quantum5 in https://github.com/DMOJ/online-judge/pull/2023
* Remove RawSQLColumn now that it's unused by quantum5 in https://github.com/DMOJ/online-judge/pull/2024
* Fix submission table for 0 submissions by int-y1 in https://github.com/DMOJ/online-judge/pull/2030
* Remove i18n for coding error messages by int-y1 in https://github.com/DMOJ/online-judge/pull/2029
* Modernize activation email by int-y1 in https://github.com/DMOJ/online-judge/pull/2028
* Make `pretest_test_cases` and `test_cases` disjoint by Xyene in https://github.com/DMOJ/online-judge/pull/2025
* Remove dead function by int-y1 in https://github.com/DMOJ/online-judge/pull/2034
* Clean up table css by int-y1 in https://github.com/DMOJ/online-judge/pull/2037
* Clean up page tab's css by int-y1 in https://github.com/DMOJ/online-judge/pull/2038
* Clean up ContestCalendar css by int-y1 in https://github.com/DMOJ/online-judge/pull/2036
* Don't allow for infinite and nan values in `safe_float_or_none` by kiritofeng in https://github.com/DMOJ/online-judge/pull/2039
* Remove textWidth by int-y1 in https://github.com/DMOJ/online-judge/pull/2042
* Introduce primary color in scss by int-y1 in https://github.com/DMOJ/online-judge/pull/2041
* Standardize SCSS gray colors by int-y1 in https://github.com/DMOJ/online-judge/pull/2043
* Remove dead AdminPagedownWidget by int-y1 in https://github.com/DMOJ/online-judge/pull/2045
* Clean up widget scss by int-y1 in https://github.com/DMOJ/online-judge/pull/2044
* Migrate text editor css to scss by int-y1 in https://github.com/DMOJ/online-judge/pull/2048
* Add scss variables for link colors by int-y1 in https://github.com/DMOJ/online-judge/pull/2049
* Fix editor buttons when replying to comment by int-y1 in https://github.com/DMOJ/online-judge/pull/2050
* Add link to post when using blog summary by int-y1 in https://github.com/DMOJ/online-judge/pull/2052
* Add querystring option to enable dark mode by int-y1 in https://github.com/DMOJ/online-judge/pull/2053
* Add querystring option to enable dark mode (attempt 2) by int-y1 in https://github.com/DMOJ/online-judge/pull/2056
* Improve l10n in solved problems table by int-y1 in https://github.com/DMOJ/online-judge/pull/2063
* Update Django links to 3.2 by int-y1 in https://github.com/DMOJ/online-judge/pull/2062
* Correctly set contest.is_organization_private when using classes by quantum5 in https://github.com/DMOJ/online-judge/pull/2065
* Make it possible to change class members in admin by quantum5 in https://github.com/DMOJ/online-judge/pull/2064
* Create dark mode for Featherlight by int-y1 in https://github.com/DMOJ/online-judge/pull/2068
* fix page titles on dark mode by slightlyskepticalpotat in https://github.com/DMOJ/online-judge/pull/2067
* Make ?dark activate dark mode by quantum5 in https://github.com/DMOJ/online-judge/pull/2069
* Clean up comment CSS by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/2070
* Use striped tables by int-y1 in https://github.com/DMOJ/online-judge/pull/2071
* Remove IE8 code by int-y1 in https://github.com/DMOJ/online-judge/pull/2072
* Allow unicode and nobigmath hints to be used with site data by FherStk in https://github.com/DMOJ/online-judge/pull/2055
* Add problem points vote functionality by lakshy-gupta in https://github.com/DMOJ/online-judge/pull/1645
* Fix small error in pp calculation by int-y1 in https://github.com/DMOJ/online-judge/pull/2074
* Fix flake8 configuration by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/2077
* Fix bridge database connection leaks by quantum5 in https://github.com/DMOJ/online-judge/pull/2080
* Minor fix to judge table by int-y1 in https://github.com/DMOJ/online-judge/pull/2078
* Use DMOJ's own `django-fernet-fields` by kiritofeng in https://github.com/DMOJ/online-judge/pull/2081
* Explicitly set DEFAULT_AUTO_FIELD by quantum5 in https://github.com/DMOJ/online-judge/pull/2082
* Dark mode images by int-y1 in https://github.com/DMOJ/online-judge/pull/2084
* Fix blank submission activity colour by Ninjaclasher in https://github.com/DMOJ/online-judge/pull/2086
* Fix CSS for rating circles by int-y1 in https://github.com/DMOJ/online-judge/pull/2083
* Fix math_setting crash when reporting errors by quantum5 in https://github.com/DMOJ/online-judge/pull/2087
* Change style for bad user mentions by int-y1 in https://github.com/DMOJ/online-judge/pull/2079
* Remove dead variables for rating chart by int-y1 in https://github.com/DMOJ/online-judge/pull/2090
* Remove recently_attempted_problems by int-y1 in https://github.com/DMOJ/online-judge/pull/2088
* Fix the check for has_any_solves by int-y1 in https://github.com/DMOJ/online-judge/pull/2089
* Standardize labels in edit profile page by int-y1 in https://github.com/DMOJ/online-judge/pull/2073
* Fix SVG/PNG math in dark mode by int-y1 in https://github.com/DMOJ/online-judge/pull/2093
* Move ticket CSS into SCSS file by int-y1 in https://github.com/DMOJ/online-judge/pull/2094
* Use more reasonable values in sitemap by int-y1 in https://github.com/DMOJ/online-judge/pull/2092
* Make problem search more sane by int-y1 in https://github.com/DMOJ/online-judge/pull/2051
* Update translations from Crowdin by dmoj-build in https://github.com/DMOJ/online-judge/pull/1971
* Fix ticket form's width by int-y1 in https://github.com/DMOJ/online-judge/pull/2096
* Improve padding and margin of comment section by int-y1 in https://github.com/DMOJ/online-judge/pull/2098
* Clean up user icon in top-right corner by int-y1 in https://github.com/DMOJ/online-judge/pull/2100
* Implement disabling a judge by WallE256 in https://github.com/DMOJ/online-judge/pull/2005
* Improve the judge and runtime admin pages by WallE256 in https://github.com/DMOJ/online-judge/pull/2102
* Replace deprecated `django.conf.url` with `django.urls.path` by kiritofeng in https://github.com/DMOJ/online-judge/pull/2085
* Delete & Prevent zombie editorials (Closes 1958) by jdabtieu in https://github.com/DMOJ/online-judge/pull/2004
* Remove negative margins in comments by int-y1 in https://github.com/DMOJ/online-judge/pull/2101
* Remove dead css on comments by int-y1 in https://github.com/DMOJ/online-judge/pull/2105
* Clean up css for users by int-y1 in https://github.com/DMOJ/online-judge/pull/2106
* Clean up css on contest list page by int-y1 in https://github.com/DMOJ/online-judge/pull/2107
* Clean up pagination css in user table by int-y1 in https://github.com/DMOJ/online-judge/pull/2112
* Fix small bug with problem attempt icon by int-y1 in https://github.com/DMOJ/online-judge/pull/2104
* Simplify AC query for /stats/language/ by int-y1 in https://github.com/DMOJ/online-judge/pull/2109
* Clean up org edit page by int-y1 in https://github.com/DMOJ/online-judge/pull/2111
* Clean up blog css by int-y1 in https://github.com/DMOJ/online-judge/pull/2113
* Add more space for user info column by int-y1 in https://github.com/DMOJ/online-judge/pull/2114
* Add dark Pygments code theme by int-y1 in https://github.com/DMOJ/online-judge/pull/2115
* Simplify CSS in judge version table by int-y1 in https://github.com/DMOJ/online-judge/pull/2117
* Slightly clean up navbar css by int-y1 in https://github.com/DMOJ/online-judge/pull/2119
* Remove Django 2.2 file by int-y1 in https://github.com/DMOJ/online-judge/pull/2125
* Move navbar CSS into separate file by int-y1 in https://github.com/DMOJ/online-judge/pull/2120
* Clean up contest calendar css by int-y1 in https://github.com/DMOJ/online-judge/pull/2122
* Fix rendering of target color on contest page by Balint-R in https://github.com/DMOJ/online-judge/pull/2124
* Clean up blog page css by int-y1 in https://github.com/DMOJ/online-judge/pull/2121
* Remove msp math renderer by int-y1 in https://github.com/DMOJ/online-judge/pull/2126
* Simplify design of user table's rating column by int-y1 in https://github.com/DMOJ/online-judge/pull/2127
* Fix hot problems css by int-y1 in https://github.com/DMOJ/online-judge/pull/2128
* Add more i18n by int-y1 in https://github.com/DMOJ/online-judge/pull/2132
* Minor i18n fixes by int-y1 in https://github.com/DMOJ/online-judge/pull/2134
* Remove png support in mathoid by int-y1 in https://github.com/DMOJ/online-judge/pull/2130
* Update translations from Crowdin by dmoj-build in https://github.com/DMOJ/online-judge/pull/2097
* Pin packaging to < 22 by Xyene in https://github.com/DMOJ/online-judge/pull/2138

</details>

New contributors
* kevinjycui made their first contribution in https://github.com/DMOJ/online-judge/pull/1399
* adambenali made their first contribution in https://github.com/DMOJ/online-judge/pull/1401
* zecookiez made their first contribution in https://github.com/DMOJ/online-judge/pull/1503
* slightlyskepticalpotat made their first contribution in https://github.com/DMOJ/online-judge/pull/1481
* malbareda made their first contribution in https://github.com/DMOJ/online-judge/pull/1518
* jtyliu made their first contribution in https://github.com/DMOJ/online-judge/pull/1564
* munhyunsu made their first contribution in https://github.com/DMOJ/online-judge/pull/1582
* leduythuccs made their first contribution in https://github.com/DMOJ/online-judge/pull/1638
* subramanian0 made their first contribution in https://github.com/DMOJ/online-judge/pull/1736
* Riolku made their first contribution in https://github.com/DMOJ/online-judge/pull/1763
* UnknowName01 made their first contribution in https://github.com/DMOJ/online-judge/pull/1825
* jisoochoi7561 made their first contribution in https://github.com/DMOJ/online-judge/pull/1823
* y0105w49 made their first contribution in https://github.com/DMOJ/online-judge/pull/1868
* wesley-a-leung made their first contribution in https://github.com/DMOJ/online-judge/pull/1950
* ptheoch made their first contribution in https://github.com/DMOJ/online-judge/pull/1972
* FherStk made their first contribution in https://github.com/DMOJ/online-judge/pull/2055
* lakshy-gupta made their first contribution in https://github.com/DMOJ/online-judge/pull/1645
* jdabtieu made their first contribution in https://github.com/DMOJ/online-judge/pull/2004
* Balint-R made their first contribution in https://github.com/DMOJ/online-judge/pull/2124

3.0.2

This is a bugfix release, ahead of the DMOJ judge dropping support for Linux kernels older than 4.8. It is the last release to support ptrace-only sandboxing; future releases will require seccomp-enabled kernels.

The full changelog is available [here](https://github.com/DMOJ/judge-server/compare/v3.0.1...v3.0.2).

Features
* Added a problem validation mode to `dmoj-cli` (https://github.com/DMOJ/judge-server/issues/335)
* Added a `linematches` checker for problems that reward points based on lines matched

Sandbox
* File accesses for existing files are now disallowed with `EPERM` rather than `ENOENT`
* File access policies made more strict, and are no longer regex-based (https://github.com/DMOJ/judge-server/pull/873)
* Multi-process sandboxing now functional on WSL 2 systems
* Unconditional errno returns are now implemented in seccomp rather than ptrace

Runtimes
* Python: report only builtin exceptions in feedback field
* Rust: fix initialization error in cargo (https://github.com/DMOJ/judge-server/commit/1fb075054ad110097a688be2131f5fd2dc378798)
* Steel Bank Common Lisp: allow thread creation
* Zig: increase compile time limit

Miscellaneous
* Feedback for the `linecount` checker moved into extended feedback
* Interactors are now unbuffered by default
* Miscellaneous other small tweaks and bugfixes

3.0.1

This major release contains a number of features and stability improvements. Upgrading from 2.1.0 is strongly recommended, as the sandbox in 2.1.0 is ineffective for x86 processes running on x64 systems. (In practice, this means the NASM, GAS32, and Turing executors are unsafe.)

The full changelog is available [here](https://github.com/DMOJ/judge-server/compare/v2.1.0...v3.0.1).

Note: release v3.0.0 was skipped due to a packaging error.

Features
* C++20 support
* Java 15 support
* Rewritten judge core: judge now spins off a temporary worker process per submission
* Fixes heap memory "leak" due to glibc arena fragmentation
* Bad custom checkers / interactors now timed out after 60 seconds
* Robust against worker failures
* Rewritten sandbox
* Much more robust ABI detection
* Numerous fixes in error paths

Sandbox
* Fix sandboxing issues with x86-on-x64 when running without seccomp
* Wrap JVM-based executors in cptbox, rather than relying only on security policies
* Patch `int(...)` to avoid DOS attacks in custom checkers
* Allow all syscalls before first `execve` (fixes "failed to set up seccomp policy" errors when seccomp tries to `malloc`)

Runtimes
* Racket: allow `~/.local/share/racket`; 786
* Rust: allow `poll`; 785
* Rust: strip binaries to lower memory overhead
* Go: increase `data_grace`; 756
* Go: use subdirectory for cache; 770
* ASM: time out compilations
* Java: allow single-digit runtime version formatting
* Globally allow `clock_gettime64`
* Globally allow `poll`; 785

Miscellaneous
* Numerous fixes and improvements to bridged checker and interactor support
* Set output length to 0 for siggraded problems
* Signature grade in submitted language, rather than always C++
* Disallow abort when nothing is running; 721
* Kill the judging submission on keyboard interrupt in CLI; 700
* Add persistent command history storage for CLI; 702

2.1.1

This bugfix release is meant to be used with the [DMOJ Judge v2.1.0](https://github.com/DMOJ/judge/releases/tag/v2.1.0) release or newer.

Page 1 of 3

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.