Skip to content

v1.5.55

Choose a tag to compare

@fnthinklevi fnthinklevi released this 14 Aug 10:43
· 14 commits to main since this release

v1.5.55 - 2026-08-14

Server酱 / PushPlus 渠道 + 桌面小部件一键启停推送

🔗 Server酱 / PushPlus 渠道:新增两个国内推送平台。Server酱走 POST form 提交(application/x-www-form-urlencoded,title/desp 放请求体,避免含验证码/短信正文的内容进入 URL 被代理或日志留存),PushPlus 从 URL query 提取 token 注入 body 后 POST JSON;host 精确匹配自动识别(sctapi.ftqq.com / www.pushplus.plus、pushplus.plus),与 Telegram/Bark 相同使用平台自身鉴权(SendKey/Token),无需签名密钥;响应按平台返回码判定成功(Server酱 code==0、PushPlus code==200)。
🪟 桌面小部件「推送开关」:桌面一键开启/暂停推送服务,复用 PushToggleManager 启停机制,点击整卡切换状态并同步刷新前台通知按钮;更多页新增引导入口,按国内外各品牌(小米/华为/OPPO/vivo/三星/原生等)提供手动添加路径说明。

服务端模块化拆分 + HTTP 契约测试 + Webhook 保存链路测试

🏗️ 服务端模块化拆分server.js 由 1249 行单文件按职责拆分为 lib/ 分层(store.js 存储持久化 / otp.js TOTP 封装 / middleware.js 中间件 / routes/auth.js+routes/version.js 路由 / app.js 组装),入口文件仅保留启动与优雅关闭;app 独立导出,测试可直接 require 发起真实 HTTP 请求。
🧪 服务端 HTTP 契约测试auth.test.js 由纯逻辑验证重写为真实 HTTP 请求测试(supertest 直连 app,25 个用例),覆盖安全头(CSP/nosniff/无 X-Powered-By)、会话(注销吊销/过期)、版本配置保存链路(POST 落盘 → GET 读回)、TOTP 全流程(setup/enable/OTP 与恢复码登录/恢复码一次性消费)、IP 封锁(第 5 次失败 403 + 公开接口豁免)。
🔗 Webhook 保存链路测试:Flutter 端新增 WebhookChannelStore 抽象层 + WebhookService 构造注入(默认仍走 SQLCipher 加密库),测试覆盖「UI 通道 → DB 行 → 原生同步」完整链路:setWebhookChannels 全量下发(含 url/secret/类型/启用状态)、setWebhookUrls 仅下发启用通道 URL、DB 行标准化与历史 "null" 脏数据过滤。
⚙️ Jest ESM 兼容:otplib 依赖链 @scure/base / @noble/hashes 为纯 ESM 包(Node ≥22 可运行、Jest 默认无法解析),新增 babel.config.js + transformIgnorePatterns 白名单,服务端测试可正常运行。

Full Changelog: 1.5.53...1.5.55