- Added custom input tests to test programs.
- Fixed Chinese page title of submission and standing pages.
- Fixed length limit of base64 encoded program code.
- Fixed counting custom tests into problem statistics.
- Added exam mode where only one contest is accessible.
- Added support for Github Actions and binary releases.
- Changed display language to Simplified Chinese.
- Python3 are now judged with Pylint and pre-compile.
- Use
docker-compose up --scale
to create multiple workers easily. - Worker's Box IDs are now determined by unique IP addresses of workers.
- Job requests are now dispatched to RebbitMQ in a background queue.
- Fixed handling negative interval in cron job background service.
- Fixed using undefined values in client submission service.
- Added lab problems which accepts archive submission and custom judging.
- Added feature to download viewable submissions as file or zip archive.
- Changed file naming rules when exporting submissions.
- Refactored major implementations of runners.
- Submissions before contest will not appear in statistics.
- Submission manager can view all submissions before contest begins.
- Use tencent nuget mirror when building env container.
- Some required fields of lab problems are now filled in client.
- Lab problem judging will stop on failure of compile steps and stages.
- Showing units of time, memory and code length on submission list and timeline.
- Submit token will not be invalidated after consuming.
- If submission failed on samples, a score of 0 will not be shown.
- Fixed wrong predicate when exporting accepted submissions.
- Fixed no compiler output for C# Roslyn compiler.
- Fixed substring handling and checker compiling in worker.
- Fixed editing testkit lab problems in client.
- Fixed not opening manifest.json in read only mode.
- Fixed problem statistics not invalidated after updating related data.
- Fixed copying .git folder when it does not exist for lab problems.
This version contains breaking changes.
- Data folder structure has been changed. All judge data now goes to
${DATA}/tests
.
- Added plagiarism detection.
- Added score bonus and decay for contests.
- Added problem and queue statistics information.
- Added user import for admin use.
- Submission queue is now reimplemented with RabbitMQ.
- Submission will become viewable after solving the problem.
- Authentication page is updated for a consistent style.
- Contest standings page is redesigned.
- Submission detail page is redesigned.
- Deleting account by user is removed for security reasons.
- Fixed problems may be caused by long error message from compiler.
- Fixed null reference errors in angular app.
- Fixed admin button showing up in non-admin users' menus.
- Fixed wrong contest mode description in contest management page.
- Added CI config for Drone.
- Can now export submissions of a problem.
- Upgrade framework and runtime to dotnet 5.0.
- Submissions made by admin before contest is now hidden from public.
- Fixed incorrect pagination when making the 6th submission.
- Fixed handling interrupted judging results by triggering a rejudge.
- Redesign user experience with Bootstrap.
- Add support for Ajax.org Cloud9 Editor for coding.
- Add support for Vditor for Markdown editing.
- All times in client are calculated and shifted to server time.
- Contest and problems are only fetched once using shareReplay.
- WebApp version is now displayed in footer of pages.
- Administrators and contest managers can submit to any problems before contest begins.
- Move submission verdict component to be a dedicated component and module.
- Increased output size limit to the larger one of either double of standard output or 10MiB.
- Privileged users can now enter contest by buttons and links before the contest has begun.
- Redesigned buttons to toggle code editor in problem description pages.
- Current contest is now ordered by end time instead of begin time.
- Updated background highlight style of bold text in all pages.
- Fixed subscribing on user subject in destroyed component instances.
- Fixed value changed after check error in code editor.
- Fixed setting fullscreen query parameter in problem view page.
- Fixed null reference in submission timeline component.
- Fixed a performance issue caused by repeatedly force resizing code editor.
- Fixed replaceUrl set to false when updating a contest in admin page.
- Fixed overwrite flag when copying a new compiled checker to judge data folder.
- Fixed high CPU usage caused by redrawing progress bar too frequently.
- Dropped Ant Design support.
- Allow contest manager to create submission without registering.
- Add button to export standings page to an Excel workbook.
- If the program is killed by signal 11, will show SIGSEGV in message.
- Special judge checker will be cached after compiling until problem is updated.
- Non-participate users will not have rank in standings page.
- Update ranking calculation logic to allow same ranking of participants.
- Disabled ASP.NET HTTPS redirection, which shall be handled by Caddy.
- Set cookie policy to SameSiteMode.Lax for non-HTTPS support.
- Use ngx-clipboard for copying test input/output data to clipboard.
- Users can now login with usernames instead of emails.
- Limit width of sample case data in problem pages.
- Swap is now disabled in worker containers to allow precise memory control.
- Fixed parameter name in handling deleting registrations.
- Fixed non-zero seconds and milliseconds of timestamps in submitted form data.
- Fixed updating a non-accepted verdict of submissions in worker.
- Fixed rebuilding statistics after copying registrations.
- Fixed not expiring cookie when logging out caused by
SameSite=None
in non-secure environment. - Fixed output file size limit to 2x of standard output.
- Fixed an error in admin problem form where C++ language is not found in list.
- Fixed failure percentage not showing for Memory Limit Exceeded verdict.
- Fixed handling error when copying checker in read-only file systems.
- Fixed wrong pagination link in registration management table.
- Fixed wrong throttling of submission creation API.
- Add problem statistics to problem detail page.
- Add reload button to problem detail, submissions and standings pages.
- Show contestant ID in tooltip on contest standings page.
- Set images to be horizontally centered and add width limit.
- Rename project to dotOJ (AKA. .OJ, NTOJ, OJ Core, etc.).
- When API request failed with 401 Unauthorized, redirect user to login page.
- When the user is unauthorized, return 401 error instead of 302 to login page.
- When viewing submission detail, contestant ID is displayed instead of nickname.
- Fixed multipart body size limit of uploading test cases and archives.
- Fixed multiple worker conflict caused by not setting isolated box ID.
- Fixed security issue where user can take a long contestant ID or name.
- Fixed concurrency bug in standings page caused by using contest before loaded.
- Fixed security issue of problem limits caused by DB caching in workers.
- Fixed error of using a disposed ServiceScope in workers.
- Fixed limitation of log files and size of Docker containers.
- Fixed pagination of table on submission list page.
- Fixed date input of updating data and null reference error when deleting submissions.
- Fixed wrong byte length of Base64 encoded source code calculated by server.
- Custom judging service using
isolate
in worker. - Added C/C++, Java, Python, Golang, Rust, C# and Haskell runners.
- Check program output line by line ignoring trailing spaces.
- Limit RO access to outer box when running contestant programs.
- Added quick links for administrator to edit contest or problem.
- Added progress bar and end of contest prompt in contest pages.
- Added help page to show judging specs and available languages.
- Pending submissions in submission list page will be updated automatically.
- Users can only view submissions of others after contest ends.
- Dropped Judge0 API in worker and docker containers.
- Add support for importing/exporting problem as a zip archive.
- A tooltip will appear when clicking on copy icon of sample data.
- Use a local modified version of markdown component.
- Updated KaTeX rendering option and blockquote stylesheet.
- Changed upload request size limit from default to 300MiB.
- Fixed form data handling logic that could prevent updating problem.
- Fixed listing test cases using a list in
nz-table
. - Fixed wrong queuing status of submissions caused by DB caching.
- Fixed extracting test cases when importing a problem archive.
- Show submission time, memory and message in detail drawer.
- Use a monospace font (Ubuntu Mono) in source code displaying.
- Fixed file permissions in special judge file archive.
- Fixed handling empty output and message (null string) of runs.
- Fixed special judge logic when the original run fails.
- Fixed UTF8 character displaying in Base64 encoded strings.
- Special judge and contest modes support.
- View submission detail, judge worker name and timestamp.
- Add bulletin model/service and show bulletins on homepage.
- Add user account manage pages and admin reset password page.
- Rewrite judge worker classes to make them pluggable and configurable.
- Update UX design for navigation bar, submission creator and admin pages.
- Fixed submission timeline updating logic and verdict display.
- Fixed using UTC timestamp in creating and modifying contests.
- Fixed hunger in submission triggers caused by wrong picking logic.
- Fixed an issue that forbids submitting code in textarea.
- Fixed RO permission when worker opens file in judge-data folder.
- Fixed incorrect integer conversion in backend interaction of worker.
- Fixed empty sequence error when calculating score for problem.
- Judging services now run as workers.
- Add Docker release script and CI config.
- Rewrite judging logic: one test case at a time.
- Reconstruct project folders: use one solution with multiple projects.
Data
andNotification
now is built as standalone libraries.- Update Dockerize files and app configuration format.
- Remove DB models and DbSets that are not used.
- Remove Hangfire and SQL server dependencies.
- Improved judging service stability and consistency.
- Fixed concurrency bug by triggering a rejudge on a running submission.