日程表 Timetable

把日程和课表,
放回你自己的设备里

一个本地优先的日程 / 课程表工具。数据全部存在你自己的设备上 —— 不注册、不登录、不上传、没有云。电脑上它是一块飘在桌面上的气泡区,手机上是同一套界面。

不用注册,打开网页就能开始用。

支持手机「添加到主屏幕」当 App;Windows 可下载独立桌面版(桌面气泡区)。免安装 · 断网也能开 · 当前版本 v0.12.1 · 看真机截图

电脑上的气泡区:今天和明天的日程飘在桌面上,气泡大小是剩余时间、颜色是紧迫程度
真机截图(不是效果图):电脑上的气泡区 —— 气泡越大剩得越多,颜色越红越急。

下载

四个渠道随你挑:网页端最快,安卓 / iOS 装成 App,电脑上是一块飘在桌面的气泡区。安装包都放在下载页,每个文件都带 sha256。

网页端

最简单、推荐先试:不用下载,打开就能用

手机也能用:浏览器打开后「添加到主屏幕」,图标和 App 一样;装成 PWA 之后断网也能开。

打开 timetable-pwa.pages.dev →

安卓

适合长期用:独立 App,能用系统闹钟

安装包用固定密钥签名,以后的新版本能直接覆盖安装。

下载 APK(4.63 MB)→

iOS

需要额外安装步骤:未签名包,七天续一次

要用 SideStore / AltStore 这类工具自己装(不需要开发者账号)—— 下载页里写了 6 步。

下载 iOS 包 →

电脑

适合想让日程一直挂在桌面上的人

Windows 有单文件 exe:双击自己解压再打开,不用装 Node.js(桌面气泡那块悬浮窗也是它)。Linux / macOS 拿源码包直接跑,或者用网页版。

到下载页挑 →

文件都放在本页所在的这个站上(不经过 GitHub);下载页里每个文件都列了 SHA256 和体积,可以自己核一遍。 哪个文件是哪个、电脑版怎么起、iOS 那 6 步,都在下载页。

装好之后,三步用起来

  1. 先打开 最快是网页版:timetable-pwa.pages.dev。想装成 App 就下安卓 / iOS 包,电脑上装 exe。
  2. 把课表弄进去 课表页「课表设置」里可以粘贴 JSON、选 CSV 文件,也能一门一门手加;临时的事直接按 K 说一句「明天下午3点 交作业」。
  3. 让它提醒你 设置 → 提醒里挑提醒强度;电脑端还有一块飘在桌面的气泡区,剩得越少泡越大。

手机装到主屏幕:iPhone 用 Safari 打开 → 分享 → 添加到主屏幕; 安卓用 Chrome 打开 → 右上角 ⋮ → 安装应用 / 添加到主屏幕。

它能做什么

不是又一个"云日历",而是一块一直看得见的时间。

桌面气泡区 + 闹钟

今天、明天要上的课和快到期的日程飘在桌面上:大小 = 还剩多久,颜色 = 事情多大,可拖动、可折叠、可点开看细节。到点由闹钟真响:一次性 / 每天 / 工作日 / 自定义重复,还有倒计时。

课表与日程

课程表支持单双周、多节连堂、按周次范围显示(第 3–17 周的课不会在第 1 周就跑出来);月历、清单、倒数日、标签、回收站都在,逾期的事会自己浮上来。

带走与随身

导出 .ics 塞进手机自带的日历,或把某一天分享成图片;装成 PWA 之后断网也能开,深色、字号三档、极简样式随你挑。

一句话加日程

说一句「明天下午3点 在图书馆 交作业 提前20分钟」,它在本机把标题、时间、地点、提前多久拆好,先给你过一眼再落成泡泡 —— 不联网、不需要模型、不花 API 钱。下面左边是回放(结果就是 App 里真正解析出来的那几样),右边是真机录屏。

