Hydro is an efficient informatics online assessment system. Easy to install, cross-platform, multi-functional, scalable, and has a question bank.
For teachers who are unfamiliar with Linux or too lazy to operate and maintain, we also provide a free, ready-to-use online version.
For details, go to https://hydro.ac to view the operation instructions.
Paste the installation command into the console for one-click installation. After installation, the first user registered will automatically gain super administrator privileges.
Compatible with mainstream Linux distributions, Debian 12 is recommended, and supports arm64 devices (Raspberry Pi, etc.)
LANG=zh . <(curl https://hydro.ac/setup.sh)
Chinese document/English
If the relevant documentation is not detailed enough, please submit a Pull Request or contact the development team for clarification.
Please submit bug and feature suggestions in Issues.
Hydro has designed a modular plug-in system that can easily expand system functionality.
Using the plug-in system, you can still ensure the system's upgradeability after modifying functions.
All historical versions of Hydro can be smoothly upgraded to the latest version.
For plug-in usage and development guidelines, please go to the documentation plug-ins and development chapter.
Hydro supports all mainstream Linux distributions, is compatible with x86_64 and arm64 architecture devices, and can be installed with one click.
Hydro can run normally on Raspberry Pi or Apple M1/M2.
Use hydrooj backup
to back up all system data, and use hydrooj restore 文件名
to import backup data. The entire process requires no manual intervention.
Hydro provides single-system multi-space support, making it easy to create independent spaces for different classes/grades/schools, etc.
Data other than users in different spaces are isolated by default, and independent administrators can be assigned without interfering with each other.
Questions can be copied across domains and only occupy one space in the system.
Hydro's permissions can be assigned to corresponding users based on competitions/jobs, or users can be grouped (classes) and permissions can be assigned by group. For permission nodes, you can view the screenshot below the introduction.
The Hydro system itself is stateless, which means you can add or delete service nodes at will without affecting the normal operation of the system. The evaluation queue will be automatically distributed evenly among all evaluation machines currently online. After joining the elastic scaling group, evaluation machines can be automatically added or deleted according to the server load. Unlike other systems, Hydro will manage the test data cache between different servers and pull it on demand, so that the evaluation machine can be used immediately after it goes online without manual data synchronization.
Hydro supports all question types. Whether it is traditional question types, Special Judge, file input and output, answer submission questions, IO interaction, function interaction, or even fill-in-the-blank questions, Hydro has corresponding support. After installing the relevant operating environment, Hydro can even do:
Call the little turtle to draw a picture and compare it with the standard picture;
Call the GPU to evaluate the machine learning model;
More samples can be viewed and downloaded in the sample area.
Hydro supports importing question bank files in common formats, including Hydro's common zip format, FPS (xml) format questions exported by HUSTOJ, and compressed packages exported by QDUOJ.
You can download the free question bank from Hydro Question Bank.
Hydro also supports VJudge, which means you can directly import questions from other platforms into the system, modify the questions and incorporate them into your own assignments or competitions to quickly build your own question bank system.
Currently supported platforms are:
Yiyi Tong Programming Enlightenment: The official Yiyi Tong Programming Enlightenment Question Bank is free to use. Please refer to the import instructions in the compressed package.
Simple Programming Contest: The official provides the supporting question bank of Luogu's "Programming Contest (Basics)" for free. Please refer to the import instructions in the compressed package.
UOJ: Well-known OJ in China, commonly used by national training teams;
Codeforces: A large foreign competition platform with a large number of high-quality questions;
Luogu: To use this function, you need to purchase a license from Luogu;
HDUOJ: Hangzhou Dianzi University online evaluation system, which includes multi-school training questions;
CSGOJ: Guangdong Provincial Competition and Hunan Provincial Competition question evaluation platform;
SPOJ: Domestic connections are very unstable and not recommended;
POJ: relatively antique, poor server stability;
YACS: Shanghai Computer Society competition platform, there is a limit on daily submissions for a single account;
HUSTOJ: Theoretically supports all HUSTOJ-driven systems, but due to differences in UI in each system, manual adaptation is usually required.
Hydro supports a variety of competition formats, including ACM/ICPC competition format (supports sealing), OI competition format, IOI competition format, Ledo competition format, and homework functions.
Under the IOI and OI competition formats, the question correction function is supported. Students can submit corresponding questions in the question bank after the game, and their scores will be displayed next to the list.
Under the IOI and OI competition formats, the flexible time function is supported, and students can participate in X hours of their own choice within the set time range.
Hydro's language settings are not hard-coded into the system, but rather using configuration files. As long as it can write compilation commands and run commands in the corresponding language, Hydro can judge questions.
Email: [email protected] Telegram @undefinedmoe
Hydro user group: 1085853538
Note: Please read "The Wisdom of Asking Questions" before joining the user group.
At the same time, there may be some content in the group that makes you uncomfortable or offensive. If you have any concerns about this , please do not join the group .
core&ui: ScoreboardView API
onsite-toolkit: Resolver
core: optimize icpc format import
core: add limit.pretest option
core: add task/daily performance log
framework: Remove UiContext and UserContext by default
core: Fix parsing exception when using HTML import in markdown mode
core: Allows copying quoted questions
core&judge: add trusted option
core: fix import user metadata parsing
core: Modify pid verification format
ui: disable autoplay
core: question list performance optimization
core: limit display name length
core: Support adjusting code length limit
core: Turn off online IDE code caching in jobs
core: API: Check PERM_VIEW
judge: Add HYDRO_TIME_USAGE and HYDRO_MEMORY_USAGE environment variables
core&ui: support i18n hot reload
fps-import: Optimize image import
ui: support rounded corner settings
core: supports StorageModel.copy and StorageModel.exists
core: Deprecated ProblemModel.list
core: Add user/import/parse and user/import/create hooks
core: Disable handler, lib, script component types
core: upgrade to ts5.6, cordis3.18
recaptcha: remove
core: Greatly improve daily task performance
core: (partially) supports icpc package format
core: limitRate: supports custom ids
core: Deprecated array format question
core: backup: add --withAddons
option (test)
core: session performance optimization
install: mongodb listens to 127.0.0.1 by default
core&ui: other bug fixes
ui: fix markdown preview
ui: Optimize the login box display when built-in login is disabled
ui: fix view-transitions
onlyoffice: supports processing PDF files
ui: markdown supports displaying code line numbers
ui: support extended richmedia functions
ui: Support embedding Youku videos
ui: Remove redundant horizontal scroll bars from some page components
core: Fix the calculation of the number of votes for problem solutions
ui: Optimize dark mode 404 page pictures
ui: Click to expand compilation information
ui: Fix match scoreboard following users
core: ProblemModel.import: support delSource option
ui: Fix the real-time push of generated test data
prom-client: Report status to the console
core: oauth: support fixed username
utils: supports finding pm2 installed by nix
ui: Optimize the question navigation on the competition page
ui: Deprecated monacoTheme option
ui: markdown editor supports dark mode
framework: Optimize stack traces
core: oplog: record access path
migrate: increase the timeout
vjudge: fix the problem of yacs causing system crash
sonic: supports searching for questions by question ID
core: Fixed an issue where the original group settings would be overwritten if a group was included when importing users.
core: fix score leak
core: Optimize error stack
core: UserModel.getListForRender: supports additional fields
core: ProblemModel.import: merge parameters into import options
ui: enable view-transistions
core: Fix the problem of being able to view hidden questions without permission [security]
ui: Optimize rich text display of submission record details
ui: support avatar caching
ui: prevent text from displaying out of bounds
vjudge: codeforces: Optimize submission ID acquisition
ui: sentry is disabled by default
core: Support hiding the training left user bar
core: cli: support eval
ui: Add experimental speculation rules support
core: Fix training participant count
framework: fix 404 return page
ui: Optimize user permission page layout
vjudge: codeforces: optimize katex display
core: cli: fix script loading order
install: yarn update check is disabled by default
core: add contest/edit and contest/del hooks
ui: Support expanding test point details
core: Fix IOI competition system ban
core: Fix the problem that cache files will not be deleted
core: display progress when importing questions
ui: fix filtering for tags with spaces
a11y: Optimize the output order of web page performance test
ui: use the new markdown editor
core: Optimize scoreboard logic
ui: move cache to IndexedDB
core: transcribe migration as service
ui: Optimize safari browser compatibility
core: fix the question maintainer field
judge: support the use of file IO in pretest
vjudge: codeforces: Add check if submission is successful
ui: add sentry
core&ui: supports displaying the current compiler version
core: database index optimization
core: file copy using soft links
a11y: Add performance testing tools
utils: Support recognizing uppercase file extensions
ui: Optimize drop-down menu style
core: Optimize page title
register: supports reading original sourcemap from file
ui: Fix in-site message push
ui: ranking page added description
ui: Add prompt to generate test data
framework: detached from core
core: loader: supports multi-profile switching
ui: Fix player group display on game scoreboard
core: Automatically recalculate scores when resetting game scores
This version also introduces the following plug-in API modifications:
Removed app/load/${category} hook
Removed ctx.app (please use ctx.root)
Removed ctx.options (please use ctx.root.config)
serializer: remove showDisplayName parameter
Removed loader.addScript, loader.addon functions
Removed Hydro.module.render (please use ctx.server.registerRenderer)
Removed lib/paginate and lib/rank (please use db.paginate and db.ranked)
core: move API module into service
core: If the submission is hacked during the competition, the overall retest will not be triggered.
core: Move the logic of adding pid match into the search
ui: fix cssFilter
judge: builtin: maintain callback order
core: Optimize email address processing
ui: Display the length of the submitted record
migrate: support setting random email addresses only for conflicting users
core&ui: supports automatic sorting of hack input
elastic: Optimize fuzzy search
ui: Fixed the problem of incorrect loading answers for multiple-choice questions in objective questions
core: fix hack button
core: Add question statistics page
core: Display the assessment progress on the record details page
core: problem_list: Allow hooks to modify sorting logic
migrate: add poj support
core: api: supports querying rpInfo and avatarUrl
ui: allow disabling timeago
core: Fix the problem of canceling scores under IOI(strict)
ui: Highlight yourself and following users in the game scoreboard
core: Correct the calculation of AC amount in the competition list
core: disable retest self-test submission
ui: Optimize discussion editing history display
core: Return the current UserContext after logging in/registering
core: Fix PERM_VIEW_DISPLAYNAME check for game scoreboard export
ui: fix the default value of domain_user selection box
ui: Fix objective question loading last answer
core: Automatically disable 2FA when resetting password
core: import: supports importing problem solutions and standard procedures when importing the question package
core: performance optimization and bug fixing
core: Support setting score multiplier for competition questions (#765)
workspace: upgrade ts version to 5.4.3
core: ws: Handling JSON parsing exceptions
core: allow uploading files to jobs (#755)
ui: Display the title label of the contest question on the contest management page
judge: Fixed the issue where objective questions returned abnormal results in some cases (#770)
ui: disable some tags in mdInline
(#767)
core: Add R language and cpp20 support
ui: Display the peak time consumption on the evaluation record page
core: Fix the problem that the competition administrator cannot view the code (#764)
judge: Provide access to hydrojudge terminal
(#725)
core: supports loading plugins from /nix/store
core: add contest/list
hook
judge: vj4 support
ui: Fix testlib selection in test settings panel (#762)
fps-importer: supports setting size limits
core: Add PERM_VIEW_RECORD
permission group (#753)
core: Fixed the issue where game announcements can be viewed without logging in (#756)
ui: Allow using Enter key to submit 2FA (#752)
core: Optimize the list of training participants (#750)
core&ui: other performance optimizations and bug fixes
core: upgrade to cordis@3
core: optimize katex processing
core: add monitor/collect hook
judge: repair analysis
judge: Fixed the problem of incorrect test data synchronization for the first time on the independent evaluation machine
migrate: optimize hustoj import
ui: Fixed the issue of katex incorrect rendering in some areas
core: Optimize the competition results version to filter by group
core: inject -> injectUI
core: fix a memory leak
ui: support /record?nopush=1
judge: fix incorrect test data being cached (#726)
judge: Do not display RuntimeError
details during competition
core: The question file in the competition skips the PERM_VIEW_PROBLEM check
judge: performance optimization (thanks @criyle)
utils: dissociation@hydrooj/register
core: disable test point number check for objective questions
core: Switch sessionId when logging in
core: optimize require hook
core: Fix the problem of user creation failure under high concurrency
prom-client: supports pushing to pushgateway
core&ui: compressed evaluation list page ws transmission
utils: Optimize test point identification
ui: Remove serializer function
core: Add SettingService
fps: support [md]
tag
vjudge: codeforces: add frequency limit
migrate: hustoj: support remote_oj field
core: Other bug fixes
core: fix the problem of abnormal return status code
core: Synchronize ranking page behavior
install: Pascal compiler is no longer pre-installed
judge: handle heartbeat packets
core: judge: optimize task allocation
judge: optimize cache management
core: contest_export_ghost: Export the team name starting with an asterisk when the team does not participate in the rankings
ui: fix monaco paste action
ui: supports batch pasting of users/question numbers
New features:
core&ui&judge: supports generating test data from the web page
vjudge: add yacs support
core: support/record?all=1
core&ui: Hide test point details under ACM competition format
onsite-toolkit: supports login based on IP address
core&ui: Support renaming files on the web page
core&judge: allows multiple tasks to be distributed simultaneously within a single connection
Optimizations and fixes:
core: Optimize file name filtering
utils: Optimize test data matching logic
install: caddy turns on compression by default
ui: complete partial translation
install: uses mongodb6 by default
core: Submit record page performance optimization
judge: update testlib version
core: install: support strip
ui: The minimum supported target for upgrade is chrome65
core: Optimize the number of questions displayed when searching for questions
core: Fixed the issue where submission records with 0 points would not be displayed in the Ledo competition rankings
core: Fix the replacement of file:// in the competition question
core: discussion: Verify vnode input
core: remove default mongo connection options
ui: error page echo name
ui: Fixed the problem of cross-domain WebSocket connection error when not logged in
core: Fix the problem of duplication of pinnedDomains caused by deleting domains
migrate: hustoj: Handle the problem of no source fields in old version system questions
migrate: fix UOJ migration script
ui: fix reactions component
core: check referer
core: fix balloon distribution
Other bug fixes and performance optimizations
core: Fixed the problem of abnormal difficulty setting when creating questions
core: optimize document index
core&ui: competition balloon function
core&ui: clarification
core: fix webauthn
import: add HOJ support
judge: address space limit (beta)
install: supports using environment variables to specify the installation area
ui: fix user does not exist error when logging in
core: fix login redirect
core: fix forgotten password email sending rate limit
core: Fix competition discussion
ui: Fix sub-algorithm label selection on question editing page
utils: fix input1.txt test point recognition
core: Submit list: disable live push when not on first page
judge: optimize exitcode recognition
core: Fix competition question submission page sidebar
fps-importer: fix remote_oj field recognition
ui: Fixed cookie being passed in when using independent socketUrl
vjudge: Update csgoj topic crawling
vjudge: hduoj support
migrate: hustoj: ignore non-existent images when importing
core: oauth: Use OpenID for account association
core: supports searching for users based on their display name
core: supports searching for questions based on their difficulty
ui: Optimize the filtering logic of competition tasks on the homepage
core: Optimize test point identification
ui: disable spell checking for self-test input
ui: Online IDE: Add settings page
core: Add difficulty information when exporting questions
ui: Fixed the problem of markdown tag completion error under certain circumstances
import-qduoj: Check the validity of pid
core: sort job list
ui: fix discussion editor display
core: export pwsh function
vjudge: codeforces: Fix competition 921 crawl exception
core: fix strictioi match scoring
ui: Fix the display of participated training list
core: disable scoreboard before game starts
ui: hide default and guest options when adding users to domain
core: Allow admins to filter all groups
ui: fix language filtering (#598)
ui: fix discussion reaction
vjudge: Fix Codeforces submission result acquisition
core: Optimize system self-test function
vjudge: support detail settings (#582)
ui: disable video autoplay
install: supports automatically importing data from UOJ during installation
ui: Fix the problem of abnormal function of preferredPrefix
core: Fixed the problem that the competition code export function cannot process binary files submitted by players
core: Fix competition management to display user participation ranking status
core&ui: supports filtering competitions/assignments by group
core: Display spj compilation timeout and other detailed information
core&ui: Import questions: support rearranging question numbers
core: loader: add git integration
install: add k3s installation example
core: only use lowercase filenames by default
ui: Ignore memorized answers to objective questions in competition
core: remove langs.domain option
core: Fix the problem that the old mailbox is still occupied after modifying the mailbox
ui: some style fixes
ui: Objective questions: supports remembering the last chosen answer and adding quick question skipping
core: Use $HOME/.hydro to store temporary files
core: import: Check whether the pid is legal when importing
ui: Add validAs related language self-test support
ui: Fix the game progress bar display in flexible time mode
core: Optimize import user identification
ui: remember editor font size
core: supports searching questions by tags
core&ui: Match results table and training support group-based filtering
judge: add parallel priority handling
core: Add operation logs for domain setup operations
core: storage: avoid characters such as -_ when saving files
core: Fixed the problem that filtering Waiting submission on the evaluation record list page does not take effect
ui: Fix the problem of Typescript Language Service working abnormally
ui: Add domain quick navigation switch
core: Add PERM_VIEW_HIDDEN_CONTEST and PERM_VIEW_HIDDEN_HOMEWORK permissions
ui: translation optimization
core: langs: add validAs option
migrate: add UOJ support
core&ui: other bug fixes and optimizations
ui: objective questions: allow multiple lines of answers
core: Fix the problem that pinnedDomains cannot be modified
install: Increase the default limit
ui: Optimize competition pop-up notifications
core: Fix time calculation on competition player management page
core: cli: Generate default question ID when exporting questions
core: dump: supports --dbOnly parameter
core: user import: duplicate information check
ui: change default copyright information
core: supports training based on ranking ranking
ui: template hot reloading
fps-import: supports processing of remote evaluation questions
vjudge: Add VERDICT.WAITING attribute
ui: Optimize automatic identification of test data
vjudge: Add Yitong programming enlightenment support
ui: Add problemset/download
hook
ui: Hide some controls in print mode
core: addon create using symbolic links
ui: The evaluation record page displays the code line number
core: supports importing questions from unzipped question folders
core: add PRIV_UNLIMITED_ACCESS when setJudge
core: Fixed the problem that discussions in the game would not be deleted with the game
vjudge: codeforces: Update login check logic
ui: Display prompts on the question submission page
core: update user cache
core: Forcefully terminate Websocket connections that do not respond to heartbeat packets
core: Set the default tag for imported questions
core: Python2 is disabled by default
core: Support reordering navigation bar
ui: Fixed the issue where the button to enter edit mode does not take effect in some cases
core: add hydrooj patch function
core: Allows you to view your own submissions in the job
core: Other bug fixes
core: fix the scoreboard display problem under strictioi
core: Allow ordinary users to view game discussions
core: automatically create static resource folders at startup
core: allows the use of other UI modules
judge: Fix the problem of file IO question output redirection
core: no longer assign sessionId to Guest user
judge: fix submit answer question
ui: websocket: add heartbeat packet
judge: Fix objective question and file IO question submission
judge: add compile_time_limit option
core: add kotlin and pypy3 presets
ui: scoreboard: support automatic update
core: contest: Allow administrators to view real-time scores after the ranking is closed
judge: supports setting language time and space limit magnification by topic
install: supports automatic import of hustoj data
install: supports specifying the installation source
core: supports automatic installation of plug-ins from npmjs
core&ui: bug fixes
judge: Set the lowest evaluation priority
core: Fixed the issue where the submission list can still be viewed when rankings are closed in some competition formats
core: Optimize discussion authentication
judge: Optimize unified callback evaluation status echo
judge: remove processTestdata
step
judge: objective question task score echo
core: flatten test data structure
core: rp: fix match scores
core&ui: Require a password when using OAuth for the first time
ui: Evaluation settings UI upgrade
install: adjust wtCacheSize according to system memory
ui: loading speed optimization
core: detect domain ID case
ui: Navigation bar field index
ui: Support filtering jobs/competitions by permission groups
judge: Set the Javascript default interpreter to node
judge: Fixed the issue where deleting unfinished questions caused the evaluation queue to become stuck.
core: upgrade to mongodb@5
ui: Display subtask scores in the evaluation details
core: Fixed the problem that the test data file name starts with a space, causing abnormal operation
dev: upgrade devcontainer environment
ui: Optimize IDE page layout
ui: Use cordis for life cycle management (remove old bus)
blog: Move functionality to standalone @hydrooj/blog
plugin
core: supports dynamic settings
judge: performance mode (turn off single point callback)
ui: Support setting maintainers for jobs
core: Release the answer question to the submission language whitelist
import-qduoj: Fixed the issue where empty tags caused the import to fail.
ui: Simplify serviceworker logic
ui: Fixed the problem of failure to join the training plan
core: Simplify user return field list
core&ui: contest.rule.ioi.strict
Other bug fixes and experience optimization
core: fix no input self-test
core: Fix the problem of invalid token caused by inconsistent domain name of endpointForUser
core: remove isBinaryFile check
core: fix allowViewCode setting
core: cli: prefer mongosh
workspace: Provide @hydrooj/eslint-config
package
Other bug fixes and experience optimization
core: fix submit answer question
ui: fix job page editing and deletion operations
vjudge: Adapt codeforces new interface
core: filter empty $set
operations
ui: domain_dashboard page shows domain creator
judge: fix hack
core: Check if the selected language exists when submitting
core: supports detection of problems that cause startup to freeze.
core: Fix the issue where rating information cannot be written under certain circumstances
core: Add more validator field type support, remove the old version of validator
core&ui: supports CORS
ui: supports lazy loading of modules
ui: fix email login
ui: Fixed the problem of abnormal display of in-site messages
vjudge: luogu: fix login
judge: Fixed an issue where some objective questions were left unanswered, resulting in evaluation errors.
core: ConnectionHandler
supports @subscribe(event)
util: Fix the problem of abnormal formatting of Message.sendNotification
core: database optimization
core: Verify user avatar
judge: Remove onDestory hook and use disposables instead
ui: optimize resource loading
core&ui: add webauthn support
ui: Fix problem solution voting
ui: Optimize the layout of the competition details page
ui: Fix the review record link in quick search
core: Add Types.ArrayOf()
support
ui: fix sidebar preview save
core: Add CookieDomain setting
ui: Fixed the issue of infinite page refresh in dev mode
vjudge: Provides BasicFetcher component
core: DomainModel cache
core&ui: other bug fixes
core: Add Ledosai support
vjudge: Remove puppeteer related dependencies
judge: Fixed the issue where the evaluation results were not returned when the answer was not set for objective questions.
ui: Remove the search module on the right side of the homepage by default
ui: Add in-site avatar upload module
core: Allow match creators to view hidden scoreboards
core: Discussion changed to sort by creation time
ui: Fix problem solution voting echo
core: Fix the problem of password retrieval link synthesis error
judge: Fixed the problem that the file IO question compilation output limit is too small
core: Fixed the issue where %
as a keyword would cause an error in question search
core: Fixed the problem that the submission record module is not displayed under the competition question list
ui: Fixed the issue where some emoticon preset IDs in the discussion forum did not match the actual images.
install: Set vm.swappiness=1 by default to improve performance
ui: Allow ordinary users to browse evaluation records page by page when query conditions are set.
ui: Add a cancel score button to the submit record list
core: Fix the problem that access logs cannot be recorded under certain circumstances
workspace: supports pnpm
workspace: remove mocha
core: supports filtering using handler/before/Name#method
judge: performance optimization
ui: The page no longer refreshes when clicking retest in the evaluation record list
ui: Support global quick search
core: problem_list: supports limit parameter
core: Streamline the default discussion node list
core: validator: Double Chinese characters are also considered legal usernames
judge: objective: supports multiple answer questions
core: problemStat: Ignore submissions with canceled grades
ui: Fixed discussion editing Ctrl+Enter shortcut key
ui: Fixed locking discussion topic function
core: Optimize job authentication settings
core: Fixed list ban function
ui: contest: allows manual management of contestants
ui: contest: supports broadcast message reminder during competition
ui: other bug fixes and performance optimizations
fps: Fixed the problem that the import failed due to empty files in the questions.
core: Support additional reasons when banning users
vjudge: codeforces: skip inaccessible 1769 and 1772 matches
ui: Favorite question operation no longer triggers page refresh
core: Check the validity of the question configuration file when retesting
core: automatically clean up temporary files when exiting
core: forbidden to use. as file name
import-qduoj: skip illegal questions
core: Fix the export of competition code for submitting answer questions
judge: add stdioLimit item
ui: fix message.FLAG_ALERT display
core: training can upload files
ui: Optimize competition navigation bar
ui: Match results table supports following teams
core: allows cloning of competitions/jobs
ui: Add function entrance to the competition editing page
core: support star competition
core: Skip the submission of canceled scores when retesting the entire question
core: Fix the function of searching questions based on ID in the competition
judge: Fix the problem of abnormal display of testlib error message
sandbox: increase default stdio limit
core: Fix the problem of exception in discussion history
core: Optimize the running speed of daily tasks
core: The user details page supports displaying the competitions/assignments that the user has recently participated in.
judge: Add Bash to default language list
vjudge: skip loading in cli mode
lsp: Fixed the automatic completion prompt, which may need to be manually updated to take effect.
judge: optimize diff output
install: By default, mongodb uri is used as the database connection method
ui: fallback to the default background when the user background fails to load
File paths are changed to be case sensitive.
The front-end plug-in supports using import { ... } from '@hydrooj/ui-default'
to introduce built-in libraries.
ctx.inject('Notification')
supports inserting multiple lines of text.
core: Optimized the performance of the game scoreboard page
core: Support specifying the group and school to which the user belongs when importing users
core&ui: other bug fixes and performance optimizations
Added UserModel.getListForRender(domainId, uids)
method.
Add IHandler.response.pjax
property.
core: Removed Problem.assign
core: Fixed the issue where the code could not be viewed if the question was still hidden after the competition.
ui: Fixed the display of footer on IE browser
judge: Fixed the problem of lemon checker exiting abnormally, causing the question score to be 0
ui: Optimize Firefox compatibility warning on the management side
ui: Optimize the display of fps questions after importing them
ui: Fix the problem of IE browser display language recognition
install: Detect the installed Pagoda environment and throw an incompatibility warning
ui: Optimize some error prompts
migrate: performance optimization
vjudge: Fix Codeforces submission record crawling exception problem
ProblemModel.getList()
removes the group parameter and moves subsequent parameters forward
cordis
upgraded to 2.6
Fixed an issue where the review details page would not update immediately under certain circumstances
Return testlib spj errors to the user side
Fixed the problem that the question file could not be previewed from the administrator side
Ending support for NodeJS <14
ui: api: Updated API Workbench
judge: Remove r from environment variables and add Python Packages description
ui: Modified some recommended links
prom-client: Record EventEmitter information
core: contest: Support exporting contest information to Ghost format
core: contest: Optimize the calculation of submissions and passes in the competition
core: contest: Display Pending submission when closing list
judge: Fixed the issue where the objective questions were not set with answers, causing the evaluation to be skipped.
core: Optimize CsrfTokenError and DomainNotFoundError echo
core: server: catching WebSocket errors
core: validator: Fix the problem of sending empty site messages
Other bug fixes and performance optimizations
In the question details page, Scratchpad.store is publicly accessible from Window
Caddy is automatically installed during installation and configures the reverse proxy to listen on port 80.
Supports using hydrooj install <src>
and hydrooj uninstall <name>
to quickly manage plug-ins.
Added auto-completion for language selection in Manage Domain->Edit Domain Profile.
Support viewing your submitted code under the OI competition format.
import-qduoj: Supports importing SPJ questions.
fps-importer: Adapt to FPS file version 1.4.
Other bug fixes and experience optimization.
Supports using ctx.i18n.load(lang, Record<string, string>)
to load translation files.
Support ctx.withHandlerClass(name, callback)
to obtain class prototype.
prom-client: supports custom ConnectionHandler reporting classification.
Move Handler.ctx to Handler.context, and the new Handler.ctx is PluginContext.
The content under framework/examples/install/ in this project is licensed under the MIT license and you can use it freely.
The content under packages/ui-default/ in this project is only authorized with AGPL-3.0.
The rest of the project uses dual licensing:
You can use this code for free, subject to the AGPL-3.0 license and the following additional terms section:
If you really need closed source, you can also contact us to purchase other licenses.
Based on Article 7 of the AGPL3 agreement, you need to comply with the following additional terms when using this project:
Do not remove the copyright notice and author/source attribution of this item; (AGPL3 7(b))
When redistributing modified versions of this software, it needs to be clearly indicated in the software name or version number; (AGPL3 7(c))
The author's name may not be used for publicity purposes except with permission; (AGPL3 7(d))
Right now:
When you deploy Hydro, you need to keep the words Powered by Hydro
at the bottom, and the word Hydro
needs to point to a link to one of hydro.js.org/本仓库/fork
.
If you make modifications/extensions to the source code, it also needs to be open sourced under AGPL-3.0-or-later. You can indicate it in the footer in the format of Powered by Hydro, Modified by xxx
.
Refer to CONTRIBUTING.md
Ranking in no particular order, in dictionary order of links
Github provides code hosting and automated builds for Hydro.
criyle provides a review sandbox implementation.
Vijos provides the UI framework for Hydro.
Yun Dou Academy