Repository navigation
Releases: zhangzhendan-Berkeley/UCAS-Desktop
Release list
UCAS Desktop v0.5.6 · SEP 登录与入口自动发现
v0.5.6 · SEP 登录修复与讲座入口自动发现
本次发布源码版,未附 Windows 或 macOS 独立安装包。
修复
- Edge 驱动无法将窗口最小化时,保持窗口打开并继续执行;不再把窗口控制失败误报成 SEP 检测失败。真正的会话失效仍会报错。
- 通过 SEP 官方菜单发现选课与讲座入口,兼容本次迁移到 xkgodj / jwxk 的学校页面,不依赖固定讲座服务器域名。
- 人文、科研、听讲记录及日历查询沿用实际跳转来源;严格校验 HTTPS、学校域名、业务路径与页面结构,账号仅填入 SEP 官方登录页。
- 入口适配纳入组件安装补丁;修复网络异常被混同为账号失效的提示。
学校只更换子域名或端口时通常无需补丁;菜单、业务路径、页面结构或登录协议变化仍可能需要适配。
验证与限制
- macOS 本机真实账号:SEP 登录检测成功;一键刷新中的人文讲座、科研讲座、人文听讲记录、科研听讲记录全部成功,退出码 0。仅执行只读查询。
- 离线浏览器测试覆盖旧入口、全新学校子域名和端口,以及两类讲座菜单、Referer 和隐私过滤。
- 讲座模块 46 项测试通过;Python 全量回归通过(平台相关测试跳过),包含最小化失败与安全域名检查。
- Windows / Linux 未进行本次真实学校账号验证;不代表所有账号和页面均已覆盖。
- 公开课表守课仍默认关闭,真实选课提交尚未端到端验证,请谨慎使用。公开人数不等于本人可选,操作后必须核对 SEP 预选列表。
升级
退出旧应用,备份 data/,更新源码后执行 python scripts/setup.py --with-external-modules(Python 3.10–3.12,Node 22+)。使用项目内运行环境的 macOS 用户参见首页 README 的专用命令。仅替换 Python 源码而不重建讲座模块不足以完成升级。
UCAS Desktop v0.5.5
v0.5.5
正式版,基于 v0.5.4,包含教师与课程评估助手和实验性公开课表守课功能。
- 新增教师与课程评估助手:读取当前学期列表,支持用户手动验证码和最终提交。
- 新增公开课表守课:不登录查询公开课程人数,保存有效基线,查询失败不误判为零;人数下降信号合并后才可触发个人选课核验。
- 公开守课默认关闭;可选择仅监控,或触发后进入现有选课执行器。结果不明会暂停该课程,不自动重提。
- 讲座和选课任务继续使用原有账号隔离、任务互斥和会话恢复逻辑。
未验证范围
当前选课系统未开放,公开守课、选课登录恢复和真实提交没有用学校账号完成端到端验证。公开人数包含不同学生类别,不代表本人具有名额或资格。启用前请确认学期 termId,运行后务必核对 SEP 预选列表;建议先使用“仅监控”。
教师与课程评估的真实问卷提交同样需要用户在浏览器中完成验证码并确认,未承诺自动提交成功。
更新方式
退出旧版托盘程序,下载对应平台的 v0.5.5 包;源码用户重新运行安装器。账号、任务配置、课表和日历数据保留,但更新后应重新检查组件并逐项验证。
v0.5.5-rc.1 · 教师与课程评估助手
v0.5.5-rc.1 · 教师与课程评估助手
公开候选版,基于 v0.5.4;稳定版仍为 v0.5.4。提供 Windows x64、Mac Apple Silicon / Intel 便携包及源码。
从旧版更新:退出托盘程序,解压新版到新目录,使用“迁移旧版数据.cmd”(Mac 使用包内迁移工具)保留账号和配置。教师与课程评估依赖现有讲座组件,首次使用可在“设置与更新”检查并修复功能组件。
- 新增左侧“教师与课程评估”,共用个人信息页的 SEP 账号,从学校菜单发现当前学期。
- 记住用户自行填写的答案,在后续同类问卷自动填写匹配的空白题。课程和教师模板、不同账号相互隔离。
- 支持返回列表后自动打开本页下一个待评估项目;验证码与学校最终保存由用户操作,不自动修改已有评价。
- 适配实际页面中多个选项的 value 均为空的情况,使用完整题目及有序选项签名匹配。
- 修正概览“今天全部讲座”入口,继续指向已合并的讲座页,避免新侧栏导致跳转错位。
- 修复规划器上游返回 404 导致全新安装和 Mac 构建失败:保留同一固定版本、同一 SHA256 的 MIT 源码镜像,不更换课表。
验证:Windows 上 102 个 Python 测试(1 项平台跳过)、自动调度/概览/讲座 Qt 回归、拦截网络的评教浏览器测试通过。当前学校列表与问卷做只读核验;问卷离线副本恢复了课程 29 组、教师 23 组测试答案。真实提交和 Mac/Linux 真实账号评教尚未验证;离线浏览器回归已在三个系统通过。
感谢参考作者 @Chess9380、@Jinddddd、@WindFromKadath 和合集维护者 @Littlefish12138。
Windows / macOS / Linux 完整回归通过;Mac arm64 / Intel 独立包原生构建验证通过。Windows 成品额外验证 EXE 启动、102 项 Python 测试、慕课页面、讲座增量/多场/跨页报名、评教表单填写及组件安装。学校真实评教提交、真实 iCloud 写入没有进行自动化测试。
v0.5.4 · 人文定点、多场预约与 Mac 日历范围
v0.5.4:人文固定时点、多场报名与 Mac 日历范围
- 人文每天北京时间 15:16、15:31 检查,移除自定义查询时段;旧版已开启的任务自动采用新时点,启用、报名、星期筛选及可选保护设置保留。
- 修复历史满员永久跳过:学校重新提供报名入口时再核对,同轮逐场处理所有符合条件的候选,每场成功立即保存。已预约的场次不重复提交。
- 人文增量翻页:检查完整页后,遇到整页已见记录停止,避免第一条旧记录截掉同页的新讲座。手动检查/报名仍完整查询;若新讲座插在更后面的旧页,可用手动检查补查。
- 科研继续完整检查到今天之前或最后一页,保留独立自定义小时及 01 / 31 分设置。
- Mac 日历可选一周、两周、一个月(30 天):从今天开始,选择自动保存;概览、讲座页和每日 22:00 自动同步共用所选范围。课程逐日查询,讲座使用最近刷新列表。
下载
| 系统 | 附件 |
|---|---|
| Windows 10/11 x64 | UCAS-Desktop-0.5.4-Windows-x64.zip |
| Mac Apple Silicon | UCAS-Desktop-0.5.4-macOS-arm64.zip |
| Mac Intel | UCAS-Desktop-0.5.4-macOS-x64.zip |
| 源码 | UCAS-Desktop-0.5.4-source.zip |
独立包包含 Python / Node,无需配置开发环境。每个 ZIP 均附 SHA256。
升级与使用
Windows 从托盘退出,解压新版后运行“迁移旧版数据.cmd”保留账号、课表和计划。Mac 退出后替换 .app,原 Application Support 数据和钥匙串沿用。
旧讲座组件需要重建:进入“设置与更新 → 检查并修复功能组件”。Mac 在概览选择 7 / 14 / 30 天后,点击“同步到 iCloud UCAS”;讲座建议先一键刷新。Mac 保留原 iCloud UCAS 日历、去重和 ICS 备份功能,仍为临时自签名、未做 Apple Developer ID 公证,首次打开方法见说明。
验证
Windows / macOS / Linux 完整回归通过;Mac arm64 / Intel 独立包原生构建验证通过。Windows 成品额外验证 EXE 启动、102 项 Python 测试、慕课页面、讲座增量/多场/跨页报名及组件安装。
全部学校报名测试使用拦截网络的本地页面,未提交真实学校报名;日历测试未写入私人 iCloud 账号。
v0.5.3 · 讲座预约修复与 Windows / Mac 同步版
v0.5.3:讲座预约不中断、可选保护
- 学校明确返回“未到讲座预约时间或已过期”时跳过该场,继续其他候选;下次轮询仍可检查该场。
- 人文、科研各自提供“结果不明时暂停后续报名”,默认关闭。关闭时继续其他场次,未知结果仍如实记录,不冒充成功或满员;勾选后恢复暂停。
- 两类讲座可分别设置小时、每小时 01 / 31 分开关,修改后点击“保存自动任务”。
- 包含此前候选版的选课会话修复,保留慕课、后台浏览器和 Mac iCloud 日历。
下载
| 系统 | 附件 |
|---|---|
| Windows 10/11 x64 | UCAS-Desktop-0.5.3-Windows-x64.zip |
| Mac Apple Silicon | UCAS-Desktop-0.5.3-macOS-arm64.zip |
| Mac Intel | UCAS-Desktop-0.5.3-macOS-x64.zip |
| 源码 | UCAS-Desktop-0.5.3-source.zip |
便携包内含 Python / Node,无需自行安装开发环境。各 ZIP 附 SHA256 文件。
升级
Windows 从托盘退出后,将新版解压到新文件夹,用“迁移旧版数据.cmd”迁移账号、课表与计划;保留旧目录作为备份。Mac 退出旧版后替换 .app,原 Application Support 数据与钥匙串保留。讲座/选课首次使用请在“设置与更新”运行“检查并修复功能组件”;旧组件需要重建才会应用这次修复。
验证
Windows / macOS / Linux 跨平台检查通过;Mac arm64 / Intel 原生包构建与迁移验证通过。Windows 独立包另通过实际 EXE 启动、98 项 Python 测试、慕课与讲座浏览器回归、组件安装验证。所有学校反馈测试使用离线页面,不提交真实报名;真实 iCloud 账号写入未在 CI 验证。Mac 仍为临时自签名,未做 Apple Developer ID 公证,首次打开请按 Mac 说明操作。
v0.5.3-rc.1 · 选课会话与重试边界候选版
v0.5.3-rc.1 · 选课等待与会话恢复候选版
本版采纳 @shcw0405 的 Issue #2 中范围较小、可独立回归的建议。基于 v0.5.2-mac.1,作为候选版验证,不替换现有稳定版安装包。
三项改动
- 定时任务在执行前 5 分钟才开始准备浏览器和登录,避免提前数小时登录后空等。验证码仍由用户处理;若验证耗时较长,执行可能晚于计划时间。
- 提交前的只读课程查询明确进入登录表单或出现失效提示时,在同一浏览器中恢复登录,并重新核对是否已选、完整课程编码及可选状态。每次检查最多恢复一次,整个任务最多两次。限流、网络故障、陌生页面和错误凭据不会触发无限重登。
- 仅明确的满员/不可选终止结果允许继续原有轮询。不能因为日志早先出现过“已满”就重试;提交结果不确定时结束该课程的自动处理,要求用户核对预选列表。
课程选择、轮询间隔、轮次上限、验证码与实际提交仍复用原流程。没有新增公开课表监控、后台服务或新的功能模块。
验证与边界
- 新增 13 个专项用例:正常会话、查询中失效、恢复后已经选上、网络错误、限流、恢复次数上限、定时等待、只读预览、明确满员轮询及提交未知不重提。
- 真实浏览器离线 DOM 检查登录表单、可见失效提示、隐藏表单、帮助文字和非官方主机;所有学校 HTTP(S) 请求均被拦截。
- 本地 Python 共 96 项测试,1 项跳过;跨平台完整检查以本候选版关联 CI 为准。
- 未进行真实账号的两小时等待或选课提交。Issue 中的“两小时固定过期”是报告者的使用观察,尚未独立确认,代码不硬编码该时长。
版本与回退
- 本次仅发布候选源码 ZIP(含 SHA256),不是新的免安装包。普通用户继续使用 README 指向的 Windows v0.5.2 / Mac v0.5.2-mac.1 安装包。
- 开发/测试请使用独立源码目录,按源码安装步骤准备环境,避免覆盖正在运行的安装目录。不要并行运行新旧版本的同一选课任务。
- 标签
v0.5.3-rc.1固定本次代码;稳定基线v0.5.2-mac.1保留,可随时切回。没有数据结构迁移,也不会自动替换用户的本地程序。 - 人工验收应先运行“仅检查目标课程,不提交”,确认定时等待与验证码处理,再在用户明确选择课程时验证真实系统流程。只有后续验证通过,才提升为正式版并重建安装包。
界面版本号、Windows 默认打包版本以及 Mac 包名/版本字段从应用版本常量读取,避免再次产出名称与源码版本不一致的包。
本标签对应提交已通过 Windows / macOS / Linux 全部检查。
v0.5.2-mac.1 · macOS 独立版与 iCloud 日历
v0.5.2-mac.1 · macOS 独立发行版
- Apple Silicon(arm64)与 Intel(x64)分别原生构建,macOS 13+;内置 Python、Node、Qt、慕课和选课规划依赖,无需 Homebrew/Xcode。
- 将
.app拖到“应用程序”后启动。私有数据独立保存在~/Library/Application Support/UCAS Desktop,账号使用原有 macOS 钥匙串;更换.app不覆盖配置。 - 课程、已报名人文/科研讲座继续支持同步到 iCloud 的 UCAS 日历;EventKit 组件已预编译,保留地点、更新本应用创建的事件并避免重复。修复明日同步使用错误账号缓存、忽略未来课表缓存及阻塞界面的问题。
- 保留 v0.5.2 的慕课目录兼容、组件检测与修复。首次讲座/选课组件需在设置中从上游固定版本安装。
下载与使用
选择 macOS-arm64.zip 或 macOS-x64.zip(文件名前有版本号),解压后阅读“先读我.md”。.sha256 是校验文件。源码 ZIP 面向开发者,不是安装包。
日历:在系统日历的 iCloud 下创建唯一可写的 UCAS 日历,刷新课表和讲座后,在概览点击 同步未来 7 天到 iCloud UCAS,首次允许日历完全访问。云端与 iPhone 同步由系统日历负责。
包使用 ad-hoc 签名,没有 Apple Developer ID 公证。若被拦截,请确认来源后在“系统设置 → 隐私与安全性”对本应用选择“仍要打开”。
验证范围
两种架构独立验证原生 .app、迁移路径后的启动、内置运行时、Qt/课表、Keychain、慕课新旧目录、组件安装/损坏修复及原生日历组件的数据处理。真实学校账号、私人 iCloud 授权及跨设备云同步没有在 CI 中测试,不能据此宣称这些流程已端到端验证。
Windows 用户继续使用 v0.5.2 Windows 便携包。本版只新增 Mac 安装包,原作者及贡献者致谢继续保留在 README / THIRD_PARTY.md。
发布验证:Apple Silicon / Intel 独立安装包测试 与 三平台核心回归 全部通过。实际打包启动测试系统为 macOS 15.7.9。
v0.5.2 · 慕课与安装修复 / Windows 便携版
v0.5.2 — 慕课目录与安装修复
修复
- 兼容国科大在线
posCatalog_select新章节目录和旧ncells目录,以及嵌套页面、新标签页;正确读取任务点和区分测验。新增只读章节诊断和持续状态提示,避免一直无反馈等待。 - 缺少慕课依赖时显示修复入口;重复任务不再争用同一浏览器目录。
- 讲座补丁统一生成,从固定干净版本重建,修复旧目录重复安装和 background.js 缺失。
- 组件完整性与构建版本检查;修复采用暂存、验证、备份、替换,失败保留旧安装。发布与上游源码更新入口明确区分。
- 便携包包含运行时、慕课与课表;讲座/选课上游仍由用户从原仓库按固定提交下载。新增旧版数据迁移入口。
下载
- Windows x64:下载 Windows-x64.zip,全解压后运行 EXE,无需本地 Python/Node/Git。
- macOS / Linux:下载 source.zip,按 README 安装运行;没有独立 macOS/Linux 二进制安装包。
- 同名 sha256 文件用于验证下载完整性。
验证范围
本地回归包含新旧慕课 DOM、嵌套页面、组件损坏/修复/失败回滚、数据迁移及讲座完整补丁构建。实际学校页面只读验证识别到新版目录、视频和 PDF,未代为完成整门课程或测验。Windows 便携包需通过独立运行时、启动、组件修复和安装诊断后发布。跨平台 CI 结果以发布关联的提交为准。
升级前从托盘退出旧版,在新目录运行迁移旧版数据.cmd;保留旧目录供回退。致谢及原作者来源保留在 README 和 THIRD_PARTY.md。
发布校验:Windows 独立运行时与 EXE 启动、组件安装和损坏修复通过;Python 80 项测试通过(1 项跳过),Node 21 项通过。最终提交的 Windows / macOS / Linux CI 全部通过。
UCAS Desktop v0.5.1
修复 iCloud UCAS 日历同步和课程地点映射,已有事件更新地点。macOS 专用按钮在 Windows 隐藏,Windows 不执行 Apple 日历代码。通用 ICS 导出不依赖系统时区数据库。
源码发布;附件不含运行时和私人数据,不提供新版 Windows 便携包。
Windows GitHub Actions 检查已全部通过,涵盖依赖安装、Python/JavaScript 测试、离线界面、进程管理及浏览器回归检查。未进行 Windows 学校账号在线端到端测试。发布后的测试兼容性修正已推送 main,应用代码与 v0.5.1 相同。
验证记录:https://github.com/zhangzhendan-Berkeley/UCAS-Desktop/actions/runs/35709905611
UCAS Desktop v0.5.0 · macOS 日历与讲座自动化
UCAS Desktop v0.5.0
本次为 macOS 优先的源码版本,整合讲座自动化、日历导入、Linux 支持及此前主分支修复。
更新
- 人文、科研讲座启用计划后每小时 01 分查询并尝试报名。保留雁栖湖筛选、科研同开始时间单选和 AI 关键词优先;报名受学校状态与现有筛选限制。
- 科研讲座部门为本科部时,不显示、不报名、不导入日历,提交前再次核对。
- macOS 支持未来七天课程与讲座导入;已预约和明确无需报名的讲座可导入,需要报名但未报名的场次不导入。
- 修复“已经预约过”识别、无课日期 STATUS=2 被误报为课表查询失败,以及讲座提醒弹窗跳转。
- 包含今日讲座、有效学时、到场提醒、分页查询、验证码等待、本机 .app 启动器构建及 Linux 源码支持。
- 修复科研讲座模块在全新安装时的配置补丁,并覆盖可选模块安装路径。
下载与安装
附件 UCAS-Desktop-0.5.0-source.zip 是纯源码包,附 SHA-256 校验文件。不包含个人账号、缓存、日志、Python/Node 运行时或第三方 vendor 模块。
macOS 需要 macOS 13+、Python 3.10–3.12、Node.js 22+、Git 和 Edge/Chrome。在解压后的项目目录执行:
python3.12 scripts/setup.py --with-external-modules
bash 启动mac.sh可选执行 python3.12 scripts/build_macos_app.py 构建绑定本机项目目录的未签名 .app;它不是独立便携应用。本次不提供新版 Windows 便携包,旧版 Windows ZIP 请到 v0.4.0 Release 下载。
升级
从菜单栏完全退出旧进程,备份 data/,然后运行 git pull --ff-only 并重新执行安装命令。重启后刷新讲座与听讲记录,再导入日历。旧日历事件不会自动删除。自动任务需要应用运行、电脑保持唤醒;两个讲座任务共用会话,忙碌超过时点宽限可能跳过本轮。
验证
- Python:78 项,76 项通过,2 项 Windows 专用测试在 macOS 跳过。
- JavaScript:21 项通过。
- 全新补丁安装、重复源码安装、旧目录升级及 TypeScript 构建通过。
- 自动计划界面、讲座提醒界面、部门筛选及提交前复查通过离线检查。
- 本机未来七天课程查询及日历写入已验证;不代表所有学校账号和接口均端到端可用。