一个本地优先的日程 / 课程表工具:电脑上是网页 + 一块飘在桌面上的气泡区, 手机上是一个 App(安卓 / iOS 各自是一个原生外壳,里面跑的是同一份界面与同一份核心逻辑)。 数据全部存在你自己的设备上 —— 不注册、不登录、不上传、没有云。
.apk 下载:请点右上角 ⋯ → 在浏览器打开,再点下面的下载按钮。
安卓:装的时候系统会问一次「允许安装未知应用」。这个包用一把固定的密钥签名, 所以以后的版本能直接覆盖安装,数据不会丢。
那个 demo 是气泡面板那一块的网页演示(同一套界面),刷新就回到初始数据;它可能比最新版旧一点。
扫码,或者用手机浏览器打开:
4shy4.github.io/bubble-schedule/install.html
这个码指向的就是你正在看的这一页(不是直接指向 .apk):因为微信会拦安装包,iPhone 又用不上它 —— 先落到这里,才知道自己该走哪条路。
闹钟走系统闹钟(能穿透省电模式);日程存在 App 的私有目录里。
这个 APK 是安卓的,iPhone 用不上。你有两条路:
① 网页版(只想在手机上看看、用用):
在你自己的电脑上把程序跑起来(git clone 后 node server/main.js --lan,
启动日志里会打印一个局域网地址),然后在 iPhone 的 Safari 里打开那个地址 →
分享 → 添加到主屏幕。它就是一个能全屏、能收通知(iOS 16.4+)的网页版,
数据仍然在你自己电脑上。
② 原生 App(想要真闹钟):
ios/ 是一个 Swift 外壳(AlarmKit + WebKit),仓库里没有预编译的 IPA,
也不提供免签名的安装方式 —— 需要你自己装 Xcode、生成工程、填上你自己的签名再装。
点右上角 ⋯ → 在浏览器打开。微信会拦掉 .apk 下载,这不是页面坏了。
网页 demo 在微信里是能直接玩的(它只是个网页);要装 App 就得先出微信。
当前版本 v0.12.1(以 Releases 页面上的数字为准):
Timetable-Android-0.12.1.apk整个文件的 SHA-256:
2bea24e8b26f41bcf39b7f5ddd44dd1e7037d9ad80a5426746e088cee24236f7
自己算一遍:
certutil -hashfile Timetable-Android-0.12.1.apk SHA256shasum -a 256 Timetable-Android-0.12.1.apk对不上就别装 —— 说明这个文件不是发布的那一个(可能是下载被中间劫持或截断了)。
data/(db.json / fired.json / server.log)没有账号、没有埋点、没有服务端。这个下载页同样是单文件、零外部资源 —— 打开它不会向任何第三方发请求。