Repository navigation
Releases: giaocat/Wakeup
Releases · giaocat/Wakeup
Release list
v1.4.2
新增
- 手表端「从手机同步」按钮:手表登录不了教务系统,点一下就让手机把最新课表推过来;
手表上直接显示状态:正在请求…/已从手机同步 ✓/没有连上的手机/等待超时(确认手机已同步过课表)。 - 手机端「同步到手表」按钮(设置 → 数据与缓存):手动把当前课表推给已配对的手表,
并显示已推送到手表 ✓或失败原因。 - 手机端新增
PhoneSyncRequestService:接收手表的同步请求 → 推送课表 → 回执ok/empty。
v1.4.1
调整
- 手机端 minSdk 23 → 24(Android 7.0+):新版 AndroidX 里 navigation 2.10、material3 1.5、datastore 1.3
都要求 minSdk 24,manifest merger 会直接拒绝 23。手表端仍是 Wear OS 3(API 26)。 - 检查更新改走加速站:不再依赖
api.github.com(加速站代理不到),改为优先读仓库里的
docs/version.json版本清单(raw 链接经fastgit.giaocat.com加速),
清单里直接给出加速下载直链,点「去下载」即可拿到 APK;清单拿不到时再依次退回 atom / GitHub API。 - 发版流程新增一步:更新
docs/version.json的版本号与下载直链。
依赖
- navigation 2.10.2、material3 1.5.0-beta02、datastore 1.3.0(Dependabot PR #4 剩余部分,
随 minSdk 24 一并启用)。
v1.4.0
新增
- 课表导出:设置 → 数据与缓存 → 导出课表,把当前课表保存成
wakeup-课表-YYYY-MM-DD.json
(系统文件选择器选位置,不需要存储权限)。文件里是抓取到的原始课表数据 + 格式标识 + 导出时间 + 来源。 - 课表导入:设置 → 数据与缓存 → 导入课表,选择之前导出的 JSON 即可恢复,
导入后立即生效并写缓存(和联网同步同一条解析链路);换机、备份、恢复到另一台设备都可用。 - 导入的容错:空文件、不是本 App 的文件、来自更高版本格式的文件、坏 JSON 都会给出可读提示,且不会覆盖现有课表。
测试
- 新增 7 个导入导出单测(往返一致、非本 App 文件、坏 JSON、空文件、高版本、无数据、默认文件名)。
依赖
- OkHttp / logging-interceptor 升级到 5.5.1(合并 Dependabot PR #8):
屏蔽 8 个被攻破的 eMudhra 中间证书(CVE-2026-111943),并带来可选 ECH 支持。 - 本站官网(
docs/)随仓库一起发布,Cloudflare Workers 以静态资源方式托管(wrangler.jsonc)。
v1.3.3
调整
- 默认数据源改回「分享链接(token)」:教务系统抓到的课表周次与实际有出入,所以把 token 方式放回首位并设为默认;
教务系统登录方式保留在第二位,需要时仍可切换(设置 → 课表来源)。 - 设置页两个数据源的说明同步更新:token 标注「默认方式」,教务系统标注「备选」。
v1.3.2
本次发布包含 v1.0.8 之后的所有改动,下面按模块汇总;更细的逐版本记录见 1.2.x / 1.1.0 段落。
新增
- 新教务系统数据源(强智
jwxt.sut.edu.cn/jsxsd/),并设为默认:应用内 WebView 登录一次
(账号 + 验证码或扫码),保存会话 Cookie 后续复用;读取「个人中心 · 我的课表」,
并通过换周接口(main_index_loadkb.jsp,rq=日期)逐周抓取后合并出真实的单双周 / 分段周次。
旧分享链接(token)保留为可选数据源,设置 → 课表来源 可切换。 - 手表端:表盘复杂功能(下一节课)+ 信息块(Tile);手机同步成功后自动推给手表;
手表端不能登录教务系统,新数据源下由手机推送(设置页有说明)。 - 手机端:大屏 / 折叠屏自适应(侧边 NavigationRail、双栏详情、按铰链位置分栏)、课程详情面板、
Material 3 官方排版。 - 教学相关:开学第一周周一设置(周次 → 真实日期)、G/F 座 3、4 节提前 10 分钟提示。
- 工程:MIT 许可证、贡献指南、issue 模板、Dependabot、单元测试 119 个(含真实页面解析回归)。
修复
- 登录后"闪一下又要求登录":
JSESSIONID按路径下发,改为读取/jsxsd作用域的那个会话。 - 「课表页面解析出来是空的」:个人中心外壳页没有周次信息,改为依次取
xsMain.jsp→xsMain_new.jsp,
并以服务器片段里写的「第N周」为准编号。 - 解析脏数据清理:整行「备注」不再被当成课程、无 title 的格子去掉被 CSS 截断留下的
..。 - 登录页在手机上被压成窄条:注入 viewport,并允许双指缩放。
调整
- 不保存账号密码:登录页不再记录或自动填写账号密码,登录照常手输(验证码本来就需手输)。
- 设置页只显示当前数据源相关的项;「同步状态」第一行写明来源(
来源:教务系统(jwxt.sut.edu.cn)
或来源:分享链接(sutjwt.sut.edu.cn))。
注意
- 1.3.2 与此前版本使用同一套签名,可直接覆盖升级。
- 版本号只在
gradle/libs.versions.toml维护,App 与手表端都从那里读。
v1.0.8
新增
- 手表端「表盘小组件」:可以把「下一节课」添加到系统表盘(复杂功能)。
短文本显示10:15 高数,长文本额外带教室(10:15 高等数学 · F-105);
没课时显示无课,没同步过显示未同步;点一下直接打开 Wakeup。
手机同步、手表刷新、清缓存之后都会主动请求表盘刷新,不会停在旧数据上。 - 手表端信息块(Tile):从表盘往左滑就能看到「今天 · 周三」、下一节课、当天前 3 门课,
15 分钟自动刷新;没数据时直接告诉你怎么做(打开 Wakeup 或让手机同步一次)。 - 手机端适配大屏与折叠屏:按官方窗口尺寸类排版 —— 手机竖屏用底部导航栏,
中等/展开宽度改成侧边NavigationRail;展开宽度下课程详情变成右侧常驻面板(列表-详情双栏),
设置与「今日」收窄到 840dp 居中;折叠屏半开时按铰链真实位置分栏(书本姿态左右分、
桌面姿态上下分),内容不会画到折痕上。 - 旋转、分屏、折叠展开后,当前标签页、查看的周次、选中的课程都不再丢失。
修复
- 监听窗口折叠状态后,平板横屏不再把课表拉成超长单栏;正文有最大宽度约束。
注意
- 本版一并包含 1.0.6 与 1.0.7 的全部改动(Wear OS 手表版、表头月份修复、手机端官方排版、
手机→手表自动同步、双端 minSdk 下调):从 1.0.5 直接升上来的话,这两节的内容同样生效,
明细见仓库CHANGELOG.md的 1.0.6 / 1.0.7 两节。 - 手表端 minSdk 25 → 26:表盘复杂功能依赖(
watchface-complications-data-source)要求 API 26,
这是本版本核心功能的硬性下限;手机端仍是 23。 - 表盘小组件需要手动添加:表盘长按编辑 → 复杂功能/小组件 → 选择 Wakeup「下一节课」;
信息块需要在信息块列表里添加 Wakeup。 - 表盘上的数据来自本地缓存,不会为了刷新表盘而联网(避免抬腕时走网络)。
- 1.0.8 与 1.0.7 使用同一套签名,可直接覆盖升级;不要卸载(卸载会丢 token 与缓存)。
v1.0.5
修复
- 左侧时间轴与右侧课程对不上。1.0.3 起时间轴会根据当周的 G/F 座课程改动第 3、4 节显示的时间,
但右侧每门课各有各的时间,轴跟着某一门课走就会和大多数课程错位。
现在时间轴固定显示官方作息,G/F 座的提前时间只标在对应课程的格子里。
说明
- 作息时间以教务处「作息时间」页(https://jwzx.sut.edu.cn/index/zxsj.htm)为准,
第 1–11 节与官网逐条一致。 - 课表数据里会出现第 12 节(官网未列出),其时间
20:30–21:15是按每节 45 分钟推算的。
v1.0.4
新增
- Smartspacer 集成:桌面/锁屏的「一览」里可以显示下一节课(课程名 + 时间 + 教室),
点一下打开 App。- 用法:安装 Smartspacer(需要 Android 10+),
在其中添加 Target 并选择「下一节课」;需先在本 App 里配好课表链接并同步过一次。
- 用法:安装 Smartspacer(需要 Android 10+),
v1.0.3
修复
- G 座 / F 座 3、4 节提前 10 分钟此前完全不生效。旧实现按字面量
GF匹配教室名,
而真实教室是G-101、F-105,一条都匹配不上。现在识别G/F前缀,
且只在沈工大域名(*.sut.edu.cn)的课表上生效。 - 「今日」页面的「正在上课」判断同步修正。
注意
- 本版起,发布签名密钥随仓库公开(见
SIGNING.md),
它不再是秘密,请勿把「签名一致」当作「来自官方」的证明。
v1.0.2
修复
- 改用固定签名密钥,修复「装不上新版本」。此前每个 CI runner 都会生成新的调试密钥,
导致每个版本签名都不同,装过旧版就必须先卸载。
从这一版起签名固定,之后的版本可以互相覆盖升级。
注意
⚠️ v1.0.0 / v1.0.1 无法直接升级到本版:那两版用的是两个不同的临时调试密钥。
请先卸载旧版再安装(卸载会丢失已保存的课表链接与缓存)。