点一句试试(回放:结果就是 App 里真正解析出来的那几样)

    拆完先打开编辑框让你过一眼:标题、截止时间、地点、提前多久都在上面, 确认之后才多出一颗新泡泡。认不出来的部分会原样留在标题里 —— 它不会瞎猜着改你的话。

    真机录屏,8.9 秒没剪:说一句话 → 它拆出标题 / 时间 / 地点 / 提前提醒 → 确认 → 气泡出现。

    真机截图

    下面都是这套界面的真实截图(不是效果图)—— 每张下面一句说明它特别在哪儿。

    桌面气泡区:今天和明天的日程飘在桌面上
    桌面气泡区:大小是剩余时间,颜色是紧迫程度
    课程表网格
    课程表:单双周、连堂、按周次范围
    月历视图
    月历:重复日程、倒数日、标签
    闹钟与计时器
    闹钟与计时器
    手机上的样子
    手机上:可以装到主屏幕当 App

    开发者

    源码全部公开(MIT 许可),运行时零依赖 —— 不装任何第三方库,也不用 npm install。

    端下载源码解开后说明
    网页版 / 电脑版timetable-web-pc-v0.12.1-src.zip 1.29 MB184 个文件本机那台 Node 服务 + 网页界面 + 桌面气泡的 C# 源。
    安卓timetable-android-v0.12.1-src.zip 1.38 MB203 个文件Kotlin 原生壳(WebView + 本机服务 + 系统闹钟)+ 共用的 web/ 与 core/。
    iOStimetable-ios-v0.12.1-src.zip 3.56 MB209 个文件Swift 原生壳(WebKit + AlarmKit)+ 共用的 web/ 与 core/。

    三个包一共 6.23 MB;内容就是从公开树(node tools/export-public.mjs 的产物)里导出的,所以网页版跑的就是你下到的这一份代码。

    不会写代码也能改:包里带着一份说明书(AGENTS.md)—— 下面是里面是什么、以及怎么用大白话让它帮你改。

    源码包里有什么?不会写代码怎么改?
    • core/ 是平台无关的纯逻辑 —— 重复规则、提醒排程、逾期判断、气泡选择,没有一行碰浏览器或系统 API,Node 与网页版共用同一份。
    • web/ 是界面(原生 ESM + 手写 CSS,没有框架、没有构建步骤),server/ 是电脑上那个只监听本机的 HTTP 服务。
    • 安卓与 iOS 是两端原生壳,壳只做两件事:把 web/ 与 core/ 拷进包、接到本机服务上;所以这两个包里也带着同一份界面与逻辑。
    • 电脑上那块飘在桌面的气泡区是单文件 C# 窗口程序:tools/desktop-bubbles/DesktopBubbles.cs。

    包里带着说明书 —— 包根的 AGENTS.md 与 .dsh/skills/personalize-timetable/SKILL.md。把解压出来的文件夹当成工作目录, 用大白话告诉它你想要什么(「课程表的颜色淡一点」「第 5 节往后挪十分钟」「提醒别在午休响」), 它会只改最小的那一处、跑一遍自检,然后出预览图给你看改成了什么样(node tools/preview.mjs, 改哪一页就加 --page=课程表),再用 node tools/pack-mine.mjs 打包成一个双击就能跑的文件夹 (加 --target=apk 出安卓包)。看不懂代码也没关系:你只要看图、说「行」或者「再调调」。

    这些源码包是从公开树导出的,和网页版跑的是同一份代码:包里不含官网落地页的截图(shots/)与打包产物(build/)—— 那两样不是源码。

    你的数据在哪里

    只有一处:你自己的设备。

    • 没有账号系统 —— 不用注册、不用登录,也没有"找回密码"这种东西。
    • 没有存你数据的服务端 —— 网页版的数据存在你浏览器的本地存储里;装到手机上之后存在 App 的私有目录里。我们这边没有数据库、没有账号表、也没有备份。
    • 没有埋点、没有统计 —— 这一页本身也不发任何第三方请求:没有 CDN、没有外部字体、没有访问统计。
    • 想带走随时带走 —— 导出 .ics 或分享成图片;数据不会被锁在这个工具里。
    唯一一处要说清楚的:登录学校(1 系统)那一跳

    学校域不给跨域头,网页直接去问会被浏览器挡住,所以托管网页版这一跳会经过本站架在 Cloudflare 上的一个哑管道转发一次。它只做一件事:把这一次请求原样转给学校,再把学校回的原样交回来。三条边界:

    • 只放行四个学校域名 —— 「1 系统」自己的三个(含统一身份认证与 Canvas)加上智慧树,别的域名一律拒;而且只允许 GET / POST,拿它去打别的地址会被直接拒掉。
    • 网址、请求头、请求体、cookie 一律不写日志、不落盘、不加 cookie —— 唯一的记录是转发失败时那一行「哪个域名 + 什么错」,不含网址、不含内容。这段代码是公开的:public/site/relay-worker.mjs。
    • 能不走它就不走 —— 用本机那页(http://127.0.0.1:7080)或手机 App 时,这一跳是你自己的设备直连学校;设备端还能在登录卡上把「允许走云端备用通道」关掉,关掉之后中继一条都不会发(代价:必须连着自己那台电脑才能登)。

    更新

    安装包都放在本站的下载页(不经过 GitHub,也不用加速器),每个文件都带 sha256;源码和历史版本在 Releases。

    v0.12.1 2026-10-16

    闹钟与计时器(一次性 / 每天 / 工作日 / 自定义重复,多档铃声);课程表支持单双周与周次范围; 桌面气泡区的拖动与折叠更稳;深色、字号三档与极简样式;网页版可以直接装到手机主屏幕当 App 用。

    看完整发布记录 →

    常见问题

    要钱吗?

    不要。MIT 许可,源码在 GitHub 上公开,随便看、随便改。

    我的日程会被上传吗?

    不会。日程、课程、闹钟这些只存在你自己的设备上;我们这边没有数据库、没有账号表。唯一会经过本站服务器的是登录学校(1 系统)那一跳 —— 见上面「你的数据在哪里」最后一段,说得比较细。

    登录学校那一下,会经过你们的服务器吗?

    用过本机那页(http://127.0.0.1:7080)或手机 App 的话不会:那一跳是你自己的设备直连学校。托管网页版(手机、电脑上打开的都算)会经过本站的哑管道转发一次 —— 它只放行那四个学校域名、只允许 GET/POST,网址 / 请求头 / 请求体 / cookie 一律不写日志、不落盘、不加 cookie(除了失败时记一行"哪个域名 + 什么错")。代码公开在 public/site/relay-worker.mjs,你随时可以自己看。

    网页版和下载的 App 是同一个东西吗?

    是同一套界面和同一份核心逻辑。App 多出来的主要是"系统级"能力:到点真的响的闹钟、桌面气泡区、以及跟着系统走的通知。

    怎么把课表弄进去?

    手加最直接;课程多的话可以粘贴一份标准 JSON(格式说明在仓库 README 里),或者用列表视图批量加。

    换手机会丢数据吗?

    本机数据不会自己飞过去,所以要自己带:网页版可以导出 .ics,安卓端还有一条 USB 单向同步(电脑 → 手机)。