01
怎么装、怎么卸
- 安装:下载上面的安装包,双击 → 选好位置 → 「开始安装」。全程不需要管理员权限,
默认装到
%LOCALAPPDATA%\Programs\SanhaiOJ。 - 首次打开被拦?这是 Windows 对未签名程序的例行提示:点「更多信息」→「仍要运行」。
- 登录:用你的 OJ 账号密码登录,可以勾「记住密码」,下次自动登录。
- 卸载:开始菜单 → SanhaiOJ → 「卸载 SanhaiOJ」;或「设置 → 应用 → SanhaiOJ 客户端」。
静默卸载:
uninstall.exe /silent。
题面白屏先看这里:题面若显示空白,说明本机缺少 WebView2 运行时。
到
https://developer.microsoft.com/microsoft-edge/webview2/ 装一次
「Evergreen Runtime」即可,装完不用重装客户端。
02
这一版有什么
题目文件:可多选、一次打包下载NEW
题目附带的文件(大样例、数据包、说明 PDF 之类)现在每行前面都有勾选框,底下还有「全选 / 取消全选」和「打包下载 (n)」—— 一次就能把勾中的文件打包成一个 zip 存下来。
单个文件的「下载」按钮还在,没变。
其中一个文件下不到时,不会连累整包:其余文件照样打包,最后告诉你哪几个失败了。
题面有时候一片空白?修好了NEW
以前客户端取题面时不看服务端的返回状态,服务端回错误(比如被拦了、403)时,客户端会把错误提示的几个字当题面渲染,看着就是「没有取到题面正文」。
现在会正确识别失败:改用站点给的备用正文;实在没有,也会明确提示,并把失败原因写进日志(带状态码和站点),方便排查到底是网络、登录还是服务端的问题。
新增:能量星 —— 做任务攒能量,看谁攒得多NEW
侧栏多了一页「能量星」,是客户端自己的积分,跟 OJ 的账号、题目完全无关。
每天几个小任务:每日签到、打开一次在线编程、浏览一次题解,做完点「领取」就到账。另有两个连签任务(连着来 3 天 / 7 天),按打卡记录自动算,不用手动领。
页面上能看到 余额、自己在第几名、连续打卡几天,还有 能量榜(前 10 名)。
能量星只认服务端记的账:客户端只负责提醒你「该领了」,一件任务到底算不算完成、能领多少,全由服务端说了算。
题面公式:更多写法能正常排出来了NEW
以前有些公式在客户端里会退回成一串 LaTeX 源码,比如
\textcolor{red}{…}(彩色字)、\substack{…}(分两行的上下标)、\begin{align}(多行对齐)、\hline / \cline(表格里的横线)、\middle、rcases / dcases 这些环境。
现在这些都能正常排出来了。
实在排不出来的写法,也还是会把源码原样显示出来 —— 至少内容还在,不会一片空白。Linux 版:题面里的表格终于能看了NEW
以前 Linux 端打开带表格的题,会看到一堆字糊成一片 —— 所有单元格的文字首尾相连挤在一起,分不清哪行哪列。其实代码根本没做表格,直接把整张表压成了一行文字。
现在表格是真的网格了:表头带底色、单元格有边框、列多了可以左右滑。
顺带还修了一个:表格上方会多出一行
::cute-table{tuack} 的标记。那是站点前端脚本处理的语法,客户端拿到的原文里还带着它,现在会被清掉。
Windows 版一直是对的,这次只修 Linux。Linux 版:修好题面打不开的问题NEW
上一版给 Linux 补题面时引入了一个错误 —— 点「题面」会抛出一串异常,题面打不开。
原因是查界面配色资源时,找不到的键返回的不是空值而是一个特殊标记,代码直接当颜色用就炸了。现在改成不依赖那两个键,取不到就跟随系统配色。
题面本身的功能没变:点「题面」在编辑器左边展开,换题会跟着换。
Linux 版:在线编程补上题面NEW
Linux 端的在线编程页以前看不到题面 —— 只有编辑器和自测框,写题得来回切页面看题。
现在工具栏上有「题面」开关,点一下在编辑器左边展开题目描述,换题会自动跟着换。
题面和「题目详情」页用的是同一套排版,公式、表格、图片都正常。
Windows 版本来就有这个功能,这次只是把 Linux 补齐。
Linux 版同步:题解里的中文不再显示成方框,新增生态共建和本题提交NEW
这次主要是把 Windows 端已经做好的东西搬到 Linux 上。
- 题解公式里的中文不再显示成一排 □ 方框(和 Windows 端同一个修法)
- 新增 生态共建:你的题目被多少人独立解出、题解被多少人读懂,进度看得见
- 新增 本题提交记录:有权限的话能看这道题的所有提交,包括 AC 的和没过的,以及源码
Windows / macOS 这次没有改动,可以不用更新。
修复:题解里公式中的中文变成一排方框NEW
以前题解里写「$\sum_{(u,v)} 其中 (u,v) 是父子边」这种,
其中…是父子边 会显示成一排 □ 方框 —— 公式排版器用的是数学字体,没有中文字形。
现在公式里的中文会正常显示,而且位置和顺序一点没变(中文夹在公式中间也不会被挪到末尾)。
手写
\text{…} 的老写法同样能正常显示。新增:工单页(读站点自带的那套工单)NEW
侧栏多了一组「反馈」,里面两页各管一摊:
· 工单 —— 数据全部来自站点自己的
/ticket(OJ 上的工单中心),
题目数据、题目版面、用户问题都在这儿。支持按状态/类型筛选、整屏看详情、
正文和回复都按 Markdown 渲染。它不产生任何新数据,就是客户端里的查看器。
· 建议反馈 —— 说客户端本身好不好用,走原来的通道。
已关闭的工单不给回复框(站点会拒),已关闭的状态会置灰好区分。
详情右上角有「在浏览器打开」,客户端显示不对时直接跳过去。改进:在线编程可以展开题目了NEW
工具栏新增「展开题目」开关(默认关 —— 代码才是主角)。
· 打开后题面和编辑器各占一半,中间的分隔条可以拖动;
· 排布有「左右」和「上下」两种,选择会被记住;
竖屏 / 窄代码屏切「上下」,代码能拉很宽;
· 题面走客户端原有的渲染,公式、图片、表格都正常;
· 关掉开关就回到原来的单栏,不影响「题目详情」页。
新增:AtCoder 自测(F9)/ Codeforces 自测NEW
写完代码想先试一遍,现在不用提交就能跑。
· AtCoder:编辑器里按 F9,或点工具栏「自测」。
在 AtCoder 的评测机上跑,不产生提交记录、不影响罚时。
编译失败会单独标出来(说明「程序根本没运行,和输入无关」)。
· Codeforces:面板里选一道本站题目做评测环境,自测由本站评测机判定。
不碰 Codeforces 的接口,所以不需要绑 CF 账号。
两边输出区都写明了「这是某某评测机的结果,时限/内存/编译器都按它算」——
别拿自测的 TLE 去改本来正确的代码。
修复:恢复草稿后编辑器变成简易文本框,而且回不去NEW
以前只要编辑器启动慢一点、或者当时切到了别的页面,25 秒的看门狗就会判它「起不来」,
退回一个普通文本框 —— 而且这个会话里再也回不去,只能重启。
现在:
· 页面不在前台时不再误判;
· 真回退了,切回在线编程会自动重新加载编辑器;
· 草稿内容会在恢复时推回编辑器,代码不丢。
改进:Linux / macOS 端界面
整套换成中性灰阶配色(只留一个蓝色做强调),四态交互齐全
(悬停 / 按下 / 键盘焦点环 / 禁用),圆角和间距全工程统一。
深浅两套配色都验过 —— 深色下边框提亮、浅色下压暗,两边都看得见。
新增:题库可以按难度筛选NEW
题库页标题行右侧多了「全部难度」下拉:未评定 / 难度 1 … 难度 10,和搜索框是叠加生效的(不是各筛各的)。
选择会被记住,下次打开还是那一档;列表上方会显示「共 182 道题,本页 100 道(筛选后 37 道)」。
新增:AtCoder 可以自测了(F9)NEW
写代码时按 F9,或点工具栏的「自测」展开面板:粘一组输入进去,直接在 AtCoder 的评测机上跑,把输出、耗时、内存、退出码拿回来。
· 不产生提交记录,不影响罚时和通过状态;
· 编译失败会单独标出来(说明「程序根本没运行,和输入无关」)并显示编译器报错;
· 输出区标题就写着「时限是 AtCoder 默认时限,不是本题时限」—— 别拿自测的 TLE 去改本来正确的代码。
实测:abc300_a / C++23 跑
1 2 → 输出 3,0 ms。
Codeforces 的自测这一版没有(它必须借浏览器内核发请求、还要过 Cloudflare,得单独验证一轮)。在 Codeforces 页按 F9 会提示这一点,不会毫无反应。修复:比赛里的题目打不开NEW
比赛(和作业)里的题目在服务端是跟着比赛 id(tid)走的 —— 不带 tid 请求,服务端会当成普通题库题目处理,比赛专属的题目就会打不开或看不到。
客户端以前只在提交时带了 tid,读题面时没带。现在打开比赛题目、在「在线编程」里选比赛题目、以及下载该题的文件,全都会带上 tid。
新增:题目文件列表(大样例 / 数据包)NEW
题目页右侧新增「题目文件」一栏,列出这道题附带的文件(大样例、数据包、说明等),点一下直接下载到「下载」文件夹,并自动打开所在目录。
· 文件名和大小都显示出来,看着清楚;
· 同名文件不会覆盖,自动加 (1)(2) 序号;
· 没有文件的题目这一栏直接不显示。
以前网页端有这张文件表,客户端完全没有入口 —— 学生拿不到大样例。
建议反馈:可以标记「已完成」,提交者会收到通知NEW
管理员现在能对每条建议点「标记完成」,提交者下次打开客户端会收到一条系统通知(「你的建议已采纳」),反馈页里对应的条目也会显示「✅ 已完成」。
同一条建议只会通知一次,不会每次启动都弹。
修复:题面里的表格显示成一堆竖线NEW
题目描述里的表格(输入输出格式、数据范围那张表)以前会被压成一行文字 —— 所有单元格首尾相连挤在一起,行和列的界限全没了,看起来就是一串
| 和乱码。
现在会排成真正的网格:有表头(浅底加粗)、有格子线、列宽按内容自适应,表格太宽时可以在表内左右滚动。
顺带修掉两个连带问题:
· 表格旁边多出来的一行 ::cute-table{tuack}(站点主题的标记,客户端没有对应的脚本处理);
· 单元格里的公式现在也会正常排版(以前会原样显示 |s| ≤ 的 LaTeX 源码)。修复:Windows 11 上按钮、输入框还是直角的NEW
上一版把全局的圆角资源写死成 0(直角是 Windows 10 那套的风格),只按平台跳过了卡片的直角处理 —— 结果卡片圆了,按钮/输入框/菜单/对话框还是方的。
现在这些控件也跟着系统走:
· Windows 11 → 控件 4px、浮层/对话框 8px(系统自带的那套圆角);
· Windows 10 → 保持直角,连同你喜欢的列表展开效果一起不动。
换用更快的公网入口:myijkoj.sh3.ikuai7.comNEW
本站的「公网入口」换成了 myijkoj.sh3.ikuai7.com(原来那条路由器动态域名已经不用了)。
客户端启动时会同时测三个入口的延迟、自动连最快的那个 —— 这次实测:
· 官方域名 www.myijk.com 约 1367 ms
· 公网入口 myijkoj.sh3.ikuai7.com 约 249 ms
快了五倍多。你不用做任何事,更新后打开客户端就会自己切过去。如果哪天这个入口也不通,客户端会自动退回官方域名。
修复:自动更新后客户端有时不会自己回来NEW
客户端自动更新时是静默调安装器的,装完要由安装器把新版拉起来。但安装过程里「创建快捷方式」这一步可能失败(开始菜单里那个 .lnk 被占用或权限不对),一失败整个安装就判定为失败 —— 于是文件装好了,客户端却不会自动重新打开,看起来就像「更新完程序不见了」。
现在:
· 快捷方式 / 注册表这些次要步骤失败不再中断安装,只记一句日志;
· 静默安装会写日志到
%TEMP%\sanhaioj-setup-silent.log,万一还有问题能直接看是哪一步、什么原因(以前异常被彻底吞掉,查都没法查)。修复:更新完之后,还是一直提示「有新版本」NEW
beta.38 有一个很坑的问题:安装包里带的版本号写错了 —— 实际装的明明是 38,程序自己却以为自己还是 34。于是每次检查更新都得出「38 比 34 新」的结论,更新完又提示更新,反反复复停不下来。
原因在打包环节:版本号是打包时注入的,但那次构建沿用了之前遗留的缓存文件,版本号没被真正改写进去。
现在打包流程末尾会核对产物里的版本号,对不上就直接中止发版 —— 这类问题不会再悄悄流出来。
修复:Windows 11 上却是 Windows 10 的观感NEW
上一版把「直角 + 边缘高光」当成全局样式,可这两样恰恰是 Windows 10 的特征;而材质又按系统正确地选了 Windows 11 的云母。结果拼出一个「云母底 + 全直角 + 旧式高光」的混合体——你说它像 Win10,一点没错。
现在三处统一按系统走:
· Windows 11 → 云母 + 保留系统圆角,不加旧式高光;
· Windows 10 → 亚克力 + 直角 + 边缘高光。
圆角是 Win11 最显眼的特征,压成直角整个界面立刻就旧了 —— 这一版不再动它。
题库现在会显示你自己每道题的通过状态NEW
题目列表里每道题右边多了一列你自己的评测状态 —— 和网页版题库同一套显示方式(左边一道状态色条 + 状态文字,绿色 AC、红色 WA…)。
· 只显示你自己的记录,别人看不到你的;
· 部分分能看出来(比如「WA 55」),满分只写 AC;
· 鼠标停在上面会显示完整状态名和分数;
· 没做过的题不显示,不会留下一排空框。
⚠️ 需要先登录才有这一列 —— 状态是服务端按账号下发的。启动时如果题库比自动登录先加载完,客户端会自动补拉一次,不用手动刷新。
修复:勾了「记住密码」,下次打开却还是要重新登录NEW
这一版修掉了一个很隐蔽的问题。原来客户端在登录失败时会判断「是不是密码错了」,如果是就把保存的密码删掉 —— 但那个判断把登录网页里的「用户名」「密码」字样也算了进去。
结果就是:只要一次登录请求返回的是网页(网络波动、会话被踢回登录页、服务端临时出错),就会被误判成「密码错了」→ 把你存好的密码悄悄删掉。之后每次打开都是未登录,而「记住密码」明明还勾着 —— 你根本看不出问题出在哪。
现在改成:返回内容是网页的一律不算密码错,判断关键字也收紧成「明确说密码不对」的那几种说法。原则是宁可多留一份密码(大不了多试一次),也绝不错删。
换新外观:按你的系统给对应的原生材质NEW
界面换成 Windows 原生的那套材质,观感和你系统自带的「设置 / 文件资源管理器」一致。
按系统各给各的:
· Windows 11 → 云母(Mica):透出桌面壁纸的色彩,层次更亮;
· Windows 10 → 亚克力(Acrylic):冷灰、克制。
两种都是系统原生的材质,不是画出来的假效果。
顺带三处:
· 直角:全界面去掉圆角;
· 边缘高光:顶部条、左导航栏和卡片的边缘有一道受光的高亮带;
· 深浅色跟着系统一起换。
⚠️ 如果你开着「液态玻璃」开关,关掉再打开一次就会套用新材质;不想用材质直接关掉那个开关,界面照常好用。
修复:在有些域里「新建题目」入口不显示NEW
权限是按域算的(同一个账号在 A 域可能是出题人、在 B 域只是普通用户)。原来的客户端只在登录时判一次权限,切到别的域不会重新判 —— 所以到了你真正有权限的那个域,新建题目的入口反而不见。
现在切换域会重新判权限(手动切域、从作业跳进别的域、启动时确定域,三条路都补上了)。
改进:讨论区改用客户端内置的排版引擎NEW
讨论和题解的正文,现在交给客户端随包分发的排版引擎来排(和题面里选「本地 KaTeX」是同一套,断网也能用)。好处很直接:
· 图片是浏览器原生显示,不用客户端一张张下载再摆控件 —— 这是这一版最主要的改动;
· 公式在本地排,代码块、表格、引用、列表都是原生排版,滚动和选中文字也更跟手;
· 页面里的链接照常点得开(交给系统浏览器打开,不会把帖子顶掉)。
⚠️ 两点说明:
① 这一版只对 Windows 版生效 —— Linux / macOS 版没有可用的网页内核,保持原来的原生排版(图片、删除线、提及这些也同样正常,只是公式走客户端自带的排版器)。
② 如果你的电脑环境比较受限、网页内核起不来,客户端会自动退回原生排版,功能不丢。
修复:讨论区里的图片和格式显示不对NEW
图片:以前在讨论区里永远显示不出来 —— 只有「先随便打开一道题、再进讨论区」才碰巧能看到(客户端取图时需要一个站点地址,讨论这条路径没设)。现在直接进讨论区就有图。
格式:还有几处不认的写法,按真实帖子里的例子:
· 标题行首带空格时不认 ——
## 后话 会连 ## 一起显示成正文;
· 删除线 ~~文字~~ 不支持,会原样显示符号;
· 站内提及 @[](/user/55) 会显示成「@[] (/user/55)」这种半截话 —— 现在显示成 @用户名;
· 只点了题号的链接 [](/p/S1005) 会显示成一串裸路径 —— 现在显示成 S1005。
讨论区和题解都修了。新增:每日签到(在客户端里打卡领硬币)NEW
侧栏「我的」下面多了每日签到。打开就是一张自己的签到面板:连续签了几天、累计几天、累计领到多少硬币、现在余额多少;下面一张月历标出这个月哪几天签过、今天签没签,可以往前翻月份看历史。漏签了还能补签(花硬币补最近几天,能补几天、补一次多少钱都写在页面上)。奖励按连续天数递增:每天基础 1 枚,连续 3 天 +2、7 天 +5、14 天 +10、满月 +30。
⚠️ 三件事说明白:
① 签到算不算数由服务端说了算,客户端只是点一下 —— 改本地时间、或者重复点,都不会多发硬币;同一个账号一天只可能签到成功一次。
② 领到的硬币直接记进你的 OJ 硬币账户,和网页上的「硬币」是同一份余额,不是客户端自己的一本账。
③ Linux / macOS 版功能完全一致。
修复:硬币页余额一直显示为 0NEW
硬币页顶上那两个数(当前硬币、累计获得)以前是去站点的账单页面里抠出来的 —— 在页面源码里找一个叫
coin_now 的字段,抠到就是余额,抠不到就按 0 显示。站点页面结构一变就抠不到,于是看起来像是「硬币全没了」,其实余额一直是好的(同一时刻签到页显示的是 957,硬币页却显示 0,就是这么来的)。
这一版这两个数改走客户端通道的专用接口,不再依赖页面长什么样;接口实在取不到才退回老办法,不会再无声无息地显示成 0。修复:液态玻璃只虚化了最底下那一条NEW
打开「液态玻璃」之后,只有没被面板盖住的那一小条(主界面最底端)透得出磨砂,卡片、顶部条、侧栏看着还是实心的。原因是换透明的清单里只有项目自己定义的那几个颜色,而界面上还有一堆地方直接用系统自带的画刷 —— 信息卡 13 处、顶部条 / 自测面板 / 底部栏 7 处 —— 它们不透明、又没被换掉,等于把底下的磨砂整个挡住了。
现在这些系统画刷也一起换成磨砂,整窗都虚化;关掉开关仍然精确恢复成原来的样子。
修复:窗口 / 任务栏图标变成了系统默认图标NEW
Windows 版客户端标题栏左上角、还有任务栏上那个图标,之前是 Windows 自带的通用图标,不是我们自己的「OJ」标。原因是 WinUI 这个框架不会自动套用 exe 上的图标,得在代码里显式设一次 —— 这一步一直漏着;只是以前系统的图标缓存里还留着旧的,看不出来,重装客户端之后缓存刷新了,默认图标才露出来。
现在两端都显式设了:Windows 版用 app.ico,Linux / macOS 版用 logo.png。
内网入口换成 192.168.191.103:8088NEW
教室/内网的直连地址从 192.168.121.103 换成 192.168.191.103:8088。客户端启动时会自动测速、挑最快的入口连,所以在教室里它会自动走内网,不在同一网段时仍然走官方域名。
一个小提示:凭据是按「站点」分组记的,换网段等于多了一个新入口 —— 如果你之前只在旧内网地址上登录并勾了记住密码,第一次连新地址可能要补输一次,之后就好了。
修复:Linux / macOS 版一打开就闪退(重要)NEW
先说范围:只影响 Linux 和 macOS 版,Windows 版一直是正常的。
上一版给客户端加了「内测资格」的拦截页,那页要盖住整个窗口,背景色按主题取 —— 写那一行的时候漏了一层包装(少写了 {DynamicResource ...}),程序去画那页的时候直接报错退出。表现是:一打开、窗口还没出来就没了,什么提示都没有。
Windows 版取色的写法和这边不一样,没踩到这个坑,所以上一个版本没发现。已经改回来了。
⚠️ 如果你的 Linux / macOS 版是上一版(beta.31),它自己更新不了 —— 客户端根本起不来。请重新下载安装包:Linux 用 deb 或免安装单文件,macOS 用 zip。(beta.30 及更早的版本能正常自更新,装这一版即可。)
新增:AtCoder / Codeforces 页面里直接写代码NEW
以前在这两个页面做题,得先在别的编辑器里把代码写好、存成一个文件,再回客户端点「提交」把那个文件选进来 —— 在客户端里做题还要绕这么一圈。
现在两个页面各有一块编辑区:选好题号和语言,就地写、就地交(Ctrl+Enter 也是提交)。「导入文件」按钮仍然在,习惯用自己编辑器的同学照旧;选语言会给代码上对应的高亮;两个页面各自记着自己的内容,来回切页不会丢。Linux / macOS 版用的是另一套原生编辑器,读写和提交完全一样,只是能高亮的语言少一些。
调整:Linux / macOS 版的 AtCoder 挪到独立页面NEW
这一端的 AtCoder 原来挤在「题面页右边那一栏」里 —— 那一栏两百来像素宽,按钮放得下,写代码的地方放不下。现在它有整页了:上面选语言、中间写代码、下面看结果,侧栏的「RMJ」分组下也能直接进。题面页右栏留了一个入口按钮,点了就跳过去。
新增:客户端内测权益(名单制)NEW
这个客户端现在只对参与内测的同学开放(UID ≥ 70,或老师单独加的号)。登录后客户端会拿你的 UID 问一次服务端名单,不在名单里的会看到一个说明页 —— 想加入内测找老师报名就行。名单在服务端,老师改一下文件就生效,不用等发新版。几个说明:没登录时不会拦(得先让人登进来);断网时如果之前校验过,按上次的结果放行,从没校验过的会提示联网校验一次;用第三方站点(代码源那两个)时不校验 —— 那边是公开平台,本来就没有内测这回事。
新增:建议反馈(老师可以标优秀)NEW
侧栏多了「建议反馈」:把你的想法、遇到的问题写进去,类型可以选建议 / 问题 / 需求 / 其它。大家提的都能看到,老师(UID 5)能把某条标成「优秀建议」,标过的会自动排到最前面。建议存在客户端的服务端上(不往 OJ 上写东西),同一账号一分钟最多发 5 条,防手滑刷屏。
新增:Linux 有 deb 安装包了(能装了)NEW
以前 Linux 只给一个免安装的单文件,拿到手不知道该放哪、怎么赋权、也没有菜单图标和卸载方式 —— 说白了就是没法装。现在页面上提供一个 deb 安装包:下载后双击安装,或者终端里执行
sudo apt install ./sanhaioj-client_<版本>_amd64.deb。装完开始菜单里就有「SanhaiOJ 客户端」(带图标),卸载执行 sudo apt remove sanhaioj-client。免安装的单文件仍然提供 —— 自动更新走的是它,不想用包管理器的同学继续用它就行。⚠️ 用 deb 装的这份没法自动更新(普通用户改不了 /usr/bin 下的文件),所以点「检查更新」时会直接告诉你用 apt 升级的命令,不会再白下载 87MB 然后失败。修复:返回上一页不再跑到别的页面上去NEW
以前在题目里点开自己某条提交、看完点「返回」,会被扔到侧栏的「提交记录」页,正在看的那道题就没了。原因是每个返回按钮都写死了目标(提交详情一律回提交记录、帖子一律回讨论区),只有一条入口时看不出问题,多了第二条就错。这一版改成按浏览历史返回:从哪儿点进来的就回哪儿。题面、题解、帖子和讨论、成绩表、私信、作业、比赛 —— 这些页面的返回统一了;点侧栏的顶级入口则等于重新开始(历史清空),不会越堆越乱。
新增:代码源(daimayuan)上的题面能看了NEW
以前客户端只认本站自己的题面接口,而第三方 Hydro 站点(代码源那两个)没有这个接口 —— 切过去之后每道题都显示「这道题没有可显示的题面」。其实站点早就把题面给了,就在题目数据里,只是没人读它。这一版读上了:那类站点用客户端自己的排版引擎渲染题面,公式、代码块、表格照排。本站(SanhaiOJ)走的还是原来的题面接口,一点没变。
新增:题面里的插图会加载出来了NEW
以前题面里的图一律显示成
〔图片〕 占位符 —— 讨论区那样倒没关系,可题面里的图(题面上「下图是 2×3 网格的一种覆盖方案」这种话,旁边那张图)正是解题要看的,丢了就做不了题。现在题面插图会真下载并显示:加载时先摆一个占位框,取到了填进去,取不到就在框里写清原因。长图、大图会自动缩到合适大小(宽最多 720、高最多 560),不会一张长截图占满整屏。图片地址在站点里是 file://xxx.png 这种内部写法,客户端会自动换算成真实地址,不用登录也能看。新增站点:代码源 OJ(newoj.daimayuan.top)NEW
设置 → 站点下拉多了这个站点(和 bs.daimayuan.top 是两个独立平台,账号各记各的,切过去就是重新登录那边的账号)。它比另一个要求严:必须登录才能看题 —— 以前没登录时题库会显示「共 0 道题」(等于骗人),现在改成如实写「这个站点需要登录才能看题」,并提示你去点登录。顺带修了登录出错时的提示:以前挖出账号会看到一串带
{0} 的原文(User {0} not found.),现在会替换成 User abc not found.。修复:题库一条题都看不见(上一版换站点时弄坏的)NEW
上一版修「换站点」时踩了个狠的:切换站点会把题库列表的数据源整个摘掉,而且再也绑不回去 —— 表现是题库页一条题都看不见(顶上还写着「共 151 道题」,下面却是空的),开机自动换到更快的入口时同样中招,所以一打开客户端看到的就是空题库。这一版改成只清列表内容、不动绑定,题库恢复;聊天里的会话列表同一处毛病一起修了。
新增:题面渲染引擎可以自己选了NEW
设置 → 题面右侧栏多了「题面渲染引擎」,三选一:站点渲染(原来的网页版,内容从站点拉,公式最全,但断网 / 内网时公式字体可能取不到)、本地 KaTeX(把 KaTeX 连字体一起打进客户端,公式在本地排,断网也能用,图片和表格照常显示)、自研排版(不依赖网页内核,原生控件直接排,最快、滚动最跟手)。三种引擎排出来的公式是同一个样子 —— 讨论区、题解里的公式早就用客户端自己的排版引擎排了,这一版把题面也接上了同一条管线(以前题面在这条路上只能显示 LaTeX 源码)。默认仍是原来的「站点渲染」,什么都不用改。
点开题目不再先闪一下旧内容NEW
以前打开一道题,会先看到上一道题的题面、接着是公式还没排好的一版,然后才跳到最终效果;用网页系引擎时中间还会夹一段「公式是一串 LaTeX 源码」的画面。这一版改成:点开就显示「正在加载题面引擎…」,排好了再一次性显示出来 —— 中间不再闪。顺带修了两处:连续快速点题时,前一道题的渲染结果会盖掉新题面;右侧栏太窄时引擎下拉的文字会被截断(「本地 KaTeX(离线)」显示成「本地 KaTeX(」)。
修复:换站点之后账号没退出、域列表还是旧站点的NEW
上一版加了「站点」设置,但那个下拉框只把地址填进文本框,等你去点一个「应用」—— 而那个按钮根本不存在。所以从本站换到代码源(bs.daimayuan.top)之后,看着像切了,其实登录态还挂在本站上、域下拉里也还是本站的域,点开题还会拿本站的域去要数据。这一版修好了:选预设就立刻切过去 —— 先退出当前账号,再清空域列表和题库,最后用这个站点记住的账号自动登录;地址自己手填的话,敲回车或者点右边的「切换」也一样。同一个站点的不同入口(内网 / 官方 / 动态域名)之间切换时,消息列表不会被清掉。
顺手的小改进NEW
切到没有群聊 / 私信接口的站点(原版 Hydro,比如代码源)时,「消息」入口会自动收起、后台也不再每 5 秒去问一次(省得刷一堆 404);这类站点的题面默认用原生 Markdown 渲染(不套 iframe,更快、也不会被站点脚本挡住),切回本站自动恢复成网页渲染。另外修了一处小毛病:本站域列表加载完之后,设置里那行提示还停在「登录后可选域」。
修复:从群聊切到别的页面会「叠在一起」NEW
上一版新加的群聊页面有个问题:在群里点左边任何其他页面的按钮,群聊界面不会退下去、会直接盖在新页面上,看着就像两个页面糊在一起。这一版把群聊页面交给统一的页面切换逻辑管理了,切页面干净利落;另外从群聊切走再回到「消息」时会记住你上次在群聊还是私聊。
补齐:私聊里也能发图片和文件NEW
上一版只给群聊加了「图片」「文件」按钮,私聊漏了。这一版私聊输入框左边也加上了,用法完全一样:图片直接显示成图,文件是一张卡片、点「打开」就能下载。
新增:群聊也能在客户端里聊了NEW
站点本来就有群聊,客户端一直没接。这一版补上了:消息页右上角点「群聊」,就能看到自己加入的群和可以加入的群(没加入的点一下就加入)。进群之后发消息、看消息都在这里,每 5 秒自动刷新,正在打字时会先让一让、不打断你。原来的私信功能一点没动,两个页面互相切换。
新增:聊天里能发图片和文件NEW
群聊输入框左边多了「图片」「文件」两个按钮,选中文件点发送就能发到群里:图片直接显示成图(不用点链接才能在浏览器里看),文件显示成一张卡片、点「打开」就能下载。上传的图片有永久直链,谁都能看、不会过期,也不需要登录。大小上限:图片 6MB、其他文件 12MB。
顺手的小改进NEW
内测页的安装包现在支持断点续传了 —— 144MB 的安装包下到一半断了,重新下会接着之前的进度,不用从头再来。
新增:液态玻璃外观NEW
设置 → 外观里多了一个「液态玻璃」开关:打开后窗口底换成系统级的磨砂材质,侧栏和卡片变成半透明,透出柔和的桌面色彩,好看不晃眼。默认关闭、素色照旧;如果系统不支持磨砂,开关会自动保持关闭 —— 不会出现发黑、发暗的兼容问题。
新增:缩到托盘,关掉窗口消息照收NEW
点窗口的关闭按钮,现在会缩到系统托盘继续运行 —— 新私信照常轮询、照常弹系统通知,右下角托盘图标左键一下回到主界面,右键可以真正退出。想改回「点关闭就退出」,在设置 → 通用 → 启动与托盘里关掉即可。
新增:开机自动启动NEW
在设置 → 通用里打开「开机自动启动」,开机进桌面后客户端会自己拉起来,消息提示一整天不缺席。Windows / Linux / macOS 三端都支持。
修复:设置页里「站点」「版本」两张卡片看不见NEW
上一版把设置改成一整页时引入了一个渲染问题:多张卡片的分节里,第一张会被后面的盖住 ——「通用」里看不到「站点」、「关于」里看不到「版本」。这一版修掉了,所有设置卡都正常显示。
修复:「更新记录」的折叠头颜色不对NEW
「关于 → 更新记录」的折叠标题条被画成一整条蓝色,看着像选错了主题。这一版换回了正常的浅色样式。
顺手的小改进NEW
二级菜单模式下,点不同的一级项,右侧子项列现在会跟着上下滑动切换,方向和列表顺序对应;设置页各分节卡片入场的错峰动画也顺了一遍。
修复:「静默提交」上一版没真正生效(升级完还在弹窗)NEW
上一版就写着「提交 Codeforces 不再弹窗」,可升级完还是照旧弹出来 —— 不是没做,是没生效。负责「要不要显示窗口」的那项设置用的是老名字,你电脑里早已存着一个「要显示」的旧值,程序每次读到的都是它,新默认被旧值盖掉了。这一版给设置项换了名字,旧值自然失配、静默立刻生效:点「提交到 Codeforces」之后不会再冒出任何窗口,界面上只剩一行进度和最后那行结果,手感和调接口一样。想恢复成全程可见,在 Codeforces 页面勾上「显示提交窗口」即可。
新增:真需要你点一下的时候,窗口会自己弹出来NEW
默认静默以后有个隐患:Cloudflare 偶尔会出一道人必须亲手点一下的验证,窗口藏着你就点不到,只会一直卡在「过盾中」。这一版加了 15 秒宽限 —— 实测这类验证绝大多数 5 秒内自己就过完,所以先不打扰你;只有真超过 15 秒还没过,才把窗口显示出来让你点一下,点完接着自动提交。一句话:能自己过的绝不烦你,真过不去的也不会把你晾在那儿。
修复:提交明明成功了,却一直等不到结果NEW
如果你在客户端里绑定的 Codeforces 用户名,和过盾窗口里实际登录的账号不是同一个,上一版会拿前者去查结果,于是查到别人头上 —— 要么一条也查不出来(表现成「交上去了、结果却永远不出来」),要么把对方的历史提交当成你这次的。这一版改成都以窗口里现登的那个账号为准,和你真正提交的账号对得上。
修复:极少见的「整个页面变成一片白」NEW
个别电脑(受限环境)上,过盾用的内置浏览器内核会自己崩掉,表现是整个窗口一片白、什么都点不了。这一版加了自愈:崩溃几次之后自动换一套启动参数重试,恢复正常。
修复:Codeforces 提交真的交上去了(上一版看着走完了、其实没交)NEW
上一版点「提交到 Codeforces」,流程看着是走完了,代码却没交上去 —— 页面不报错,可回账号里一翻,根本没有这次提交。原因出在「这次提交该发往哪个地址」上:提交页里有个和表单同名的字段把地址顶掉了,请求于是发到一个不存在的地址、被站点用一句 400 挡回来;而那句 400 里不带「人机验证」字样,程序便把它读成了「没被盾拦 = 提交成功」。这一版把地址取法改对了,提交会真正落到你的 Codeforces 账号上,随后照常自动等结果(
Accepted / Wrong answer / 过了几个测试点 / 用时 / 内存)。同时补了两处防呆:① 提交前先确认当前确实停在提交页,登录过期被踢回首页时会如实说出来,不再默默当成成功;② 页面上的验证组件有没有出现、什么时候就绪都会记进日志,不会再出现「验证还没过就宣布完成」。提交 Codeforces 不再弹窗:收进后台完成,手感像调接口NEW
上一版点「提交到 Codeforces」会弹出一个窗口,让你看着它把提交发出去。这一版把它收进后台 —— 点完之后不会再冒出任何窗口,界面上只有一行进度和最后那行结果,和调一次接口的手感一样。原理没变(提交仍由内置浏览器用页面内的
fetch 发出 —— 这是过 Cloudflare 的唯一办法,Codeforces 官方并没有提供提交接口,他们自己的命令行工具也是这么干的),变的是它不再需要你盯着:登录一次之后凭据就留在客户端里,往后它自己悄悄把提交发出去。只有两种情况会重新把窗口显示出来:第一次用(需要你登一次账号),以及登录过期(需要你重登)—— 该你动手的时候才打扰你,别的时候它自己解决。想看着它跑,在 Codeforces 页面勾上「显示提交窗口」就恢复成全程可见。新增:在客户端里直接提交 Codeforces 的题(Windows)NEW
Codeforces 没有提交接口,主站又挂着 Cloudflare —— 拿普通网络请求去发提交,会被盾直接拍掉。这一版把提交放回浏览器里发:点「提交到 Codeforces」会打开一个窗口,里面就是 Codeforces 官方提交页,登录态直接在这个窗口里用 —— 没登过就在里面登一次,窗口会记住,以后不必再登。随后这次提交由页面自己发出去,浏览器该带的身份凭据、来源、指纹一样不少,Cloudflare 看到的是一次再普通不过的提交,不会拦。不用再把 Cookie 复制出来。交完自动等结果,
Accepted / Wrong answer / 过了几个测试点 / 用时 / 内存都会写出来(结果取自官方公开接口,不是去啃网页)。语言不必提前选:窗口打开时会自动把 C++ 排到最前;想指定语言,先在提交页的下拉里选好再点提交即可。⚠️ 两点说明:① 这一版是 Windows 专属(要靠内置浏览器内核),Linux / macOS 版暂时仍走 Cookie 提交,遇到盾会如实提示;② 直连提交只发生在 Codeforces 上,不会同步到本站、也不计入题目的通过状态。
Codeforces 提交窗口里登录一次,「刷新记录」也跟着通了NEW
在上面的提交窗口里登录之后,客户端会把它手里的登录凭据自动接过来,于是「刷新记录」和语言列表也一并可用,不必另外再粘一次 Cookie。同时补了一处防呆:万一登录态刚好在提交前过期,会明确提示「会话失效」,而不是把跳回的登录页当成提交成功。
修复:AtCoder 人机验证在客户端里过不去(Windows)NEW
以前在客户端里交 AtCoder 的题,会弹出「正在通过 Cloudflare 人机验证」,然后一直卡在那儿,最后提示验证失败,怎么重试都过不去,只能放弃直连。这一版修好了:验证自己几秒就过(实测约 4 秒),不用再切到浏览器去做任何事。画面也收拾干净了 —— 上面一块说明卡片、下面直接留出验证框,验证在你自己的客户端里完成。⚠️ 三件事说明白:① 以前偶尔会「闪两次」验证框,这一版只剩一次;② 验证必须整页加载(Cloudflare 的机制决定),所以过程中会短暂看到 AtCoder 页面本身,这是正常的,不是出错了;③ 这次修的是 Windows 端 —— Linux / macOS 版没有网页内核,遇到验证时会如实提示、并给你一个在浏览器里打开的入口。

新增 Codeforces 直连:绑定用户名就能看提交记录(Windows / Linux)NEW
侧边栏新增 Codeforces。填一次用户名绑定即可 —— 不需要密码、不需要 Cookie,进去就能看到两块内容:账号信息(当前分数、段位、历史最高分)和最近的提交记录(时间、题目编号与名称、难度分、语言、结果、用时、内存、过了几个测试点),结果按通过 / 未通过分色显示,一眼扫得下来。筛选很好用:在「只看题目」里填题号(写 
2268D 只看这一道,写 2268 看这一整场),列表下面会实时给一行汇总(共几条、通过几条)。点任意一条可在浏览器里打开原提交,点「刷新记录」重取最新。⚠️ 说明三点:① 数据来自 Codeforces 官方公开只读接口,不会碰你的账号,也不占用你的提交次数;② 「提交到 Codeforces」这一版还没开放(那边没有提交接口,得走网页表单,留到后面做),所以现在是「看记录」;③ 拉的是你全站的最近提交,不限某一场比赛。
修复:AtCoder 填完题号,语言下拉一直是空的NEW
以前只有「从远程题自动带题号」和「绑定会话」这两条路会去拉语言列表,所以自己手敲题号时,语言下拉永远空着,于是选不了语言、也交不了。现在填完题号停一下(约 0.7 秒)就会自动把这道题支持的语言拉回来;题号没敲完整时不会白跑网络,清空题号时下拉也跟着清空。
聊天更跟手了:消息收发不再「慢半拍」(Windows / Linux)NEW
以前私信是一分钟才刷一次,所以对方发来的消息要等一阵子才冒出来,打开对话也要转圈。这一版把节奏按场景分开了:正看着消息页时 4 秒一轮、开着客户端但没停在消息页 10 秒、只是挂在后台 20 秒、窗口最小化时才回到 60 秒 —— 既跟手,又不会一直费流量。另外三处也一起改了:打开对话先用本地已有的消息立刻画出来(网络回来的再补上)、新消息到了就地补气泡(不再整页重画、也就不再闪)、发出去的消息立刻上屏(半透明占位,发失败会自动退回输入框,不会白丢字)。
题解和讨论里的数学公式,现在能正常排版显示了(Windows / Linux)NEW
以前刷题解、看讨论,正文里用 
$…$ 写的公式会原样显示成一串 LaTeX 源码(10^{18}、a/b、\sum_{i=1}^{n} 这种),得自己在脑子里翻译。这一版把它们真正排出来了:分式上下摞着、根号带横线、上下标位置正确、求和号带上下限 —— 和题目页面里看到的完全是同一个样子。中文说明和公式可以混在同一行里,公式会跟着文字一起换行,不会另起一行把段落撑宽;列表、引用、代码块里的公式也都生效,而代码块里的 $ 不会被误当成公式。深色主题下公式颜色会跟着变,不刺眼。常见竞赛写法都覆盖到了:分式、根号、求和 / 连乘、上下标、组合数、取模、大小关系、希腊字母、矩阵与多行推导。⚠️ 要说明的是:极少数特别冷门的排版命令会自动退回显示原文,不会整段变空白;公式渲染在本地完成,不需要联网。
新增「比赛」页:看比赛、报名、榜单,从比赛里做题会记进这一场(Windows / Linux)NEW
侧边栏新增「比赛」。进去是全站比赛列表:每场都写明赛制(IOI / OI / ACM / 严格 IOI)、时间区间、题目数、报名人数、是否 Rated,并实时显示状态(未开始 / 进行中 / 已结束),进行中那场还带倒计时(「剩 00:42:15」)。勾上「只看进行中」可以把无关的收起来。点进任意一场:左边是比赛说明和题目列表(A/B/C… 字母序号,每道题带你的完成状态),右边可以报名参赛;报名后按钮变成「进入比赛」,一点就直接打开第一道还没做出来的题。每场都有榜单入口(分数、每题通过情况、总用时)。⚠️ 两件事说明白:① 从比赛里点开的题,提交会记进这场比赛 —— 这是排名认你的唯一依据,所以别在比赛外随手交;反过来,从题库直接进去做的题不会算进任何比赛。② 比赛有防提前看题:没开赛的场次题目内容站点根本不下发,页面上会写「比赛还没开始,题目暂时看不到」,这不是加载失败;榜单也一样,没到公开时机时会给一句明确提示,而不是甩一串英文报错。时间按你的本地时间显示(站点存的是世界时)。
「我的」页新增全站排名和班级排名(Windows / Linux)NEW
「我的」页顶部的概览卡又多两张:全站排名(第 N 名,副标题写全站在榜共多少人)和班级排名(班内第 N 名,副标题写是哪个班、班内在榜多少人)。这两个数走站点的排行榜接口,和提交统计分开取 —— 排行榜万一取不到只会显示「—」,不会拖垮页面其它内容。⚠️ 要说明的是:本站排行榜不返回分数,名次就是榜单上的排序位置(服务端自己渲染的排行榜页第一行就写着 1),所以这里给你的是「排在所有人里的第几个」,不是「考了多少分」。班级名次是按全站榜的先后顺序在班内重排得出的(成员名单本身没有顺序,照着念会算错),页面口径里点明了这一点。另外看不到名次的历史变化 —— 站点不保存历次快照,所以这里显示的是当前排名,画不成曲线。
「我的」页:一屏看清自己的做题情况(Windows / Linux)NEW
侧边栏新增「我的」。进去是一张自己的成绩单:总共交了多少次、通过了多少次、通过率多少、做对了多少道题(还会告诉你碰过但没做出来的有多少道)、有多少道题是第一次提交就过的。下面四组图分别是:每次提交的结果分布(通过 / 答案错误 / 超时 / 内存超限 / 运行错误 / 编译错误…)、做对的题落在哪些难度档、最近 30 天每天交了多少过了多少、各个编程语言各写了多少次。最下面是最近做出来的 20 道题,点题名能直接跳过去重做。⚠️ 口径说明:难度分布只统计通过了的题、且只算站点标过难度的那部分 —— 站点没给难度的题不计入、不做猜测,页面上会写清楚覆盖了多少道;数据是你自己账号在 OJ 上的提交记录,不含 AtCoder 直连提交(那些只在 AtCoder 上有)。页面底部有一段完整口径,逐条写清了怎么算的。
macOS:通知署名对了,点通知也能跳转了(顺带修掉一个让 app 打不开的坑)NEW
Mac 上收到私信时,通知左上角显示的不再是莫名其妙的「Script Editor」,而是「SanhaiOJ 客户端」、带着我们的图标;点一下通知会直接跳到那个对话(以前点了完全没反应)。不用装任何额外东西,也不用改系统设置。签名那个问题以前是没法改的 —— 通知上显示的发送者由「发送进程属于哪个 app」决定,而 macOS 判断这件事看的是文件放在哪。所以现在随包带了一个很小的通知组件(391 KB 的压缩包),放在客户端自己的 app 包里、跟主程序同一层目录,系统就认它是我们自己发的了。点击则是绕了一圈实现的:系统不会告诉命令行程序「你点的是哪条」,所以点通知会再跑一次客户端,那一趟只把「哪个对话」记进一个文件就退出,正在开着的那个实例读到就跳过去(约 2 秒内)。⚠️ 另外修了一个真问题:之前几个版本的 macOS 包,解压出来后主程序没有执行权限,双击会提示「应用程序『SanhaiOJ』无法打开」。根因是打包时在 Windows 上取权限,而 Windows 根本没有「可执行权限」这个概念(文件恒为 rw-rw-rw-),写进压缩包 macOS 解开就是不能跑。现在按 Unix 的规则显式写入权限位,并加了一道检查,坏掉的包不会再被当成「没变化」原样复用。下过旧版 macOS 包的话,重新下一份就好。
消息弹系统通知:Linux / macOS 版也跟上了NEW
上一版 Windows 版能弹系统通知了,这一版把 Linux / macOS 版补齐,三端功能对齐。Linux 走系统自带的通知(
notify-send,取不到就直连 Freedesktop 通知服务);macOS 走系统自带的 osascript,如果装过 terminal-notifier 会优先用它。规矩跟 Windows 版完全一样:刚登录的第一轮只把站上已有的消息默默记下来、不打扰你,之后才只对新收到的消息弹;同一个会话连着发好几条只占一条通知位,不会刷屏;按消息 ID 去重、记在本地,看过的不会重复弹。消息页多了「新消息弹系统通知」开关,当前环境弹不出来时,面板上会直接写出缺什么、要装什么,不用自己猜。⚠️ macOS 有个系统层面的限制:通知的署名会是「Script Editor」(因为它借系统脚本工具的名义弹),而且点通知不会自动跳到那个对话,得自己切回客户端。Linux 上没有这两个问题。(macOS 这两点在 1.1.0-beta.13 已经解决,见上面那条。)
消息直接弹系统通知(Windows)NEW
不用再开着客户端盯消息了 —— 站上有人给你发私信,Windows 右下角会直接弹出通知:谁发来的、说了什么,点一下通知就跳进那个对话。刚登录的第一轮只把站上已有的消息默默记下来、不打扰你,之后才只对新收到的消息弹;同一个会话连着发好几条只占一条通知位,不会刷屏,已经看过的也不会重复弹(按消息 ID 去重,记在本地)。消息页多了个「系统通知」开关,不想被打扰随时关掉。Linux / macOS 版这次还没有系统通知,消息照旧看客户端的「消息」。
在线编程:题目可以搜了,也不会再漏题NEW
看完题面直接就能写:题面新增「在线编程」按钮NEW
安装器全面改版:全新界面 + 完成动画
开发者工具:更新次数可以自己修正了
题目管理:在客户端里出题、改题(Windows / Linux)NEW
修复:讨论区节点显示成一串数字NEW
更新次数记录(Windows)NEW
自测(在线编程 F9)NEW
AtCoder 直连(Windows 版补齐)NEW
修复:在线编程草稿有时不落盘NEW
编辑器只把改动长度告诉宿主、没有把内容带上,导致草稿实际上只在点提交时才写盘 —— 写着写着关窗口就白写了。现在每次改动都会同步内容,草稿随时都在。
站点测速NEW
在线编程
评测详情实时刷新NEW
提交完不用守着手点刷新:页面自己盯着评测进度,结果一出来就更新;判完之后服务端还会回填测试数据(这段时间状态栏显示「实时刷新中」),回填的内容也会自动补上。看历史提交一样有效。
修复:评测详情打不开NEW
点开任何一条提交记录都提示「Record not found」——详情接口的路径少带了域前缀。已修,现在能看到每个测试点的状态、用时、内存和消息。
修复:评测详情解析崩溃NEW
评测信息在服务端是「消息模板 + 参数」的对象结构,不是纯文本,老代码一解析就崩。已按真实结构重写,模板里的 {0} {1} 会自动填成实际内容。
检查更新
启动后自动静默检查新版本,发现新版直接弹窗列出更新内容、一键跳到下载页;左栏新增「检查更新」入口,按钮上直接写着当前版本号。
AtCoder 直连
绑定方式换成「填写会话 Cookie」——在浏览器里登录 AtCoder,把 REVEL_SESSION 贴进来即可(AtCoder 已上 Cloudflare 人机验证,用户名密码的程序化登录走不通)。Linux / macOS 版绑好后可在题面右侧栏提交代码、刷新判题结果(Windows 版见上面那条,入口在左栏「AtCoder」)。
题解
每道题都能看题解、发题解:列表按作者 / 赞数 / 回复数排列,正文 Markdown 渲染,直接回复——和讨论区是两套独立的入口。
题面右侧栏收窄
语言选择 + 提交代码这一列只在「题面」时出现,看讨论 / 题解 / 作业时整列收起,中间不再被挤窄。
作业(Homework)
列表三态(未开始 / 进行中 / 已结束)、公告与题目、一键加入、成绩表逐题得分与用时。
作业与题目打通
点作业里的题目直接开题面,返回按钮自动变成「返回作业」;跨域作业会自动切域。
私信
会话列表 + 聊天气泡,客户端里直接收发消息。
域切换
左上角下拉切换题库域(luogu / ATCODER 等),各域的题库与作业各自独立。
03
发现问题这样反馈
- 先在客户端里对照看看:状态栏的「打开网站」会用浏览器打开同一个页面,能快速判断是客户端的问题还是站点的问题。
- 把 出问题的界面截图 + 你当时点的操作发到 OJ 讨论区(节点选 system),或者直接私信老师。
- 日志在
%TEMP%\ojclient.log,里面记了每一步请求,贴出来能直接定位。
04
文件校验
| 文件 | 大小 | SHA-256(点击复制) |
|---|---|---|
| Windows 安装包 | 139 MB | |
| Linux x64(免安装) | 89 MB | |
| Linux x64(deb 安装包) | 38 MB | |
| macOS Apple 芯片 | 41 MB | |
| macOS Intel 芯片 | 42 MB |












