Repository navigation
v0.9.0 "Fishman"
OneTHU v0.9.0 “Fishman”
自 v0.8.0 “Fried Chicken”(2026-09-07)以来的 51 个提交。新增两大页面(邮箱、清华云盘)、寻迹导航与系统日历的多轮实测修复、Android 端三处系统能力接入,以及本版本起生效的版本更新检测。
新增功能
邮箱(新页面)
- 基于 IMAP/SMTP 的校园邮箱客户端:收件箱/已发送双列表、分页加载、正文阅读(HTML 渲染)、标记已读、撰写发送、发件人/主题/正文搜索。
- 邮箱凭据与云日历共用一份配置(授权码一次录入两处生效)。
- 支持收藏「收件箱」「已发送」及进入邮箱的可搜索操作原子。
清华云盘(新页面,Seafile API 完整接入)
- 资料库列表(容量条)、目录浏览(面包屑导航)、文件下载(写入系统下载目录)、文件上传(系统文件选择器,支持多选)、分享链接生成(可设有效期)。
- 按资料库搜索:输入关键词回车触发,等待期显示进度状态与骨架行,返回结果数与耗时。
- Token 配置引导页(网页端一次性生成 Token 粘贴)。
寻迹(地图日程)
- 今日课程/考试/云日历/本地日程按地点聚合到地图(高德瓦片,GCJ-02 坐标对齐),标注显示时间与预计到达耗时,颜色按紧迫度分级。
- 定位:macOS 原生 CoreLocation 桥 + 移动端官方插件 + 12 小时内缓存 + 校园中心四层降级。
- 「前往」按所选交通方式(步行/骑行/驾车)调用高德/腾讯/百度/苹果地图;Android 直跳地图 App(intent 深链,未安装时回退网页版)。
小 OH(ChatDock)与系统级集成
- 底部胶囊形态的助手入口,Android 原生语音输入(SpeechRecognizer 长按会话式转写)。
- 作业 DDL 写入日历(VALARM 提醒)、课表与作业自动上云(CalDAV)。
- 系统日历原生同步:Android CalendarProvider / macOS EventKit,无需配置账户。
OH 助手工具(插件内核)
- 邮箱四件套:查询/阅读/搜索/发送(发送需确认)。
- 云盘四件套:资料库列表/目录浏览/搜索/分享与上传(写操作需确认)。
- 日程四件套:查询/创建/修改/删除。
版本更新检测(本版本起)
- 启动时静默检查 GitHub Releases,有新版本且未忽略时提示一次。
- 设置 → 关于:手动检查、当前/最新版本展示、查看发布页、忽略指定版本。
修复
清华云盘
- 资料库列表重复:服务端四路平铺不去重,同库经多通道返回多条——按 ID 去重并过滤虚拟子库。
- 上传后文件不显示:目录缓存永不过期——改为上传后强制刷新 + 15 秒 TTL 兜底。
- 新上传文件排在列表深处:排序由字典序改为按修改时间倒序,新文件位于文件区顶部。
- 搜索无等待反馈、搜索框无样式:补齐进度提示与统一输入框外观。
寻迹
- 骑行耗时显示为问号:v3 骑行接口对个人 Key 返回 SERVICE_NOT_AVAILABLE,改用 v5。
- Android 端「前往」始终进入驾车路线:废弃 scheme(androidamap://route)不识别交通方式参数,改用现行 amapuri://route/plan/。
- 导航方式固定为驾车:网页版与深链 URI 均未携带交通方式参数,已全链路跟随所选方式。
Android
- 定位静默失败:getCurrentPosition 不请求运行时权限——改为先调用 requestPermissions 触发系统弹窗。
- 下载文件落在应用私有目录:新建 onethu-mobile 插件(Rust + Kotlin),经 MediaStore 写入系统「下载」目录(API 29+;旧机型直写公共目录)。
- 交叉编译失败:imap 默认特性引入的 native-tls/openssl-sys 在 Android NDK 不可用,已去除默认特性。
插件系统与凭据
- 内置 OH 权限自愈重注册时清空用户设置(API Key 需重复粘贴):重注册前快照并恢复 settings。
- HTTP 204/205/304 无体状态被构造为带 body 的响应,导致云端删除/修改操作失败。
系统日历
- macOS 清理旧事件按对象指针匹配不可靠导致重复创建,改为按标题匹配。
- 自动跟随策略改为任何成功同步即开启(未明确停止过);旧配置版本化作废,强制全量重写自愈。
修复(重发版)
系统日历(Android 运行时权限)
- 课程表页「同步到系统日历」直接执行同步,未经过权限请求步骤:Android 上无授权写入被系统拒绝,提示「没有系统日历权限」。现已将权限请求收口到同步入口(所有路径统一):首次点击同步时弹出系统授权窗,授权后写入;拒绝授权时提示可到系统设置重新允许。
CI 构建修复
- 移除包含本机绝对路径的 cargo target-dir 配置文件:该路径在 GitHub Actions runner 上不存在,导致 macOS/Windows 安装包构建失败(权限拒绝)。本地开发构建行为不变(脚本显式注入)。
- macOS 安装包链接失败:新版 clang 对
@available语法生成___isPlatformVersionAtLeast调用(定义在 clang_rt 运行时库),Rust 链接不自动携带该库。已在构建脚本中显式链入(构建期自动定位 clang 资源目录)。
平台产物
- Android arm64 APK(versionCode 9000),Honor 真机验证:启动无崩溃、定位授权、地图深链、系统下载目录写入、日历授权弹窗。
- macOS 桌面端(pnpm tauri:build)。
元数据
- 版本:0.8.0 → 0.9.0(package.json / tauri.conf.json / Cargo.toml 统一)。
- 版本代号:Fishman。