Hydro 是一個高效能資訊學線上評測系統。易於安裝,跨平台,多功能,可擴展,有題庫。
對於不熟悉Linux 或是懶得維運的老師,我們也提供了免費開通即用的線上版本,
詳情前往https://hydro.ac 查看操作指引
將安裝指令貼到控制台一鍵安裝,安裝後註冊首個使用者自動取得超級管理員權限。
相容主流Linux 發行版,建議使用Debian 12,支援arm64 裝置(樹莓派等)
LANG=zh . <(curl https://hydro.ac/setup.sh)
中文文檔/ English
相關文件若說明的不夠詳細,請提交Pull Request 或聯絡開發組說明。
bug 和功能建議請在Issues 提出。
Hydro 設計了一套模組化的插件系統,可以輕鬆擴展系統功能。
使用插件系統,可以在修改功能後,仍保證系統的可升級性。
Hydro 的所有歷史版本均可平滑升級至最新版本。
外掛程式使用和開發指南,請前往文件外掛程式和開發章節。
Hydro 支援所有主流的Linux 發行版,相容於x86_64 和arm64 架構設備,且皆可一鍵安裝。
Hydro 可在樹莓派或Apple M1/M2 上正常運作。
使用hydrooj backup
即可備份系統全部數據,使用hydrooj restore 文件名
即可匯入備份資料。 整個過程無需手工幹預。
Hydro 提供了單一系統多空間支持,可以方便地為不同的班級/年級/院校等創建獨立的空間。
不同空間內除用戶外資料預設隔離,且可分配獨立管理員,互不干擾。
題目可跨域複製,系統內僅佔用一份空間。
Hydro 的權限可以按比賽/作業分配給對應的用戶,也可以將用戶分組(班級),並按群組分配權限。 有關權限節點,可以查看介紹下方截圖。
Hydro 系統本身是無狀態的,這意味著你可以隨意增刪服務節點,而不會影響系統的正常運作。 評測隊列會自動在目前線上的所有評測機間均衡分配。接取彈性伸縮組後,可依伺服器負載情況自動增刪評測機。 不像其他系統,Hydro 會管理不同伺服器間的測試資料緩存,按需拉取,做到評測機上線即用,無需手動同步資料。
Hydro 支援所有題型。無論是傳統題型,Special Judge,還是文件輸入輸出,提交答案題,IO 交互,函數交互,乃至選擇填空題等, Hydro 都有相應的支持。安裝相關運作環境後,Hydro 甚至可以做到:
呼叫小海龜畫圖,與標準圖片比對;
呼叫GPU 進行機器學習模型的評測;
更多的範例可前往範例區查看並下載。
Hydro 支援匯入常見格式的題庫文件,包括Hydro 通用的zip 格式,HUSTOJ 匯出的FPS (xml) 格式題目,QDUOJ 匯出的壓縮套件。
可以在Hydro 題庫下載免費題庫使用。
Hydro 同時支援VJudge,這意味著你可以直接在系統內導入其他平台的題目,修改題面後編入自己的作業或比賽,快速搭建自己的題庫體系。
目前支援的平台有:
一本通程式啟蒙:官方提供一本通程式啟蒙題庫,免費使用,參考壓縮包內導入說明。
深入淺出程式設計競賽:官方提供洛谷《深入淺出程式設計競賽(基礎篇)》配套題庫,免費使用,參考壓縮包內導入說明。
UOJ:國內知名OJ,國家集訓隊常用;
Codeforces:國外大型競賽平台,大量高品質題目;
洛谷:使用此功能需要向洛谷購買授權;
HDUOJ:杭州電子科技大學線上評測系統,包含多校訓練問題;
CSGOJ:廣東省賽與湖南省賽題評測平台;
SPOJ:國內連線很不穩定,不建議;
POJ:較為古董,伺服器穩定性差;
YACS:上海市電腦學會競賽平台,單帳號每日提交有限制;
HUSTOJ:理論上支援所有HUSTOJ 驅動的系統,但由於各系統中UI 有差異,通常需要手動適應。
Hydro 支援多種賽制,包括ACM/ICPC 賽制(支援封榜),OI 賽制,IOI 賽制,樂多賽制,以及作業功能。
在IOI 和OI 賽制下,支援訂正題目功能,學生在賽後可以在題庫中提交對應題目,其分數會在榜單旁邊顯示。
在IOI 和OI 賽制下,支援彈性時間功能,學生可以在設定的時間範圍內,自選X 小時參賽。
Hydro 的語言設定並非硬編碼於系統中,而是使用了設定檔。 只要能寫出對應語言的編譯指令和執行指令,Hydro 都可以進行判題。
Email:[email protected] Telegram @undefinedmoe
Hydro 用戶群:1085853538
註:加入用戶群請先閱讀《提問的智慧》。
同時群內可能存在部分令您感到不適或感到冒犯的內容。若對此有顧慮請勿加群。
core&ui: ScoreboardView API
onsite-toolkit: Resolver
core: 優化icpc 格式導入
core: 新增limit.pretest 選項
core: 新增task/daily 效能日誌
framework: 預設移除UiContext 和UserContext
core: 修正markdown 模式下使用HTML 導入時解析異常
core: 允許複製引用的題目
core&judge: 新增trusted 選項
core: 修復導入使用者metadata 解析
core: 修改pid 校驗格式
ui: 停用自動播放
core: 題目列表效能最佳化
core: 限制顯示名長度
core: 支援調整程式碼長度限制
core: 在作業中關閉線上IDE 程式碼快取
core: API: 檢查PERM_VIEW
judge: 新增HYDRO_TIME_USAGE 和HYDRO_MEMORY_USAGE 環境變量
core&ui: 支援i18n 熱重載
fps-import: 最佳化圖片導入
ui: 支援圓角設置
core: 支援StorageModel.copy 和StorageModel.exists
core: 棄用ProblemModel.list
core: 新增user/import/parse 和user/import/create 鉤子
core: 停用handler, lib, script 元件類型
core: 升級到ts5.6, cordis3.18
recaptcha: 移除
core: 大幅提升每日任務效能
core: (部分)支援icpc package format
core: limitRate: 支援自訂id
core: 棄用array 格式題面
core: backup: 新增--withAddons
選項(測試)
core: session 效能優化
install: mongodb 預設監聽127.0.0.1
core&ui: 其他錯誤修復
ui: 修復markdown 預覽
ui: 最佳化停用內建登入時的登入框顯示
ui: 修復view-transitions
onlyoffice: 支援處理PDF 文件
ui: markdown 支援顯示程式碼行號
ui: 支援擴充richmedia 功能
ui: 支援嵌入優酷視頻
ui: 移除部分頁數元件多餘的橫向捲軸
core: 修復題解投票數量計算
ui: 最佳化暗色模式404 頁圖片
ui: 點擊展開編譯訊息
ui: 修復比賽計分板關注用戶
core: ProblemModel.import: 支援delSource 選項
ui: 修復產生測試資料即時推播
prom-client: 回報狀態至控制台
core: oauth: 支援固定用戶名
utils: 支援尋找nix 安裝的pm2
ui: 優化比賽頁題目導航
ui: 棄用monacoTheme 選項
ui: markdown 編輯器支援暗色模式
framework: 優化堆疊追蹤
core: oplog: 記錄存取路徑
migrate: 加長超時時間
vjudge: 修復yacs 導致系統崩潰的問題
sonic: 支援按題目ID 搜尋題目
core: 修正導入使用者時若含小組會覆蓋原有小組設定的問題
core: 修復分數洩露
core: 最佳化錯誤堆疊
core: UserModel.getListForRender: 支援額外字段
core: ProblemModel.import: 合併參數為導入選項
ui: 啟用view-transistions
core: 修正能夠越權查看隱藏題目的問題[security]
ui: 優化提交記錄詳情豐富文本展示
ui: 支援頭像緩存
ui: 禁止文字越界顯示
vjudge: codeforces: 優化提交ID 獲取
ui: 預設禁用sentry
core: 支援隱藏訓練左側使用者欄
core: cli: 支援eval
ui: 新增實驗性speculation rules 支持
core: 修復訓練參加人數計數
framework: 修復404 返回頁
ui: 優化使用者權限頁面佈局
vjudge: codeforces: 最佳化katex 顯示
core: cli: 修復script 載入順序
install: 預設禁用yarn 更新檢查
core: 新增contest/edit 和contest/del 鉤子
ui: 支援展開測試點詳情
core: 修復IOI 賽制封榜
core: 修復快取檔案不會刪除的問題
core: 導入題目時顯示進度
ui: 修復含空格標籤的篩選
a11y: 最佳化網頁測效能測試輸出順序
ui: 使用新markdown 編輯器
core: 最佳化計分板邏輯
ui: 將快取移至IndexedDB
core: 轉寫migration 為服務
ui: 最佳化safari 瀏覽器相容
core: 修復題目maintainer 字段
judge: 支援pretest 中使用檔案IO
vjudge: codeforces: 新增檢查是否提交成功
ui: 新增sentry
core&ui: 支援顯示目前編譯器版本
core: 資料庫索引優化
core: 檔案複製使用軟鏈接
a11y: 新增效能測試工具
utils: 支援識別大寫檔案副檔名
ui: 最佳化下拉式選單樣式
core: 優化頁面標題
register: 支援從檔案讀取原始sourcemap
ui: 修復站內訊息推播
ui: ranking 頁面新增說明
ui: 新增產生測試資料提示
framework: 從core 解離
core: loader: 支援多profile 切換
ui: 修復比賽計分板選手組顯示
core: 重設比賽分數時自動重算分數
本版本同時引入下述插件API 修改:
移除了app/load/${category} 鉤子
移除了ctx.app (請使用ctx.root)
移除了ctx.options (請使用ctx.root.config)
serializer: 移除showDisplayName 參數
移除了loader.addScript, loader.addon 函數
移除了Hydro.module.render (請使用ctx.server.registerRenderer)
移除了lib/paginate 和lib/rank (請使用db.paginate 和db.ranked)
core: 將API 模組移入service
core: 比賽時提交被hack 不觸發整體重測
core: 將新增pid match 的邏輯移入搜尋中
ui: 修正cssFilter
judge: builtin: 維護callback 順序
core: 優化郵件地址處理
ui: 顯示提交記錄長度
migrate: 支援僅為衝突使用者設定隨機郵件地址
core&ui: 支援自動整理hack 輸入
elastic: 優化模糊搜索
ui: 修正客觀題中多選題載入答案出錯的問題
core: 修復hack 按鈕
core: 新增題目統計頁
core: 在記錄詳情頁顯示評估進度
core: problem_list: 允許hook 修改排序邏輯
migrate: 新增poj 支持
core: api: 支援查詢rpInfo 與avatarUrl
ui: 允許禁用timeago
core: 修復IOI(strict) 下取消成績
ui: 比賽計分板中高亮自己與關注的用戶
core: 修正比賽榜單AC 量計算
core: 禁止重測自測提交
ui: 最佳化討論編輯歷史顯示
core: 登入/註冊後返回目前的UserContext
core: 修復比賽計分板匯出的PERM_VIEW_DISPLAYNAME 檢查
ui: 修正domain_user 選擇框的預設值
ui: 修復客觀題載入上次答案
core: 重設密碼時自動停用2FA
core: import: 題目包導入時支援導入題解與標程
core: 效能優化和漏洞修復
core: 支援為比賽題目設定分數倍率(#765)
workspace: 升級ts 版本至5.4.3
core: ws: 處理JSON 解析異常
core: 允許上傳文件至作業(#755)
ui: 在比賽管理頁顯示賽題的題目標簽
judge: 修正部分情況下客觀題回傳結果異常的問題(#770)
ui: 在mdInline
中停用部分標籤(#767)
core: 添加R 語言和cpp20 支持
ui: 在評測記錄頁顯示峰值耗時
core: 修正比賽管理員無法查看程式碼的問題(#764)
judge: 提供hydrojudge terminal
入口(#725)
core: 支援從/nix/store
載入插件
core: 新增contest/list
鉤子
judge: vj4 支持
ui: 修正評測設定面板testlib 選擇(#762)
fps-importer: 支援設定大小限制
core: 新增PERM_VIEW_RECORD
權限組(#753)
core: 修正未登入可以查看比賽公告的問題(#756)
ui: 允許使用Enter 鍵提交2FA (#752)
core: 優化訓練參與成員清單(#750)
core&ui: 其他效能最佳化和漏洞修復
core: 升級至cordis@3
core: 優化katex 處理
core: 新增monitor/collect 鉤子
judge: 修復analysis
judge: 修復獨立評測機首次同步測試資料錯誤的問題
migrate: 最佳化hustoj 導入
ui: 修復部分區域katex 錯誤渲染的問題
core: 優化比賽成績版依照小組篩選
core: inject -> injectUI
core: 修復記憶體洩漏
ui: 支援/record?nopush=1
judge: 修復錯誤的測試資料被快取的問題(#726)
judge: 比賽時不顯示RuntimeError
詳情
core: 比賽中題目檔跳過PERM_VIEW_PROBLEM 檢查
judge: 效能最佳化(thanks @criyle)
utils: 解離@hydrooj/register
core: 對客觀題禁用測試點數量檢查
core: 登入時切換sessionId
core: 優化require hook
core: 修復高並發下使用者建立失敗問題
prom-client: 支援推送至pushgateway
core&ui: 壓縮評測清單頁ws 傳輸
utils: 最佳化測試點識別
ui: 移除serializer 函數
core: 新增SettingService
fps: 支援[md]
標籤
vjudge: codeforces: 新增頻率限制
migrate: hustoj: 支援remote_oj 字段
core: 其他漏洞修復
core: 修復傳回狀態碼異常的問題
core: 同步排名頁行為
install: 不再預先安裝pascal 編譯器
judge: 處理心跳包
core: judge: 優化任務分配
judge: 最佳化快取管理
core: contest_export_ghost: 當隊伍不參與排名時導出星號開頭的隊伍名
ui: 修復monaco 貼上動作
ui: 支援批次貼上使用者/題號
新功能:
core&ui&judge: 支援從網頁端產生測試數據
vjudge: 新增yacs 支持
core: 支援/record?all=1
core&ui: 在ACM 賽制下隱藏測試點詳情
onsite-toolkit: 支援基於IP位址登入
core&ui: 支援在網頁端重命名文件
core&judge: 允許在單一連線中同時分發多個任務
優化與修復:
core: 優化檔名過濾
utils: 最佳化測試資料匹配邏輯
install: caddy 預設開啟壓縮
ui: 補全部分翻譯
install: 預設使用mongodb6
core: 提交記錄頁效能優化
judge: 更新testlib 版本
core: install: 支援strip
ui: 升級最低支援目標為chrome65
core: 最佳化搜尋題目時顯示的題目數量
core: 修復0 分提交記錄不會顯示在樂多賽排行榜的問題
core: 修正比賽題面中file:// 替換
core: discussion: 校驗vnode 輸入
core: 移除預設mongo connection options
ui: 錯誤頁回顯名稱
ui: 修正未登入時跨網域WebSocket 連線出錯的問題
core: 修正刪除域導致pinnedDomains 重複的問題
migrate: hustoj: 處理舊版系統題目無來源欄位的問題
migrate: 修復UOJ 遷移腳本
ui: 修復reactions 組件
core: 校驗referer
core: 修復氣球發放
其他漏洞修復與效能優化
core: 修復建立題目設定難度異常的問題
core: 優化document 索引
core&ui: 比賽氣球功能
core&ui: clarification
core: 修復webauthn
import: add HOJ support
judge: address space limit (beta)
install: 支援使用環境變數指定安裝區域
ui: 修復登入時使用者不存在錯誤
core: 修復登入重定向
core: 修復忘記密碼郵件發送速率限制
core: 修復比賽討論
ui: 修正題目編輯頁子演算法標籤選擇
utils: 修正input1.txt 測試點識別
core: 提交清單:不在第一頁時停用即時推送
judge: 優化exitcode 識別
core: 修復比賽主題提交頁邊欄
fps-importer: 修復remote_oj 欄位識別
ui: 修正使用獨立socketUrl 時cookie 傳入
vjudge: 更新csgoj 題面爬取
vjudge: hduoj 支持
migrate: hustoj: 匯入時忽略不存在的圖片
core: oauth: 使用OpenID 進行帳號關聯
core: 支援根據顯示名搜尋用戶
core: 支援根據題目難度搜尋題目
ui: 最佳化首頁比賽作業過濾邏輯
core: 最佳化測試點識別
ui: 停用自測輸入的拼字檢查
ui: 線上IDE:新增設定頁面
core: 匯出題目時加入難度訊息
ui: 修正特定情況下markdown 標籤補全出錯的問題
import-qduoj: 檢查pid 合法性
core: 排序作業列表
ui: 修復討論編輯顯示
core: 匯出pwsh 函數
vjudge: codeforces: 修復比賽921 爬取異常
core: 修復strictioi 比賽計分
ui: 修復已參加訓練清單顯示
core: 在比賽開始前停用計分板
ui: 在新增使用者到網域的時候隱藏default 和guest 選項
core: 允許管理員篩選所有小組
ui: 修復語言過濾(#598)
ui: 修復討論reaction
vjudge: 修復Codeforces 提交結果獲取
core: 最佳化系統自我檢測功能
vjudge: 支援detail 設定(#582)
ui: 停用影片自動播放
install: 支援安裝時自動從UOJ 匯入數據
ui: 修復preferredPrefix 功能異常的問題
core: 修正比賽程式碼匯出功能無法處理選手提交的二進位檔案的問題
core: 修正比賽管理顯示使用者參與排名狀態
core&ui: 支援依小組篩選比賽/作業
core: 顯示spj 編譯逾時等詳情信息
core&ui: 導入題目:支援重新整理題號
core: loader: 新增git 集成
install: 新增k3s 安裝範例
core: 預設僅使用小寫檔名
ui: 在比賽中忽略記住的客觀題答案
core: 移除langs.domain 選項
core: 修正修改信箱後舊信箱仍被佔用的問題
ui: 部分樣式修復
ui: 客觀題:支持記住上次選擇的答案並添加快速跳題
core: 使用$HOME/.hydro 儲存臨時文件
core: import: 導入時檢查pid 是否合法
ui: 新增validAs 相關語言自測支持
ui: 修復彈性時間模式下比賽進度條顯示
core: 優化導入使用者識別
ui: 記住編輯器字體大小
core: 支援按標籤搜尋題目
core&ui: 比賽成績表和訓練支援基於群組過濾
judge: 新增並行優先權處理
core: 為網域設定操作新增操作日誌
core: storage: 儲存檔案時避開-_ 等字符
core: 修正評測紀錄清單頁過濾Waiting 提交不生效的問題
ui: 修復Typescript Language Service 工作異常的問題
ui: 新增網域快速導航開關
core: 新增PERM_VIEW_HIDDEN_CONTEST 與PERM_VIEW_HIDDEN_HOMEWORK 權限
ui: 翻譯最佳化
core: langs: 新增validAs 選項
migrate: 新增UOJ 支持
core&ui: 其他漏洞修復與最佳化
ui: 客觀題:允許多行答案
core: 修正pinnedDomains 無法修改的問題
install: 調大預設限制
ui: 優化比賽彈跳窗通知
core: 修復比賽選手管理頁時間計算
core: cli: 題目匯出時產生預設題目ID
core: dump: 支援--dbOnly 參數
core: 使用者導入: 重複訊息檢查
ui: 更改預設版權訊息
core: 支援訓練基於置頂等級排序
ui: 模板熱重載
fps-import: 支援處理遠端評測題目
vjudge: 新增VERDICT.WAITING 屬性
ui: 最佳化測試資料自動識別
vjudge: 增加一本通編程啟蒙支持
ui: 新增problemset/download
鉤子
ui: 在列印模式下隱藏部分控件
core: addon create 使用符號鏈接
ui: 評測記錄頁顯示程式碼行號
core: 支援從解壓縮的題目資料夾匯入題目
core: setJudge 時加入PRIV_UNLIMITED_ACCESS
core: 修復比賽中討論不會隨比賽刪除的問題
vjudge: codeforces: 更新登陸檢查邏輯
ui: 在題目提交頁面顯示提示
core: 更新用戶快取
core: 強制終止不回應心跳包的Websocket 連接
core: 設定導入題目的預設tag
core: 預設停用Python2
core: 支援重新排序導覽列
ui: 修復部分情況下進入編輯模式按鈕不生效的問題
core: 新增hydrooj patch 功能
core: 允許查看作業中自己的提交
core: 其他漏洞修復
core: 修復strictioi 下的計分板顯示問題
core: 允許一般使用者查看比賽討論
core: 啟動時自動建立靜態資源資料夾
core: 允許使用其他UI 模組
judge: 修復檔案IO 題目輸出重定向的問題
core: 不再向Guest 使用者分配sessionId
judge: 修復提交答案題
ui: websocket: 新增心跳包
judge: 修復客觀題和文件IO 題提交
judge: 新增compile_time_limit 選項
core: 新增kotlin 和pypy3 預設
ui: scoreboard: 支援自動更新
core: contest: 封榜後允許管理員查看即時分數
judge: 支援依題目設定語言時空限制倍率
install: 支援自動導入hustoj 數據
install: 支援指定安裝來源
core: 支援從npmjs 自動安裝插件
core&ui: 漏洞修復
judge: 設定最低評測優先權
core: 修復部分賽制下封榜時仍能查看提交清單的問題
core: 優化討論鑑權
judge: 優化統一回調評測狀態回顯
judge: 移除processTestdata
步驟
judge: 客觀題子任務分數回顯
core: 壓平測試資料結構
core: rp: 修復比賽分數
core&ui: 首次使用OAuth 時要求設定密碼
ui: 評測設定UI 升級
install: 根據系統記憶體調整wtCacheSize
ui: 加載速度最佳化
core: 偵測域ID 大小寫
ui: 導覽列域索引
ui: 支援按權限群組過濾作業/比賽
judge: 將Javascript 預設解釋器設定為node
judge: 修復刪除未評測完成的題目導致評測隊列卡死的問題
core: 升級至mongodb@5
ui: 評測詳情中顯示子任務得分
core: 修復測試資料檔名以空格開頭導致操作異常的問題
dev: 升級devcontainer 環境
ui: 優化IDE 頁面佈局
ui: 使用cordis 進行生命週期管理(移除舊bus)
blog: 移動功能到獨立的@hydrooj/blog
插件
core: 支援動態設定
judge: 效能模式(關閉單點回呼)
ui: 支援為作業設定維護者
core: 放行提交答案題至提交語言白名單
import-qduoj: 修復空標籤導致無法匯入的問題
ui: 精簡serviceworker 邏輯
ui: 修復訓練計畫加入失敗的問題
core: 簡化user 傳回欄位列表
core&ui: contest.rule.ioi.strict
其他漏洞修復和體驗優化
core: 修復無輸入自測
core: 修正endpointForUser 網域不一致導致的token 無效問題
core: 移除isBinaryFile 檢查
core: 修復allowViewCode 設定
core: cli: 優先使用mongosh
workspace: 提供@hydrooj/eslint-config
包
其他漏洞修復和體驗優化
core: 修復提交答案題
ui: 修復作業頁面編輯與刪除操作
vjudge: 適配codeforces 新接口
core: 過濾空$set
操作
ui: domain_dashboard 頁顯示域建立者
judge: 修復hack
core: 提交時檢查所選語言是否存在
core: 支援偵測導致啟動卡死的問題
core: 修復特定情況下rating 訊息無法寫入的問題
core: 新增更多validator 欄位類型支持,移除舊版validator
core&ui: 支援CORS
ui: 支援模組懶加載
ui: 修復信箱登入
ui: 修復站內信顯示異常的問題
vjudge: luogu: 修復登入
judge: 修復客觀題部分題目未答導致評測出錯的問題
core: ConnectionHandler
支援@subscribe(event)
util: 修正Message.sendNotification
格式化異常的問題
core: 資料庫優化
core: 校驗使用者頭像
judge: 移除onDestory 鉤子,使用disposables 替代
ui: 最佳化資源加載
core&ui: 新增webauthn 支持
ui: 修復題解投票
ui: 優化比賽詳情頁佈局
ui: 修復快捷搜尋中評測記錄鏈接
core: 新增Types.ArrayOf()
支持
ui: 修復側邊欄預覽儲存
core: 新增CookieDomain 設定
ui: 修正dev 模式下頁面無限刷新的問題
vjudge: 提供BasicFetcher 組件
core: DomainModel 緩存
core&ui: 其他漏洞修復
core: 增加樂多賽支持
vjudge: 移除puppeteer 相關依賴
judge: 修正客觀題未設定答案導致評測結果不回傳的問題
ui: 預設移除首頁右側搜尋模組
ui: 新增站內頭像上傳模組
core: 讓比賽創作者查看隱藏的計分板
core: 討論更改為按照創建時間排序
ui: 修復題解投票回顯
core: 修正找回密碼連結合成錯誤的問題
judge: 修復檔案IO 題目編譯輸出限制過小的問題
core: 修復%
作為關鍵字會導致題目搜尋出錯的問題
core: 修正比賽題目清單下方提交記錄模組不顯示的問題
ui: 修正討論區部分錶情預設ID 和實際影像不符的問題
install: 預設設定vm.swappiness=1 以提高效能
ui: 允許一般使用者在設定了查詢條件時按頁翻閱評測記錄
ui: 提交記錄清單新增取消成績按鈕
core: 修正特定情況下存取日誌無法記錄的問題
workspace: 支援pnpm
workspace: 移除mocha
core: 支援使用形如handler/before/Name#method
的篩選
judge: 效能優化
ui: 評測記錄清單點擊重測時頁面不再刷新
ui: 支援全域快捷搜索
core: problem_list: 支援limit 參數
core: 精簡預設討論節點列表
core: validator: 雙漢字也被認為是合法用戶名
judge: objective: 支援多答案題目
core: problemStat: 忽略已取消成績的提交
ui: 修正討論編輯Ctrl+Enter 快速鍵
ui: 修正鎖定討論主題功能
core: 最佳化作業鑑權設置
core: 封榜功能修復
ui: contest: 允許手動管理參賽人員
ui: contest: 支援賽時廣播訊息提醒
ui: 其他漏洞修復和效能優化
fps: 修正題目中含空檔案導致匯入失敗的問題
core: 封鎖用戶時支援附加理由
vjudge: codeforces: 跳過無法存取的1769 和1772 比賽
ui: 收藏題目操作不再觸發頁面刷新
core: 重測時檢查題目設定檔有效性
core: 退出時自動清理臨時文件
core: 禁止使用. 作為檔名
import-qduoj: 跳過不合法的題目
core: 修復提交答案問題的比賽程式碼匯出
judge: 新增stdioLimit 項
ui: 修復message.FLAG_ALERT 顯示
core: training 可上傳文件
ui: 優化比賽導覽欄
ui: 比賽成績表支援關注隊伍
core: 允許克隆比賽/作業
ui: 比賽編輯頁面新增功能入口
core: 支持打星參賽
core: 整題重測時跳過已取消成績的提交
core: 修復比賽基於ID 搜尋題目的功能
judge: 修復testlib 錯誤訊息顯示異常的問題
sandbox: 提高預設stdio 限制
core: 修正討論歷史記錄異常的問題
core: 優化每日任務的運行速度
core: 使用者詳情頁支援顯示使用者近期參加的比賽/作業
judge: 將Bash 加入預設語言列表
vjudge: 在cli 模式下跳過載入
lsp: 修正了自動補全的提示,可能需要手動更新後生效
judge: 最佳化diff 輸出
install: 預設使用mongodb uri 作為資料庫連線方式
ui: 在使用者背景載入失敗時fallback 到預設背景
文件路徑更改為大小寫敏感。
在前端插件中支援使用import { ... } from '@hydrooj/ui-default'
引入內建函式庫。
ctx.inject('Notification')
支援插入多行文字。
core: 優化了比賽計分板頁面的效能
core: 匯入使用者時支援指定使用者所屬小組和學校
core&ui: 其他漏洞修復與效能最佳化
新增了UserModel.getListForRender(domainId, uids)
方法。
新增IHandler.response.pjax
屬性。
core: 移除了Problem.assign
core: 修正了比賽結束後,若題目仍處於隱藏狀態,無法查看程式碼的問題
ui: 修正了IE 瀏覽器端頁尾的顯示
judge: 修復lemon checker 異常退出導致題目計分為0 的問題
ui: 最佳化管理端的Firefox 相容性警告
ui: 最佳化fps 題目導入後的顯示
ui: 修正IE 瀏覽器顯示語言辨識的問題
install: 偵測已安裝的寶塔環境並拋出不相容警告
ui: 最佳化部分錯誤提示
migrate: 效能優化
vjudge: 修復Codeforces 提交記錄爬取例外狀況的問題
ProblemModel.getList()
移除了group 參數,後續參數前移
cordis
升級至2.6
修正評測詳情頁面在特定情況下不會即時更新的問題
將testlib spj 的錯誤傳回至用戶側
修復題目檔案無法從管理員側預覽的問題
終止對NodeJS <14 的支持
ui: api: 更新了API Workbench
judge: 移除環境變數中r,加入Python Packages 說明
ui: 修改了部分推薦鏈接
prom-client: 記錄EventEmitter 訊息
core: contest: 支援匯出比賽資訊為Ghost 格式
core: contest: 優化比賽中提交量和通過量的計算
core: contest: 封榜時顯示Pending 提交
judge: 修復客觀題未設定答案導致評測跳過的問題
core: 最佳化CsrfTokenError 和DomainNotFoundError 回顯
core: server: 擷取WebSocket 錯誤
core: validator: 修正可以傳送空站內訊息的問題
其他漏洞修復和效能優化
在題目詳情頁中,Scratchpad.store 可從Window 上公開訪問
安裝時自動安裝Caddy 設定反向代理監聽80 埠。
支援使用hydrooj install <src>
和hydrooj uninstall <name>
快速管理外掛程式。
在管理網域-> 編輯網域資料處新增了語言選擇的自動補全。
支援在OI 賽制下查看自己已提交的代碼。
import-qduoj:支援導入SPJ 題目。
fps-importer:適配FPS 檔案1.4 版本。
其他漏洞修復和體驗優化。
支援使用ctx.i18n.load(lang, Record<string, string>)
載入翻譯檔。
支援ctx.withHandlerClass(name, callback)
取得類別原型。
prom-client: 支援自訂ConnectionHandler 上報分類。
將Handler.ctx 移到Handler.context,新的Handler.ctx 為PluginContext。
本專案中framework/ examples/ install/ 下的內容採用MIT 協定授權,您可自由使用。
本專案中packages/ui-default/ 下的內容僅採用AGPL-3.0 授權。
項目其餘部分使用雙重許可:
您可以在遵守AGPL-3.0 授權和下述附加條款章節的前提下免費使用這些代碼:
如確需閉源,您也可以聯絡我們購買其他授權。
基於AGPL3 協議第七條,您在使用本項目時,需要遵守以下額外條款:
本項目的版權聲明不可移除與作者/來源署名;(AGPL3 7(b))
當重新分發經修改後的本軟體時,需在軟體名稱或版本號中採用可辨識的方式進行註明;(AGPL3 7(c))
除非獲得許可,不得以宣傳為目的使用作者姓名;(AGPL3 7(d))
即:
在您部署Hydro 時,需要保留底部的Powered by Hydro
字樣,其中的Hydro
字樣需指向hydro.js.org/本仓库/fork
之一的連結。
若您對原始碼做出修改/擴展,同樣需要以AGPL-3.0-or-later 開源,您可以以Powered by Hydro, Modified by xxx
格式在頁腳註明。
參考CONTRIBUTING.md
排名不分先後,依連結字典序
Github 為Hydro 提供了程式碼託管與自動建置。
criyle 提供評測沙箱實作。
Vijos 為Hydro 提供了UI 框架。
雲鬥學院