开发状态
大约 5 分钟
开发状态
RemoteCI 当前稳定软件版本统一为 3.2.1.2,通信协议号为整数 3;仓库配置了 CI 构建与自动化测试,但尚未完成真机端到端验收。稳定版使用四段纯数字标签,Beta 使用 v3.x.x-beta.y 且不进入插件市场;协议号为 3 的软件可以互连,新功能由能力协商决定是否显示;V2/V4 与 V3 不能直接通信。
已实现(3.2.1.2)
- 服务端:ASP.NET Core Identity、SQLite、PBKDF2 密码哈希、1 小时访问令牌、30 天可撤销设备会话和完整 Razor WebUI。
- 权限:管理员固定拥有全部权限(511);普通用户默认查看当前课程和 WebUI 七日课表,可分别附加概览、人员管理、发送与清除通知、老师来了、换课、扩展功能、主界面和电源控制。
- 同步:服务端是账号与权限唯一真源,插件通过 WebSocket 自动同步不含密码的授权镜像;镜像离线超过 24 小时后只允许课程展示。
- 局域网:使用设备会话派生的验证器完成一次性 HMAC 挑战认证,不发送密码或云端访问令牌。
- 课表:状态按秒推送,七日课表独立低频同步;所有已登录账号均可在 WebUI 和手表查看并手动拉取,拥有换课权限的账号可定时拉取并交换或替换课程,用修订号防止并发覆盖。
- 通知:由 ClassIsland 正式通知提供方显示自定义通知,成功后广播;支持提醒强调特效、音效与语音;旁路观察自动化与第三方插件通知。
- 控制:清除提醒、主界面显隐、电源(关机/重启/睡眠/休眠)与音量(0-100、静音)。
- 扩展:其他 ClassIsland 插件可通过扩展注册表注册远程功能;管理员逐项控制启用及普通账号开放,每个账号可单独设置自己的手表是否展示。
- 界面:手表根画布按系统屏幕形状分别适配圆形与矩形设备,矩形屏不再套用圆形遮罩。
- 连接设置:插件每次连云端都会上报全部可用局域网 IP、监听端口和服务状态;服务端转发并缓存,手表保存候选地址、优先逐个直连且记住成功地址。首次登录也可用 UDP 48765 扫描插件并反向获取云地址,密码仍只发往用户确认后的云服务器;鉴权后直接转为局域网连接,不重复建立云端 WebSocket。插件与手表的云端及局域网关闭开关仅在各自开发者菜单显示,普通设置仍可修改端口,手表连接页也可手动修改 IP 和端口。
- 能力协商:插件和手表上报软件版本与稳定能力标识;WebUI 按“服务端 ∩ 当前主插件”、手表按“三端交集”隐藏不支持的入口,旧 V3 端回退到 V3 基础能力(该基线自 3.1.0 引入),管理员概览显示逐连接诊断。
- 更新:WebUI 与手表可选择正式版/Beta 渠道,并可对同一版本强制重新下载覆盖且拒绝降级;Windows 与裸机 Linux 使用独立更新器规避运行文件锁,Docker 由重启策略拉起,fnOS 从 GitHub Release 下载 FPK 后由应用中心手动升级;服务端只替换实际程序集目录,并在 Development 环境禁用在线覆盖,避免污染源码;稳定渠道只选择四段纯数字 Release,Beta 渠道额外选择 v3.x.x-beta.y,旧三段 v3.x.x 稳定标签不再作为新候选;手表不再受 WebUI 软件小版本上限限制,并正确处理 Android 安装确认回调;插件由 ClassIsland 插件市场管理。
测试与 CI
仓库已配置 GitHub Actions:
- dotnet 作业:
dotnet build RemoteCI.slnx -c Release与dotnet test RemoteCI.slnx -c Release --no-build。 - wearos 作业:
./gradlew :app:assembleDebug :app:testDebugUnitTest。
源码中的自动化测试覆盖配对认证、权限、WebSocket 中转、能力上报与回退、主插件切换和能力交集、插件网络信息发现/实时转发/缓存、首次登录局域网扫描与云地址引导、手表局域网候选地址与端口、插件连接/手表主动拉取课表、拉取周期持久化、换课、通知标题、扩展路由、圆形/矩形屏幕根画布策略、更新渠道与同版本强制覆盖策略、跨协议 Release 排除、Windows 锁文件重试与 Android 安装状态处理。
发布
推送四段纯数字稳定标签(例如 3.2.1.2)或测试用 Beta 标签(例如 v3.2.2-beta.1)会触发 Release 工作流,产出:
- 服务端:linux-x64 与 win-x64 压缩包(
RemoteCI.Server-版本-平台.zip)。 - 插件:稳定版固定使用
RemoteCI.Plugin.cipx与checksums.md;Release 正文包含与该文件名一致的CLASSISLAND_PKG_MD5标记,Beta 包不进入插件市场。 - 手表:
RemoteCI.Watch-版本.apk(配置签名密钥时使用 Release 签名)。 - 飞牛 fnOS:一个在线多架构 FPK、x86_64 与 ARM64 两个单架构离线 FPK,以及
ghcr.io/edge-hh/remoteci多架构镜像。
待真机验收
以下流程需要真机或真实环境完成端到端验证后,文档才能标注为稳定教程:
- 首次硬切迁移需手动安装 3.2.1.2 的服务端或 FPK、ClassIsland 插件和 Wear OS APK;迁移后使用四段稳定标签完成自动更新与连接。
- 插件完成一次性配对并保持云端 WebSocket 连接。
- 手表账号登录、令牌续期和会话撤销通过。
- 新功能在 WebUI 尚未更新或某块手表不支持时按能力交集隐藏,管理员逐连接诊断与主插件切换结果正确。
- 当前状态与七日课表成功同步,通知与振动正确触发。
- 交换、替换课程、音量、电源和扩展命令按权限返回正确结果。
- 局域网优先与云端回退在真机上通过。
- Docker、HTTPS、自动更新、备份和恢复流程完成实际演练。
- 飞牛 fnOS 真机安装在线/离线 FPK、向导配置、桌面入口与应用中心手动升级完成实际演练;ARM64 包目前仅完成 CI/QEMU 验证。