Releases: lingion/sleepy
Releases · lingion/sleepy
Sleepy v1.0.21 — 课程颜色自定义 + 网格修复 + 小组件刷新
v1.0.21 更新内容(自 v1.0.20 以来全部改动)
🎨 课程颜色
- 自动配色:按 course.id × 黄金角 137.5° 确定性分配 HSL 色相,每门课颜色不同,不再按关键词撞色
- 自定义颜色:编辑课程 → 颜色行点"+"→ 弹出 HSV 调色盘(饱和度/明度面板 + 360° 色相条)
- 用户选的颜色优先于自动分配,不选则走自动色
📋 网格视图修复
- 修复时间栏塌缩:10 节长课不再将时间栏压成一个卡片,每节独立显示
- 修复滚动失效:全部节次可自由滚动
- 架构重写:BoxWithConstraints + Modifier.offset 绝对定位
- 修复列对齐:消除 weight Round 累积误差
- 修复 startNode=3 卡片缺失
- 移除空 cell 占位符
📥 导入功能
- 导入预览对话框
- 外部 app 打开 JSON 自动弹预览
- 无课表时可直接导入
📊 "我的"页面
- 课程数从行数改为去重门数
📅 当前周独立
- 切课表视图查看不同周次,不再改变真实当前周
🔄 小组件刷新修复
- 根因:
WidgetUpdater只刷新 Glance widget,完全漏了 RemoteViews 版(Bitmap/Canvas)的 WeekGridWidgetProvider - 修复:编辑课程/换课表后两套小组件都强制刷新
- Glance widget 加 3 次重试(500ms 间隔),不再静默吞异常
🔧 构建
- applicationId 还原为
com.lingion.sleepy.debug
下载
app-arm64-v8a-debug.apk— arm64 真机app-armeabi-v7a-debug.apk— arm32 真机app-x86_64-debug.apk— x86_64 模拟器
Sleepy v1.0.20 — 提醒重做 + 关于页面
v1.0.20 更新内容
提醒功能重做
- 移除首次启动权限弹窗:不再下载即问权限
- 独立提醒页面:「我的」→「提醒」跳转(原行内 toggle 改为导航项)
- Master toggle 权限流:默认关闭 → 点击开启 → 请求通知权限 → 拒绝则回弹关闭 → 可反复请求(非一次性)
- 每日提醒:自定义任意时间,内容动态生成——「今日X号 您有N节课 第一节课XX于XX:XX在XX教室上课」
- 每节课前提醒:自由输入分钟数(胶囊型输入框),内容——「下节课XX于XX:XX在XX教室上课」
关于页面
- 版本信息(版本号 + 构建号)
- 作者 Lingion(可跳转 GitHub 主页)
- 开源地址 github.com/lingion/sleepy
- GPL v3.0 开源声明
下载
app-arm64-v8a-debug.apk— arm64 真机app-x86_64-debug.apk— x86_64 模拟器
Sleepy v1.0.19 (新 logo + 滑动切周)
v1.0.19 更新内容
新功能
- 新 App 图标 — 全局替换为全新紫色 logo
- 左右滑动切换周次 — 周视图和网格视图都支持手指左右滑动切换上一周/下一周
- 从右往左拨 → 下一周
- 从左往右拨 → 上一周
- TopBar 箭头和下拉选周菜单与滑动双向同步(程序化切换瞬切,手势滑动有动画)
v1.0.17-18 累积更新
- 完整导出功能 + 4 widget 真实渲染 + README 重写(v1.0.17)
- 智慧节次编辑器(v1.0.16)
- 导入课表改为 ModalBottomSheet 弹窗(v1.0.18)
- 新建课表改为"点保存才生效"语义
- 修复点"新建课表"时管理页"当前课表"卡片跳动
其他
- App icon 背景色: #6750A4 → #1A1A2E 深紫黑
- settings.gradle.kts: FAIL_ON_PROJECT_REPOS → PREFER_SETTINGS
- JDK 21 构建
Sleepy v1.0.18 (patch)
v1.0.18 累计更新
教务导入 — wakeup.fun 全量整合
- 183 所学校接入:来自 WakeupSchedule_BUPT 真实 URL+type 数据库
- 每所学校均带真实教务 URL + 协议类型(wisedu/zf/qz/urp 等)
- HEU 哈尔滨工程大学实测打通:登录页真实可达,金智教务直连
- 协议类型覆盖:zf_new / zf / qz / qz_with_node / urp_new / urp / qz_br / cf / hnust / zf_1 / qz_crazy / pku / bnuz / wisedu / hniu / qz_old
学校列表 UI
- 顶部总数统计:共 183 所
- 搜索框支持中文子串 + 拼音首字母(如 hrbeu)
- 实时匹配数显示
主页
- 第 N 周按钮:Material3 DropdownMenu (FlowRow 5列标签网格)
- 周次快速切换 / 不在当前周自动回弹
桌面小组件
- Today / TwoDay 全部课程可滚动 (LazyColumn 替代 MAX_COURSES 截断)
- PinWidgetActivity 支持 4 种 widget
修复
- 导出文本/ICS 双向解析
- 切换课表小组件自动刷新
- 新建课表直接显示新表
GitHub: https://github.com/lingion/sleepy/releases/tag/v1.0.18
v1.0.17 完整导出 + 4 widget 真实渲染 + README 重写
v1.0.17 完整导出功能 + 4 widget 真实渲染 + README 重写
新增:完整导出课表(替换原"开发中"占位)
- WakeUp 兼容 JSON(结构完整,可被同类 App 导入)
- 分享文本(URL 编码 JSON,可粘贴聊天工具)
- ICS 日历(标准 iCalendar,可导入系统日历 / Google / Apple Calendar)
- 文件自动写入设备
Download/Sleepy/,触发系统分享面板
修复:Widget 选表 bug
WidgetTableResolver之前优先选"非默认表",跳过真正的默认表数据- 修复后优先选有课的非空表
- 4 类 widget 全部显示真实课程数据(不再显示 24 节暴力 mock)
文档:README 完全重写
- 18 张截图全部为真实 HEU 课表(17 门 + 编译原理 18 周)
- 三视图(周/网格/今日)一一对应
- 4 个 widget 各 1 张独立截图
- 删除多格式导入节(无截图)
- 导出节配真实截图
包名/版本
- versionCode 16 → 17
- versionName 1.0.16 → 1.0.17
- 包名仍为
com.lingion.sleepy.debug - APK 20MB(arm64-v8a debug 变体)
v1.0.16 智慧节次
v1.0.16 智慧节次(自动模式)+ 课表空态修复
修复重大 bug:去掉自动创建的占位默认表
- 用户无表时 app 偷偷建了"默认课表 1"做占位
- 用户手动建"默认课表 2"设了节次后,app 仍把"默认课表 1"
当作默认表,导致节次看不到、加课不显示 - "空课表也是课表",应该有自己的节次和视图
改动
- ScheduleViewModel.loadTables(): 空表时不再自动建占位,selectedTableId = null
- ScheduleViewModel.createEmptyTable(): 第一张表自动 isDefault=true(避免出现无默认表)
- ScheduleViewModel.addEmptyCourse(): 没表时自动建表再加课
- AddCourseScreen 保存: 没表自动建,drafts 的 tableId 用真实 id 修正
- ScheduleScreen 区分两种空态:
- 没表 → "还没有课表" + 两个 CTA(去管理 / 手动创建)
- 有表无课 → "「表名」还是空的" + 加课/导入 CTA
新功能:智慧节次(自动模式)
- 节次编辑器顶部 [手动模式]/[自动模式] Tab 切换
- 三个字段驱动整日节次:每节时长 + 总节数 + 小课间/大课间模板
- Break 分组卡片:每个 break 模板下显示 1.5, 2.5, ..., (N-1).5 位置卡片
- 跨组互斥:同一 transition 只能属于一个 break
- 默认 0 分钟:未选中的 transition = 0 分钟(连续上课)
- 实时预览
历史修复
- v1.0.16-1:点击自动模式 Tab 直接闪退
- v1.0.16-2:包名
com.lingion.sleepy.debug,APK 20.4MB (debug variant)
数据模型
- SmartPeriodConfig: startTime/periodMinutes/totalPeriods/breaks/transitionAssignments
- BreakOption: minutes + isLong + label
测试
- 30 + 7 = 37 用例全部通过
APK
- sleepy-v1.0.16-2-arm64-v8a.apk (md5: e99bab9e15f6bae2501527b42a79b0a8)
- 20.4MB, versionCode 16, versionName 1.0.16-debug
- applicationId com.lingion.sleepy.debug
v1.0.15 干净重开版 - 哈工程金智Wisedu
干净重开 v1.0.15
修复
- 哈工程教务系统导入:从零重写为金智 Wisedu jwapp 协议
JwWiseduParser: 解析 xskcb.do JSON → 46 个 JwCourse(多节拆分)WISEDU_FETCH_JS: WebView 内 fetch 完整链路- GET wdkb app 入口初始化 session(避免 module API 403)
- POST dqxnxq 拿当前学期
- POST xskcb 拿 34 行课表
- 实测验证:CAS 登录 → fetch 链 → 34 行完整数据
节次时间
- 不硬编码任何学校节次时间
TimeSlotEditor在第一次导入时让用户确认(已有组件)- 节次数(KSJC/JSJC)从 xskcb API 拿
技术
- versionName 1.0.9 → 1.0.15, versionCode 9 → 15
- 30/30 单元测试通过
- arm64-v8a only (20.4 MB)
- md5:
b0b46d9f1bbe6e1d33008277a24cf7e7
API 端点
- CAS:
https://cas.hrbeu.edu.cn/cas/login - 教务:
https://jwgl.hrbeu.edu.cn/jwapp/sys/wdkb/*default/index.do - 当前学期:
POST /jwapp/sys/wdkb/modules/jshkcb/dqxnxq.do - 课表:
POST /jwapp/sys/wdkb/modules/xskcb/xskcb.do(XNXQDM form data)
v1.0.14: HEU 13节节次预设 + 教务导入流程补全 + RELEASE 整改
v1.0.14
新增
- HEU 13 节节次时间预设: 哈工程入口自动预填 13 节时间表 (5 大节, 2025-2026-2 实测)
JwSchoolInfo新增timeJson字段JwImportConfigScreen接受initialTimeJson预填
修复
- 教务导入流程补全 (所有学校通用): 之前 WebView 抓数据 → 解析 → 直接落库 → Snackbar → finish(), 缺节次时间/开始日期/表名配置
- 现在流程: 解析 → 配置页 (节次时间 + 开始日期 + 表名) → 确认 → 落库
RELEASE 整改
- 删 14 个
v1.0.16-rebuild-*脏 release + tag - 删
v1.0.4空 release - 新增
RELEASE_POLICY.md(semver 强制规范) - 修复
build.gradle.kts版本号与 HEAD 不匹配 (v1.0.9 → v1.0.14, versionCode 9 → 14)
构建
- APK:
sleepy-v1.0.14-arm64-release.apk(13.7 MB) - versionCode: 14
- versionName: 1.0.14
- commit: 767b30c
- tag: v1.0.14
v1.0.13: 教务导入流程补全配置页 (修复导入即跳回 bug)
v1.0.13
修复
- 教务导入流程补全 (所有学校通用): 之前 WebView 抓数据 → 解析 → 直接落库 → Snackbar → finish(), 缺节次时间/开始日期/表名配置
- 现在流程: 解析 → 配置页 (节次时间 + 开始日期 + 表名) → 确认 → 落库
- 用户感知: 选学校 → WebView 登录 → 点导入 → 配置页弹出 (而不是回到学校列表)
构建
- APK:
sleepy-v1.0.13-arm64-release.apk - versionCode: 13
- versionName: 1.0.13
- commit: ad882c8
- tag: v1.0.13
v1.0.12: HEU 教务导入 (金智 Wisedu 协议)
v1.0.12
新增
- 哈工程教务系统课表导入: 金智 Wisedu 协议支持
JwWiseduParser: 解析 xskcb.do 返回的 JSON (KCM/SKJS/JASMC/SKXQ/KSJC/JSJC/SKZC/XNXQDM)schools.jsonHEU 入口协议从urp_new(HTML解析) 改为金智jwapp(JSON API)
修复
urp_new协议对金智 Wisedu 系统必然失败 (HTML 结构完全不同)- HEU 学号/密码在 WebView 输入 → 自动登录 → 自动抓 xskcb JSON → 解析为标准课程模型
构建
- APK:
sleepy-v1.0.12-arm64-release.apk - versionCode: 12
- versionName: 1.0.12
- commit: 912f03a
- tag: v1.0.12