Mini-HBUT
Education
$0.99 · Designed for iPad. Not verified for macOS.
Mini-HBUT 是独立开发、社区维护的开源学生工具,帮助你更方便地查看校园学习相关信息。
【重要说明】
本应用不是任何学校或教育机构的官方系统、官方网站或官方客户端,不由任何学校开发、运营、赞助或背书。产品名称与 Bundle ID 仅为历史技术标识,不代表机构背书。
【主要功能】
• 今日课表与周课表浏览
• 成绩与绩点信息查看
• 考试安排
• 空教室查询
• 学业进度、培养方案与校历
• 图书馆与校园地图(兴趣点浏览)
• 通知与数据导出
• 设置、隐私与数据说明
【审核演示账号】
用户名:reviewer
密码:Test2026
登录后进入演示模式,使用本地虚构数据,不连接真实校园业务系统。
【支持与隐私】
官网与文档:https://hbut.6661111.xyz
隐私政策:https://hbut.6661111.xyz/privacy
开源仓库:https://github.com/superdaobo/mini-hbut
免费核心能力 + 可选一次性购买(若已配置)。持续改进中,欢迎反馈。
more Mini-HBUT v1.4.12 更新说明
发布日期:2026-10-07
版本概览
相对 v1.4.11,本版本完整落地“湖工游乐场”史诗(Epic #900),并完成登录体验治理、后端多域故障转移、iOS 冷启动取证与历史 issue 收口。
主要更新:
- 湖工游乐场全量上线:统一 Game Center、Game SDK、十款小游戏迁移、可信五子棋、积分中心、总排行榜、漂流瓶,并保留旧版经典榜兼容。
- 游戏身份与安全:接入 Identity game scope 与资源受限 JWT、设备签名换票、宿主来源 fail closed、standalone 零远程、未确认会话一律游客态。
- 登录体验治理(Epic #927):成绩同步移出登录关键路径,单飞门失联自愈,增加登录中状态,空学期与冷却降噪。
- 教务会话判定修复:CAS 登录后 JWXT 会话落地失败不再误报“会话已过期”,CAS service 改为 /admin/caslogin。
- 后端多域故障转移:引入端点组模型,主域 mini.hbut.site 加唯一兜底域,统一切换到生产后端。
- iOS 冷启动取证与入口瘦身:补齐“JS 之前”原生耗时、首帧 FCP/LCP、启动历史与主线程冻结心跳,入口 chunk 瘦身。
- 历史 issue 批量收口:处理 24 个遗留 issue,覆盖 P2 遗留、AI 导入、课表可见性、独立 bug。
- 数据统计 V2 服务端实现。
- 工程与 CI:新增 Game Platform 跨平台集成 Gate、dev 测试版安装包发 QQ 群 workflow。
湖工游乐场(Epic #900)
统一 Game Center 与 Game SDK:新增“更多 - 湖工游乐场”入口与五 Tab Game Center 页面;抽离统一 Mini-HBUT Game SDK,替代各游戏 game_rank.js;Game Center 改为 capability-driven UI;新增 3 个发布控制 flag。
协议与信任边界:冻结 Game Platform V2 协议、信任模型、兼容契约与游戏注册表;客户端灰度默认关闭 + fail closed + 稳定分桶;standalone 显式 origin 白名单、会话前置、零 V2 请求;宿主来源 fail closed,修复 location.origin === "null" 兜底;服务目标收口到单一环境权威。
游戏身份与授权:Identity 新增 game scope 与 resource-scoped JWT;客户端以设备签名换短期令牌,仅存内存不落盘;修正 Tauri 命令参数为 camelCase。
十款小游戏迁移:hecheng_hugongda、jump_out_hbut、hbut_2048、clumsy_bird_hbut、hbut_miner、hbut_memory_match、hbut_monopoly、hbut_stack、hbut_parking、hbut_match3;收口 9 个硬编码测试域,无 rank_api 时 fail closed。
可信五子棋:接入可信比赛记录与赛果采纳,服务端独立复算 move 序列;relay 请求携带身份绑定凭证,堵住 peer_id 代打漏洞。
积分中心、总排行榜与漂流瓶:积分中心(XP / 等级 / 湖工币)与总排行榜 UI;漂流瓶真实 UI 与快捷入口;服务端建立 XP / Level / 湖工币 / 每日任务与奖励结算,以及漂流瓶 UGC、红包 escrow 与举报治理。
会话与身份隔离:未确认会话一律游客态,离线冷启动不展示上一用户身份,不注入缓存学号;无会话不得以上一用户身份展示或提交,席位 403 机器码取值收口。
旧版兼容:保留 /api/game-rank 经典榜,建立 V2 dual-write 与旧版保护层;修复 Legacy 字段保真,经典榜存原始 ended_reason,补回 jump_out 的 run_id。
登录与认证
登录体验治理(Epic #927):成绩同步移出登录关键路径,登录耗时约 20s 降至 9s;单飞门失联自愈,90s 无响应不再永久占死;新增“登录中”状态;空学期与冷却降噪。
教务会话落地判定与错误分类(#984):修正 /admin/login 的“已登录”误判;区分“会话未落地”与“会话已过期”;CAS service 统一改为 /admin/caslogin。
学术会话过期时保留登录身份:教务会话过期不再连带清空登录身份,重新进入无需完整登录。
后端多域与故障转移
引入后端端点组(endpoint groups)模型,支持组级原子切换;收敛为两域模型:主域 mini.hbut.site + 唯一兜底域 mini-hbut-ocr-service.hf.space;故障转移策略:4xx 不切换、冷却 300s、不做后台探活;非 release 构建不再被强制指向已停用测试后端;客户端与游戏 SDK 默认端点统一切换到生产域。
启动可观测性与 iOS 冷启动取证(#991)
补齐“JS 之前”原生前置耗时,让启动时间线从进程启动开始可测;记录首帧 FCP / LCP 与启动历史;新增主线程冻结心跳;启动页阶段时间线 + 设置页一键复制诊断信息;修复“启动完成后突然崩溃”取证缺口;让开屏动画开关对原生启动页生效;入口 chunk 瘦身:i18n 语言包与 html2canvas 移出启动静态图,html2canvas 改为函数内动态 import。
历史 issue 批量收口
一次性处理 24 个遗留 issue,覆盖 P2 遗留、AI 导入、课表可见性、独立 bug。iOS 深链与“更多”页:修复 iOS 深链注册;“更多”页改为总面板;修复徽章、积分基址、文案、身份丢失。首页今日安排布局:修复长课程名溢出卡片、与“去上课”按钮重叠,并补布局契约测试。图标子集与 dev 字体:子集字形集合改为源码自动扫描并加契约护栏;修复 dev 下软链接 node_modules 导致的字体 403。
数据统计与工程
实现 Statistics V2 服务端能力。新增 Game Platform 跨平台集成 Gate 脚本,覆盖 Android / iOS / 桌面三端。新增手动触发的 dev 测试版安装包发 QQ 群 workflow。
已知限制
- Android 桌面 Widget 原生桥仍处于熔断状态。1.4.11 为规避 Android 启动闪退(#894)暂时熔断 Tauri Android 的 Widget JS 到 Rust/JNI 原生写入桥,本版本尚未恢复。Android Widget 可能继续显示旧快照,无法随 App 课表 / 主题变化及时更新。Kotlin / Java / Manifest 基础代码与 XML 写入串行化机制仍保留,待定位并重构 native bridge 后恢复。
- 湖工游乐场处于灰度控制之下。Game Platform 发布控制默认关闭并 fail closed,实际放量由远程配置 flag 与分桶决定。未开启时用户看不到游乐场入口。
版本信息
版本号:1.4.12;标签:v1.4.12;上一版本:v1.4.11;统计:提交 40 个,变更文件 411 个,+69,714 / -7,053 行。
1.4.12 6d ago
Mini-HBUT v1.4.11 更新说明
发布日期:2026-09-23
版本概览
相对 v1.4.10,本版本重点完成了课表向“时间画布”升级、个人日程完整闭环、课程管理增强、研究生学号兼容、日语界面支持,以及 Android / iOS / Windows 多项稳定性修复。
本版本主要完成:
1、课表进化为时间画布:课程与个人日程统一进入同一时间轴,支持添加、编辑、删除、冲突提示、提醒、ICS 导出与真实时间布局
2、课表视图与添加交互升级:新增「全部 / 课表 / 日程」三态筛选,空白区域改为“两段式选择,再确认添加”,减少误触
3、个人日程纳入外围体验:首页「今日安排」、云同步、JSON / 长图 / ICS 导出均支持个人日程
4、课程管理增强:教务导入课程支持隐藏、恢复,并可选择「仅移除本周」或「移除整学期」
5、账号兼容增强:研究生 9 位学号与本科生 10 位学号统一兼容登录、缓存、路由、云同步与统计链路
6、新增日语界面:在简体中文、English 基础上新增日本語
7、稳定性与平台体验修复:修复 iOS 长后台恢复、导出中心白屏、课表空白选择偏移、Windows 关闭键行为、Android 小游戏 404 容灾等问题
8、Android 启动闪退止血:针对 beta.504–507 的主页面启动闪退,1.4.11 暂时熔断 Tauri Android Widget 原生桥,以稳定启动为优先
9、发布前依赖安全升级:Vitest 工具链升级至 4.1.11,修复 GHSA-82fw-gwwq-j7x9;同时将 rustls 升级至 0.23.45,修复 RUSTSEC-2026-0285
课表与个人日程
时间画布与个人日程闭环(Epic #833)
课表页面不再只表达“第几节上什么课”,而是升级为能够同时容纳课程和真实时间日程的时间画布。
1、新增独立的个人日程数据模型与本地持久化,不与自定义课程混用
2、课程和日程统一映射到同一时间轴,日程可跨越课表虚线,不受固定节次限制
3、支持个人日程新增、详情、编辑、删除与冲突提示
4、冲突判断统一复用同一套时间区间算法,避免详情、编辑器和课表布局各自实现
5、本地提醒与课程 / 考试提醒共用同一调度与配额体系
6、ICS 导出同时包含课程和个人日程
7、超出可视时间范围的日程使用 edge indicator 表达;部分超出范围时仍保留可见部分
8、针对快速切周、切账号和退出登录补强 stale response 防护
三态筛选
课表工具新增视图显示模式:
1、全部:同时显示课程与个人日程
2、课表:只显示课程
3、日程:只显示个人日程
筛选发生在布局输入层,而不是简单 CSS 隐藏,所以被过滤的内容不会继续占用 lane / overlap 布局空间。用户选择会本地持久化。
空白区域两段式添加
空白课表区域的添加交互改为:第一次点击,选中虚线时间块;第二次确认,打开统一「添加安排」。
1、点击其它空白位置只移动选区,不立即打开弹窗
2、Course 与 Event 各自保留预填草稿
3、双节课程按 1–2、3–4、5–6、7–8、9–10 自动吸附
4、在「日程」视图下默认创建 Event,在「全部 / 课表」视图下默认创建 Course
5、修复 5–6 节等位置待选框与真实课表行存在偏移的问题,并统一上下边界
个人日程同步到首页、云端与导出
1、首页「今日安排」现在会把个人日程与课程统一按时间排序
2、个人日程进入手动与自动云同步
3、云端旧数据如果没有 events 字段,会保留本地个人日程,不误清空
4、JSON / 长图导出纳入个人日程
5、周 / 学期 ICS 继续同时导出课程与日程
6、账号切换后的旧请求不会覆盖当前账号数据
教务课程隐藏 / 恢复 / 按周移除
课程管理页进一步区分教务课程和自添加课程:
1、支持将教务导入课程标记为隐藏
2、支持恢复此前隐藏的教务课程
3、删除教务课程时可选择:仅移除本周,或移除整学期
4、仍保留原始教务数据,避免因为本地管理操作破坏后续刷新能力
国际化与账号兼容
新增日本語
Mini-HBUT 现支持:
1、简体中文
2、English
3、日本語
本轮课表 / 日程新增文案同步覆盖三种语言。
研究生 9 位学号兼容
此前多个链路硬编码为 10 位学号,导致研究生账号无法完整登录或恢复。
1.4.11 将学号基础契约统一为:
1、研究生:9 位纯数字
2、本科生:10 位纯数字
并同步覆盖:
1、登录与学习通自动登录
2、remembered username
3、Session 恢复
4、Hash 路由
5、云同步
6、使用统计
7、学号脱敏显示
稳定性与体验修复
iOS 长后台恢复
针对 App 在后台停留较长时间后回前台可能卡死或不可交互的问题,本版本补强:
1、原生 window focus 信号辅助 WebView lifecycle
2、长 idle 后对当前页面进行 soft remount
3、清理可能残留的 home-scroll-restoring 交互锁
4、增加恢复路径健康检查与调试 breadcrumb
同时修复:
1、导出中心首次进入可能因 computed ref 使用错误而白屏
2、「我的 - 开源说明」错误显示字面 strong 标签
3、iOS 日程日期 / 时间输入框横向溢出
Windows 关闭按钮
Windows 桌面端右上角关闭按钮恢复为真正的一键退出,不再误走“返回”或要求二次确认。
Android 小游戏 404 容灾
针对 Android「更多 - 小游戏」出现 404 / Not Found 的问题:
1、主 CDN 失效时可自动刷新 manifest
2、针对旧缓存与版本目录裁剪做容灾
3、必要时切换备用来源
4、避免直接把 404 页面暴露给用户
Android 启动闪退与 Widget 已知限制
在 1.4.11 测试周期中,Android beta.504–507 出现了“主页面显示后立即闪退”的严重回归。
经过多轮真机 A/B:
1、beta.507 已取消整学期 schedule_index 大快照,仍会闪退
2、beta.508 将 Tauri Android 的 Widget JS 到 Rust/JNI 原生桥整体熔断后,实机确认不再闪退
因此 1.4.11 采取稳定性优先策略:Tauri Android 的桌面 Widget 原生写入 / 刷新桥在本版本暂时停用。
这意味着 Android 桌面 Widget 在 1.4.11 中可能继续显示旧快照或无法随着 App 课表 / 主题变化及时更新。Widget 的 Kotlin / Java / Manifest 基础代码仍保留,后续版本会在定位并重构 native bridge 后恢复同步能力。
同时保留了此前为 Widget 增加的 XML 写入串行化与唯一临时文件机制,以避免后续恢复时再次出现并发 read-modify-write 竞态。
工程与发布流程
发布前依赖安全升级
1、vitest / @vitest/coverage-v8 升级至 4.1.11
2、修复 @vitest/mocker 的 GHSA-82fw-gwwq-j7x9 路径穿越 / 任意文件读取公告
3、发布门禁重新验证客户端与官网依赖,npm audit 均为 0 漏洞
4、rustls 从 0.23.36 升级至 0.23.45,并同步更新 rustls-webpki 至 0.103.15
5、修复 RUSTSEC-2026-0285(TLS 1.3 handshake messages incorrectly accepted across encryption level boundaries)
TestFlight / Dev 构建版本
1、修复 TestFlight 版本自动选择逻辑
2、统一 Dev Build 各平台 beta 编号
3、TestFlight build number 继续由 App Store Connect 实际状态决定,避免历史超大 build number 干扰
QQ 官方机器人发布通知
正式 Release 的网站部署成功后,现在可自动:
1、读取当前正式 Release
2、渲染 Release Notes 截图
3、发送版本公告
4、发送 Android APK
5、发送 Windows NSIS 安装包
通知被安排在 deploy-website 成功之后,避免出现“网站尚未部署完成但群里已提前推送”的竞态。
1.4.11 Sep 23
Mini HBUT 1.4.10 更新说明
本次更新于 2026 年 9 月 16 日发布,主要内容如下。
一 AI 课表导入第一版
新增外部 AI 到 Mini HBUT 的课表转换层。你可以把豆包、ChatGPT、通义等外部 AI 识别出的课表结果直接粘贴或从文件导入。应用会完成容错解析、合并去重、冲突检测、智能配色、双模式预览和批量写入,不再需要逐门手工录入。该功能不接入外部 AI 接口,也不上传课表截图,避免密钥、费用、供应商绑定和隐私问题。本次还加入导入入口、提示词复制、解析协议、重复与冲突分析、智能配色、两阶段预览、真实课表布局预览、批量写入和集成测试,并补充简体中文和英文词条。生产级批量事务端点和多端真机验收将在后续版本继续完善。
二 移动端顶部安全区修复
解决滚动内容穿透状态栏和吸顶标题栏穿模的问题。安全区改为固定留白,Android 端由原生注入真实状态栏高度,并修复高分辨率设备安全区被放大的回归问题。
三 Windows 深链协议注册守卫
修复开发启动会劫持 minihbut 协议注册、导致门户深链唤起空白窗口并覆写正式安装版注册表项的问题。正式版和 Linux 端行为不变。
四 AI 导入解析容错增强
放宽视觉等价但码点不同的横杠类分隔符,避免合法节次被误判。数值校验仍然严格,解析失败时可直接定位到具体条目和字段。
五 Android 构建链路修复
持续集成不再请求已下架的工具包,避免发版构建失败。
六 依赖安全升级
修复官网依赖中的 1 个严重和 2 个高危安全公告,依赖审计恢复通过。
本次更新提升了课表导入效率、移动端显示效果、开发与发版稳定性以及依赖安全性。建议更新。
1.4.10 Sep 17
本版本聚焦界面国际化与一批稳定性修复。
新增 • 界面全面支持双语切换:简体中文(默认)与 English,可在设置中选择语言 • 缴电费入口下新增“仅演示”提醒,正式缴费请在 i 湖工完成
修复 • 授权记录页在接口报错时不再一直加载,错误信息更明确 • 校园网认证失败时如实提示,不再出现“显示已登录、实际未联网”的情况 • 小组件跨天后日期不再滞后,会及时刷新 • 小组件背景支持半透明,并跟随应用的深浅色模式 • 课表添加课程时不再误报“名称为空” • 开屏页设置更可靠,深浅色正确跟随系统
1.4.9 Sep 7
Mini-HBUT v1.4.8 更新说明
发布日期:2026-09-01
- 版本概览
相对 v1.4.7,本版本聚焦账户切换、课表学期体验和教务查询显示细节,并同步收紧发布前的安全依赖与工程质量门禁。
本版本主要完成:
多账号并存与一键切换:支持多个教务账号安全保存、快速切换和切换后的全量数据刷新,减少重复登录和手动清理缓存的成本
课表与学期切换体验改进:课表划分线调整为更清晰的稀疏虚线,行距保持对齐;学期切换改为按开学日期驱动,提前进入新学期时不再错误回跳
空教室查询显示优化:将查询结果中的楼栋显示名映射为更易读的“一教/二教”等名称,同时保留教务系统原始值用于数据处理
通知与缓存稳定性保持:延续 v1.4.7 的通知去重、课表预取和多端同步能力,新增的账号切换流程会触发完整刷新,避免旧账号数据残留
安全与工程治理:升级存在安全公告的 h2 依赖,完成 Axios 路由和通知检查模块拆分,并通过严格文件规模门禁
- 修复与体验改进
- 多账号切换与会话
新增多账号并存能力:已保存账号可以在应用内直接切换,不必重复输入凭据(#755、#756)
切换账号后自动刷新当前账号相关数据,降低成绩、课表、考试等页面继续显示旧账号内容的风险
账号凭据继续交由系统 keyring 管理,不在前端明文保存敏感凭据
- 课表与学期
课表划分线改为稀疏虚线,减少视觉干扰,同时保持网格行距和课程定位稳定(#749、#752)
学期切换依据开学日期驱动,提前进入新学期时不再自动回跳到旧学期(#750、#751)
- 教务查询
空教室查询结果使用“一教/二教”等友好楼栋名称,教务系统原始 jxlmc 值仍被保留(#753、#754)
- 安全与稳定性
将 Rust 依赖 h2 从 0.4.14 升级至 0.4.16,修复空 DATA 帧相关安全公告影响的依赖版本
账号切换过程复用 keyring 和会话边界,切换后执行全量刷新,避免跨账号数据串联
保持学校消息、学习通通知、成绩和考试提醒的去重语义不变
- 工程治理与 CI
拆分 Axios 校园码路由与通知中心电费检查逻辑,消除超大源文件并清空 God-file 债务
发布候选继续执行类型检查、前端测试、Rust 测试、依赖审计、CodeQL、Release Readiness 和多平台构建
Release notes 由仓库内版本文件提供,正式 Release 使用本文件作为发布说明
1.4.8 Sep 2
校内证书异常也能正常使用:教务、成绩、电费、一码通照常访问,我的页自动提示兼容模式。学习通通知独立提醒,与学校消息区分查看。首页宽屏双栏,今日安排与快捷入口并排。开学季自动切换本学期课表,校历起始周对齐。用电趋势按月升序、横向滚动看全部月份。登录更稳:错误提示清晰、二维码完整、失效深链不阻塞。
1.4.7 Aug 29
版本总览
自 v1.4.4 起,本版本合入两个发布窗口的全部改进:在新增「智慧迎新」模块、全面升级界面动效的同时,大幅提升课程中心加载性能;并完成成绩数据通道统一、数据库原子写入与备份、网络请求可靠性优化,以及内容安全策略(CSP)等一轮系统级安全加固。数据更稳、打开更快、用着更安心。
新功能
1. 智慧迎新:首页新增「智慧迎新」入口,只读展示迎新相关信息,界面沿用成绩页风格并适配深色模式,无需登录也可浏览。
2. 界面动效焕新:引入统一的 iOS 风格动效体系——视图切换前进上滑、返回下滑、Tab 淡入;弹窗支持遮罩淡入、弹簧缓入与完整离场动画;登录遮罩、每日秘钥、退出确认、公告详情等高频弹窗全部升级;同时尊重系统「减弱动态效果」设置。
3. 课程中心性能升级:课程列表在所有平台改为分批渲染(先显示 20 门),滚动自动加载更多,配合 iOS 首帧渐进渲染与请求量收敛,大幅缩短首屏等待、消除长列表卡顿。
修复与体验优化
1. 学习通课程中心:修复学期筛选、视频播放与进度统计,视频、文档类型显示正确。
2. 个人信息页:学工附属信息图标差异化展示;离线横幅改为仅由学生基本信息决定,不再误报;登录记录失败时独立提示,刷新按钮更可靠。
3. 登录与会话:未勾选「记住密码」也能自动重登;会话过期判断改由后端数据库验证,红灯误判明显减少。
4. 其他模块细节:校历会话失败与离线粘滞修复;校园导览直达地图;电费换房后用电趋势与空态文案修正;小塔出行单次拉车与图标定位修复;审核模式下自动隐藏学习通一码通等敏感模块。
安全与隐私
1. 启用内容安全策略(CSP),前端权限最小化,本地 API 访问集中管控。
2. 敏感数据存储、日志与调试信息处理全面加固,60 条 CodeQL 安全告警全部收口。
3. 更新检查逻辑修正:开发版不再被同核心正式版误判为可更新。
稳定性与可靠性
1. 成绩模块统一:Tauri 与 HTTP 双通道共用同一成绩服务,抓取、教师合并、整表替换缓存,失败时保留离线快照,教师信息后台补齐;官方绩点优先,待录入、缺考、缓考、免修等成绩状态展示准确。
2. 数据可靠性:数据库原子写入、统一超时策略、并发写保护,并新增显式、原子、可校验且有限保留的自动备份能力。
3. 网络可靠性:核心请求超时、维护状态分类、SWR 退避与跨实例缓存失效处理。
4. 质量保障:全量类型检查归零、架构防回归检查上线,发布流程与 Windows 冒烟门禁强化。
版本信息
版本号:1.4.6(发布日期 2026-08-04)
统计:合入 PR 4 个,关闭 Issue 6 个
完整变更:https://github.com/superdaobo/mini-hbut/compare/v1.4.4...v1.4.6
1.4.6 Aug 5
【1.4.4 更新说明】
• 个人信息更完整
班导师、辅导员、宿舍信息并入「个人信息」页,登录后即可只读查看;无需再从首页单独找入口。
• 智慧迎新能力收敛
相关只读信息与门户会话打通,展示官方已有内容,不支持填报与提交。
• 课表自定义颜色
支持为课程设定颜色并记住偏好,课表更易区分。
• 后台更稳
优化长时间挂后台后的恢复与本地服务保活,降低返回后接口不可用、内嵌页异常等问题。
• 校园服务修复
电费绑定与相关链路、学习通登录与资料访问等稳定性改进。
• 界面与体验
隐私/关于、学业相关页面等视觉与交互打磨;官网与更新渠道同步维护。
感谢使用 Mini-HBUT。如有问题欢迎反馈,我们会持续改进
1.4.4 Jul 24
Mini-HBUT v1.4.12 更新说明
发布日期:2026-10-07
版本概览
相对 v1.4.11,本版本完整落地“湖工游乐场”史诗(Epic #900),并完成登录体验治理、后端多域故障转移、iOS 冷启动取证与历史 issue 收口。
主要更新:
- 湖工游乐场全量上线:统一 Game Center、Game SDK、十款小游戏迁移、可信五子棋、积分中心、总排行榜、漂流瓶,并保留旧版经典榜兼容。
- 游戏身份与安全:接入 Identity game scope 与资源受限 JWT、设备签名换票、宿主来源 fail closed、standalone 零远程、未确认会话一律游客态。
- 登录体验治理(Epic #927):成绩同步移出登录关键路径,单飞门失联自愈,增加登录中状态,空学期与冷却降噪。
- 教务会话判定修复:CAS 登录后 JWXT 会话落地失败不再误报“会话已过期”,CAS service 改为 /admin/caslogin。
- 后端多域故障转移:引入端点组模型,主域 mini.hbut.site 加唯一兜底域,统一切换到生产后端。
- iOS 冷启动取证与入口瘦身:补齐“JS 之前”原生耗时、首帧 FCP/LCP、启动历史与主线程冻结心跳,入口 chunk 瘦身。
- 历史 issue 批量收口:处理 24 个遗留 issue,覆盖 P2 遗留、AI 导入、课表可见性、独立 bug。
- 数据统计 V2 服务端实现。
- 工程与 CI:新增 Game Platform 跨平台集成 Gate、dev 测试版安装包发 QQ 群 workflow。
湖工游乐场(Epic #900)
统一 Game Center 与 Game SDK:新增“更多 - 湖工游乐场”入口与五 Tab Game Center 页面;抽离统一 Mini-HBUT Game SDK,替代各游戏 game_rank.js;Game Center 改为 capability-driven UI;新增 3 个发布控制 flag。
协议与信任边界:冻结 Game Platform V2 协议、信任模型、兼容契约与游戏注册表;客户端灰度默认关闭 + fail closed + 稳定分桶;standalone 显式 origin 白名单、会话前置、零 V2 请求;宿主来源 fail closed,修复 location.origin === "null" 兜底;服务目标收口到单一环境权威。
游戏身份与授权:Identity 新增 game scope 与 resource-scoped JWT;客户端以设备签名换短期令牌,仅存内存不落盘;修正 Tauri 命令参数为 camelCase。
十款小游戏迁移:hecheng_hugongda、jump_out_hbut、hbut_2048、clumsy_bird_hbut、hbut_miner、hbut_memory_match、hbut_monopoly、hbut_stack、hbut_parking、hbut_match3;收口 9 个硬编码测试域,无 rank_api 时 fail closed。
可信五子棋:接入可信比赛记录与赛果采纳,服务端独立复算 move 序列;relay 请求携带身份绑定凭证,堵住 peer_id 代打漏洞。
积分中心、总排行榜与漂流瓶:积分中心(XP / 等级 / 湖工币)与总排行榜 UI;漂流瓶真实 UI 与快捷入口;服务端建立 XP / Level / 湖工币 / 每日任务与奖励结算,以及漂流瓶 UGC、红包 escrow 与举报治理。
会话与身份隔离:未确认会话一律游客态,离线冷启动不展示上一用户身份,不注入缓存学号;无会话不得以上一用户身份展示或提交,席位 403 机器码取值收口。
旧版兼容:保留 /api/game-rank 经典榜,建立 V2 dual-write 与旧版保护层;修复 Legacy 字段保真,经典榜存原始 ended_reason,补回 jump_out 的 run_id。
登录与认证
登录体验治理(Epic #927):成绩同步移出登录关键路径,登录耗时约 20s 降至 9s;单飞门失联自愈,90s 无响应不再永久占死;新增“登录中”状态;空学期与冷却降噪。
教务会话落地判定与错误分类(#984):修正 /admin/login 的“已登录”误判;区分“会话未落地”与“会话已过期”;CAS service 统一改为 /admin/caslogin。
学术会话过期时保留登录身份:教务会话过期不再连带清空登录身份,重新进入无需完整登录。
后端多域与故障转移
引入后端端点组(endpoint groups)模型,支持组级原子切换;收敛为两域模型:主域 mini.hbut.site + 唯一兜底域 mini-hbut-ocr-service.hf.space;故障转移策略:4xx 不切换、冷却 300s、不做后台探活;非 release 构建不再被强制指向已停用测试后端;客户端与游戏 SDK 默认端点统一切换到生产域。
启动可观测性与 iOS 冷启动取证(#991)
补齐“JS 之前”原生前置耗时,让启动时间线从进程启动开始可测;记录首帧 FCP / LCP 与启动历史;新增主线程冻结心跳;启动页阶段时间线 + 设置页一键复制诊断信息;修复“启动完成后突然崩溃”取证缺口;让开屏动画开关对原生启动页生效;入口 chunk 瘦身:i18n 语言包与 html2canvas 移出启动静态图,html2canvas 改为函数内动态 import。
历史 issue 批量收口
一次性处理 24 个遗留 issue,覆盖 P2 遗留、AI 导入、课表可见性、独立 bug。iOS 深链与“更多”页:修复 iOS 深链注册;“更多”页改为总面板;修复徽章、积分基址、文案、身份丢失。首页今日安排布局:修复长课程名溢出卡片、与“去上课”按钮重叠,并补布局契约测试。图标子集与 dev 字体:子集字形集合改为源码自动扫描并加契约护栏;修复 dev 下软链接 node_modules 导致的字体 403。
数据统计与工程
实现 Statistics V2 服务端能力。新增 Game Platform 跨平台集成 Gate 脚本,覆盖 Android / iOS / 桌面三端。新增手动触发的 dev 测试版安装包发 QQ 群 workflow。
已知限制
- Android 桌面 Widget 原生桥仍处于熔断状态。1.4.11 为规避 Android 启动闪退(#894)暂时熔断 Tauri Android 的 Widget JS 到 Rust/JNI 原生写入桥,本版本尚未恢复。Android Widget 可能继续显示旧快照,无法随 App 课表 / 主题变化及时更新。Kotlin / Java / Manifest 基础代码与 XML 写入串行化机制仍保留,待定位并重构 native bridge 后恢复。
- 湖工游乐场处于灰度控制之下。Game Platform 发布控制默认关闭并 fail closed,实际放量由远程配置 flag 与分桶决定。未开启时用户看不到游乐场入口。
版本信息
版本号:1.4.12;标签:v1.4.12;上一版本:v1.4.11;统计:提交 40 个,变更文件 411 个,+69,714 / -7,053 行。
more Version 1.4.12 6d ago
Data Linked to You The following data may be collected and linked to your identity: