Repository navigation
Releases: warpdotsys/reader-dev
Release list
Reader Pro v6.1.0
Reader Pro v6.1.0 — Java/Kotlin 恢复主线
本版本恢复长期维护 Java/Kotlin 混合工程,不继续全量 Go/Rust 重写。默认分支为 legacy;业务和原版存储兼容优先,旧工程及原始 JAR 保留作对照。
正式发布状态(2026-10-15)
正式 Release已于 03:21:47 UTC 由GitHub 托管续发流程创建。应用标签提交 cc4593a 和原制品不变;续发只修复发布基础设施,没有重建或重跑阅读测试。
GHCR ghcr.io/warpdotsys/reader-dev 与 Docker Hub warpdotsys/reader-pro-restored 的双架构清单均为 sha256:b7b1316cc5f1c97fe058405707ac8998c4600b594fcffdc1e202ecba8fbbafe5。40 个小发布文件摘要已独立重算,32 份报告与验收制品逐字节相同;JAR 的 GitHub 计算摘要与下述已校验同字节 JAR 一致。
生产部署未成功。 部署在 SSH 22 端口连接阶段超时,没有成功激活回执;因该步骤包含数次连接且无逐条检查点,远端目录 / 快照 / 容器状态仍须核实,不能盲目重跑。真实生产账号登录及本次回滚演练尚未验收。整条 run 因部署失败为 failure,不能只展示发布绿灯宣告上线。交付与阻断。
主要变更
- 完整 Reader 镜像内置固定版本 Camoufox、Python、JRE 与依赖;运行不需要宿主 Chrome 或独立 WebView 容器。历史远程引擎保留为显式回退。
- 镜像默认 Vue 3,沿用 Rust 分支的设计语言,保留 Java/Kotlin 登录、用户空间、书架、书源与阅读接口。原 Vue 2 和普通 JAR 的兼容入口保留。
- 修复 EPUB 完整页面退出时的任务清理,分离下载、解压与结果传递诊断;资源按有确认的批次传递,使用有界共享缓冲视图减少传递对象。不丢弃资源、不截断正文。
- 修复合法 DEFLATE 在输出块边界被误判为截断的问题;截断、尾随垃圾、长度谎报及膨胀攻击仍拒绝。
- 保持下载 60 秒、创建 Worker 起共 15 秒及测试观察 30 秒;没有放宽原资源预算或更改正式 JVM 参数来取得通过。
- 统一版本 6.1.0,JAR MANIFEST 写入确定性版本;保留 Gradle Wrapper、可读源码、锁定依赖和双 clean 字节一致门禁。
- 正式制品由 GitHub 托管 runner 构建、原生双架构测试和新 runner 重载验证;发布器导入同一已验证归档,不重新构建替代。
验证与制品身份
候选源码 8a4a2c2,测试快照 7555ca9;已经 PR #56 合入 legacy,合并提交 1890d28 与候选源码树完全一致。
| 已独立接受的候选范围 | 结果 |
|---|---|
| Java / Kotlin | 222 项,35 项既有环境跳过,零失败;两次 clean JAR 完整字节相同。跳过不算覆盖 |
| 前端 / 浏览器 / Python | 完整 405 项前端、25 项实际 Chromium、14 种登录布局;807 项 Python,零跳过 |
| 双架构准确整镜像 | AMD64 / ARM64 原生及新 runner 重载,各三轮八场景,共 96 个生成大书场景 |
| 唯一获准真实书 | 默认镜像严格 8/8;读取 B26 真实生成账号 / 存储,实际界面登录、会话与导入,完整正文 / 标题比较;副本与生成数据已清理 |
| 固定公开 Gutenberg 三方 | 详情 / 28 项目录 / 前两节的完整非时钟 ReturnData;另行真实 DOM 脚本 / 生成 Cookie / 两用户 / 清除及 TLS / 出网负控 |
| 同候选双架构离线长测 | 分别连续 1803.534 / 1805.925 秒,104 / 111 轮,424 / 452 次成功搜索;三类故障注入后恢复及独立清理 |
候选 JAR:285,684,839 B,SHA-256 b4954ac70229f4514146b8e077909874bfc5aeee779f71fde903622638ed1ee0;包内 Worker SHA-256 836bd2aeac73558efc8bbc521675e9ad88249e34c7fc9fd4b5933930b5be6d1e。
完整范围及 Actions 链接、候选机器证据、候选长测证据。最终标签构建已独立执行发布前置门禁,正式镜像自己的 96 个生成场景及制品身份见正式发布证据。候选真实书和长测仍限于各自镜像;发布成功不等于生产实际登录验收成功。
已知问题
- 起点真实登录态的搜索和免费首章未验证。用户已停止个人 Chrome 路径,不再连接、提取其会话或要求配合;不复用已清理 Cookie,不购买章节或自动验证码。匿名公开页及生成账号测试不算真实站点认证。
- 大书兼容仍是有限样本。当前候选的生成 96 场景及授权书 8/8 已通过,但不证明全部 EPUB、所有原版 storage 或冷态 / 长期生产稳定。此前 80 候选真实书 6/8 的 15 秒传递超时及更早失败保留于对应证据,不被改记成功;也不直接当作当前候选已复现相同故障。
- 半小时长测静止内存增长分别为 63,176,704 / 45,727,744 B。未触及硬内存 / OOM / PID 限额,且故障后自有浏览器子进程清零;仍不能宣称长期无泄漏或证明生产容量。这是后端 / 包内浏览器生成请求长测,不是前端 EPUB 连续阅读。
- 当前许可证服务源码的试用邮件接口明确返回“未配置”错误;未完成线上发送或许可证激活验收,不宣称 SMTP 可用。公钥匹配、健康接口和首页 HTTP 200 仅属前置检查。本机访问生产域名曾超时,服务器侧严格 TLS 访问正常,原因尚未证明。
- 保留有意兼容差异:原 JAR 的 Book 请求共用 default 空间,恢复版隔离用户;历史 Cookie 不重放,当前重放后可清除;历史 UTF-8 POST 损坏、忽略 TLS 错误的行为不继续复制。时钟字段在各自真实请求窗口内验证,不要求字面相等,不宣传完全兼容。
- 所有第三方书源、边缘业务和前端页面尚未穷尽;备用 cli.gradle 不是正式构建。缓存导出实测超过 60 秒,不宣称严格总上限或因果加速。测试的 2 CPU / 硬 2 GiB 不自动等于生产 Compose 已配置同样限额。
- 当前 Java/Kotlin 后端没有 OPDS 路由或独立 OPDS 账号的持久化 / 隔离模型。Vue 3 对该设置明确报不支持,不写替代密码、不显示伪造的保存成功;这项功能尚未交付。此条为标签后的文档澄清,正式标签及制品不移动,公开 Release 说明同步补充。
- 当前生产 SSH 连接不可达:GitHub runner 超时、本机及现有代理在认证前断开,独立 DNS 均指向 50.114.172.103;原因尚未证明。内置浏览器访问生产版本元数据也未成功。软件发布不等于线上故障修复;需恢复 SSH 后核实状态、只重跑部署并完成真实登录与回滚验证,不重装或删除 storage。
构建与发布
本机保留输入的构建入口(PowerShell 7,恢复工程目录):
pwsh -NoProfile -File .\scripts\build.ps1普通 JAR 不自带完整浏览器运行时。正式标签必须来自 legacy、为严格稳定 SemVer、高于当时最新正式版并与所有版本清单一致。GitHub Actions 验证完整 Vue 3、准确双架构整镜像及发布器,再发布 GitHub Release、GHCR 与 Docker Hub;不以手工构建代替。
部署与回滚
阅读域名:read.medwarp.cn;许可证中心:license.medwarp.cn。生产根目录 /opt/reader-pro-restored。
部署按已发布不可变 digest 拉取并核验,停旧实例前确认空间、旧镜像及一致数据快照。失败时保留失败存储救援,再恢复旧镜像和原快照;不直接覆盖原数据。需要分别确认健康、公开版本 / 构建提交、实际界面登录及关键业务,不能只凭 HTTP 200 宣告上线正常。最终部署与回滚结果以本次 Actions 回执和独立观察为准,不能移借历史演练。
保留原始 B26 JAR、只读备份、旧 Go/Rust 工程和用户所有未提交文件;私有正文不进入 Git、公开证据或发布制品。Vue 2 可用 READER_APP_WEBUI=vue2 回退,但不把它当作全部业务问题的解决方案。部署与回滚说明。
Reader Pro v4.0.7-restored.8
Reader Pro v4.0.7-restored.8
本版继续维护 Java/Kotlin 恢复工程,不包含 Go/Rust 全量重写。构建、部署和 GitHub Release 均通过 GitHub 托管 runner 完成。
本次修复
- 修复搜索结果 JSON 额外暴露内部
_userNameSpace字段;补充序列化单测。 - 修正多书源搜索和换源 SSE 在扫描完最后一个书源时仍返回
isEnd=false的零基索引错误;补充索引边界单测。 - 增加固定本机书源和线上现有真实书源的可重复黑盒差分脚本。原始 JAR 始终保留作对照,不修改生产用户数据。
发布前验证
- JDK 11 下
clean test bootJar成功。 - 原始 JAR 与恢复版:认证生命周期 11 项完全一致;文件/本地阅读 25 项中 23 项一致、2 项已记录改进;固定远程书源 8 项中 5 项一致、3 项已记录差异。
- 线上现有真实书源:两版搜索 100 条、目录 1914 章、首章正文 2852 字符,搜索书目、详情关键字段、全部目录项和正文摘要一致。
- 两种 SSE 均收到真正的
event: end;事件数据一致,终帧isEnd仅恢复版按正确边界返回true。这是有意修复,不伪称与原 JAR 字节完全一致。 - 当前已部署服务的匿名、只读搜索和详情可访问;搜索仍有本版将移除的内部字段。发布后需再次验证线上响应。
已知问题与验证边界
- 线上登录后的目录、正文、书架及缓存链路尚未在本版发布前执行生产端到端验证。现有 accessToken 自动登录会改写
users.json的最后登录时间,因此未把它包装成纯只读探针。 - 部分已保存第三方书源本身失效或受站点规则变化影响:实测有两版共同的目录为空、脚本异常、空搜索结果和重定向循环。这些不是本版已解决的问题。
- EPUB/PDF/CBZ、大文件、WebDAV、完整 SSE 多书源并发和所有第三方书源仍未系统性覆盖。
- 原始 JAR 在书架中文字符上存在乱码,恢复版保留编码修复;正文末尾换行等已记录差异仍需客户端兼容观察。
- 许可证中心为旧中心失效后的兼容重建,不能保证覆盖未观察到的旧协议行为。前端继续使用 JAR 内旧版界面,尚未接入 master 的 Vue 3 设计。
部署与回滚
部署作业会校验制品 SHA-256,保留前一版 JAR、镜像和 Nginx 配置;健康检查、UTF-8 静态资源校验或公网烟雾测试失败时自动回滚。发布不迁移或覆盖 storage/data。生产域名:https://read.medwarp.cn。
Reader Pro v4.0.7-restored.7
Reader Pro v4.0.7-restored.7
这是恢复版的安全补丁发布,重点修复请求日志可能记录认证信息的问题。构建与部署均使用 GitHub 托管 Runner,不使用生产服务器上的自托管 Runner。
本次发布
- 停止记录请求查询参数,避免
accessToken、secureKey等认证信息进入应用日志。 - 停止记录请求正文,避免登录密码及其他业务数据进入应用日志。
- 请求日志只保留 HTTP 方法、规范化路径、响应状态码和耗时。
- 过滤路径中的回车、换行和制表符,并限制日志路径长度,防止日志注入和异常放大。
- 增加查询参数脱敏和控制字符处理的自动化回归测试。
- 生产部署将应用日志目录收紧为
750、日志文件收紧为640。 - 生产 SSH 关闭密码和键盘交互认证,root 仅允许公钥认证,并限制单来源预认证并发。
- 发布制品上传支持断点续传、连接保活和退避重试。
- 部署作业使用 GitHub 的 macOS 托管 Runner,以避开 Ubuntu 托管 Runner 当前到生产 VPS 的异常入站路由。
- 生产镜像从已验证的只读运行时基线叠加新 JAR,不再在发布窗口依赖不可用的 Docker Hub 镜像代理。
已验证
- Windows/JDK 11 环境执行
clean test bootJar成功。 - 新增日志安全回归测试通过。
- 生产服务器标准 22 端口的公钥登录在 SSH 加固后验证成功。
- macOS GitHub 托管 Runner 已成功连接生产服务器并完成 73 MB 制品上传与 SHA-256 校验。
- 运行时基线的离线覆盖构建已在独立测试镜像上通过,保留非 root 用户、入口命令和 Temurin JRE 11。
- GitHub Actions 会再次执行干净构建、生产健康检查、UTF-8 静态资源校验和公网烟雾测试。
安全说明
v4.0.7-restored.1 的应用日志可能包含请求查询参数和较短的请求正文。本次部署完成后会对服务器上受影响的历史应用日志做定点脱敏,并验证测试用敏感标记不会再次写入日志。建议曾复用登录密码的用户更换该密码;本项目不会在发布过程中自动修改用户数据或凭据。
生产 SSH 已禁用密码登录。后续服务器管理必须使用已配置的 SSH 公钥。
已知问题与验证边界
- 这是恢复版本:部分实现来自与原始 JAR 接近但不保证同版的源码,仍需继续做黑盒差分验证。
- WebDAV、SSE 长连接、大文件下载、第三方书源和全部写接口尚未完成系统性回归。
- 许可证中心是为失效旧中心重新实现的兼容服务,不保证覆盖旧中心所有未观察到的协议行为。
- 前端暂时保留 JAR 内旧版界面;尚未接入 Rust/master 分支的 Vue 3 设计。
- 当前只对一个有效账户完成端到端登录与数据读取验证,其他账户及极端数据尚待覆盖。
- 服务器既有 Nginx 配置存在与本项目无关的
cdn.medwarp.cn重复server_name警告;不影响本域名启动,但应另行清理。 - 离线生产镜像依赖服务器上保留的
runtime-jdk11-jammy-v1基线;若迁移到新服务器,需要先从已验证镜像归档恢复该基线,或在可访问 Docker Hub 时重新构建。
发布记录说明
v4.0.7-restored.2 至 .5 没有激活生产部署;.6 已完成制品上传和 SHA-256 校验,但拉取 Docker 基础镜像元数据时 TLS 超时,流水线自动回滚至 .1。为保持 Git 标签不可变,本版本使用新的 .7 标签和离线运行时基线发布。
回滚
生产部署在替换前保存上一版 JAR、Docker 镜像和 Nginx 配置。健康检查、UTF-8 校验或公网烟雾测试失败时,流水线会自动恢复上一版本。历史日志脱敏属于独立的安全处置,不随应用版本回滚恢复敏感内容。
Reader Pro v4.0.7-restored.1
Reader Pro v4.0.7-restored.1
这是从 reader-pro-3.2.14.jar、可验证的历史源码和人工整理代码恢复出的首个可重复构建版本。该版本继续维护 Java/Kotlin 混合工程,不是 Go/Rust 重写版,也不宣称与原始闭源构建逐字节一致。
本次发布
- 恢复 Gradle Wrapper、JDK 11、Kotlin、Spring Boot 与 Vert.x 构建链。
- 保留原版前端与现有
storage/data数据格式。 - 将许可证中心切换到自托管的
license.medwarp.cn。 - 修复 Windows 构建时 Gradle 使用系统默认编码处理 UTF-8 Vue 资源,导致界面中文乱码的问题。
- 增加静态资源严格 UTF-8 回归测试和 PWA 缓存代际更新。
- 增加 GitHub Actions 的测试、制品校验、生产部署、失败回滚及 GitHub Release 流程。
已验证
- Gradle 全量测试和 Boot JAR 构建成功。
- 核心前端 JS 可按严格 UTF-8 解码。
- 首页与
/reader3/getSystemInfo可访问。 - 一个导入账户的登录、accessToken、用户信息、169 项书架和 429 项书源已验证。
- 55,692 个数据文件、780,079,185 字节已导入并复核。
- 生产容器健康检查、公网 HTTPS 和证书续期验证通过。
已知问题与验证边界
- 这是恢复版本:部分实现来自与 JAR 接近但不保证同版的源码,仍需继续做黑盒差分验证。
- WebDAV、SSE 长连接、大文件下载、第三方书源和全部写接口尚未完成系统性回归。
- 许可证中心是为失效旧中心重新实现的兼容服务,不保证覆盖旧中心所有未观察到的协议行为。
- 前端暂时保留 JAR 内旧版界面;尚未接入 Rust/master 分支的 Vue 3 设计。
- 当前只对一个有效账户完成端到端登录与数据读取验证,其他账户及极端数据尚待覆盖。
- 服务器既有 Nginx 配置存在与本项目无关的
cdn.medwarp.cn重复server_name警告;不影响本域名启动,但应另行清理。
升级提示
本次修复会切换 PWA 缓存代际。已打开页面通常刷新一次即可获取新资源;如果浏览器仍显示旧乱码,请执行一次强制刷新。
回滚
生产部署在替换前保存上一版 JAR、Docker 镜像和 Nginx 配置。健康检查、UTF-8 校验或公网烟雾测试失败时,流水线会自动恢复上一版本。