Repository navigation
Releases: joeseesun/qmreader
Release list
v1.0.14 · 后台导出批处理优化
后台快照现在按批次读取文章与中文资产,避免导出时重复逐条加载完整资产,减少备份任务与在线阅读争用资源。
- 保留文章顺序、缓存正文优先级、中文内容及已删除文章过滤;已有单篇读取行为保持兼容。
- 真实数据回归覆盖批量与逐篇读取结果一致性,以及分页阶段不提前加载全文资产。
- 验证:182 项项目测试、8 项可靠性测试通过;GitHub CI 通过;线上健康检查通过,99 个运行文件与发布提交一致。
发布提交:b28ca19028de68115b06396b5974bc2c3dff2908。
QMReader v1.0.13 — 按页读取,减少正文阻塞
中文
修复 API v1 文章列表在分页前为整个候选集合加载中文、译文和阅读统计的问题。现在只为当前页读取这些数据,保留排序、分页游标、搜索范围、权限和响应字段,减少同步数据库工作对正文读取的阻塞。
验证
- 181 项项目测试、8 项网络恢复测试和 3 项 Python 检查通过;新增真实 HTTP 回归在旧实现上失败、新实现上通过。GitHub 分支及 PR 检查均通过。
- 主站已部署 1.0.13,99 个运行文件与发布包摘要一致,健康检查通过。
- 5 条文章列表的服务器内部采样由约 8.92 秒降为 0.666 秒。两个已有中文样本内部返回约 0.007–0.008 秒,公网采样约 0.80–1.56 秒;采样不代表延迟保证,也不能把全部改善归因于代码修改。
- Chrome 管理员登录状态从首页进入 Next Token,首次打开 #7 后完整中文已显示,加载提示消失。
- 生产依赖审计 0 个已知漏洞;不代表服务器安全审计或入侵清理结论。
升级与限制
主站用户刷新页面即可。自部署请保留 data、配置和密钥,使用仓库发布脚本的备份/回滚流程。本版本保持后台预生成策略,不在读取请求中调用 AI。当前宿主环境仍有 CPU 调度压力,未覆盖所有代理/TUN 网络配置。
English
Hydrate translations, rewrites and reading statistics only after selecting the API v1 result page. Preserve filtering, cursor behavior, visibility and response fields while reducing synchronous database work that can block article reads.
Validation: 181 project tests, 8 network recovery tests and 3 Python checks passed; both GitHub checks passed. The regression fails on the old implementation. Production identity and all 99 runtime files match the release archive. Authenticated Chrome navigation rendered the existing Chinese article successfully. Timings are bounded samples, not guarantees; infrastructure pressure remains.
Hosted users can refresh. Self-hosters should preserve data/configuration/secrets and use the backup/rollback deployment flow.
Commit: b112e4f16699db7cf1952a1b4540f100670485f7
Archive SHA-256: 85763aa972118867236584f093277c1ab4a8267a89633ea0b1705d26ff09f792
QMReader v1.0.12 — Reliable article delivery
中文
修复 / 新增
- 先返回正文,再同步已读、阅读计数和附属面板,避免数据库写锁等待拖住本次正文响应;切换文章后不再发送过时的附属请求。
- 修复已有中文内容仍长期停在加载的读取链路。文章深链 HTML 直接携带当前读者可见的原文与中文,正文显示不再等待列表、账户同步或独立改写请求。
- 详情 API 一次返回原文、中文改写与状态;列表打开复用预取,避免重复读取。保留指定贡献版本、权限、失败重试和有界等待行为。
- 文章 HTML / 登录详情 private, no-store;内嵌数据消费一次,已读正文在当前账户内存保留 30 秒/最多 24 篇,切换账户或修改/删除时失效,不写持久缓存。
- 登录读取不再每 6 秒中断并重启同一下载,保留完整的 12 秒总时限;匿名主备线路切换仍然有界。
- 保持后台预生成策略,不在 GET 中调用 AI。
- 修复无 key 键盘事件导致的工作台脚本异常。
验证
- 180 项自动测试、8 项网络恢复测试和 3 项 Python 部署/可靠性检查通过;GitHub 分支与 PR 两轮检查成功。
- 登录状态故障注入:列表等 API 全部 503 时,用户反馈文章仍显示中文,额外详情/改写请求为 0;独立改写 API 503 时,列表打开只用 1 次详情请求。
- 覆盖脚本注入转义、删除文章不可访问、登录态不可共享缓存、无会话凭据嵌入和精确贡献隔离。
未验证
- 不能据此推断所有用户代理或 TUN 配置都已稳定;本版本减少阅读对后续网络请求的依赖。
- 原有采集健康降级不在本次修改范围,没有为验收新增付费 AI 生成。
升级
- 主站已部署本版本;已打开的旧页面刷新即可使用新版。
- 自部署从附件源码包安装,保留 data、配置与密钥;使用仓库部署脚本可备份及回滚。
线上证据与限制
- 运行版本
1.0.12 / 382daae322915ae9a9f86d4de5fe734de7b58c42,99 个运行文件摘要全部一致,生产依赖审计 0 漏洞。 - 问题文章的 HTML、详情和 API v1 均返回完整 5365 字符中文正文及 ready 状态。匿名请求采样:HTML 1.773 秒、详情 1.306 秒、API v1 1.490 秒;这些是采样结果,不是延迟保证。
- 用户原 Chrome 管理员账号从首页进入 Next Token,再首次打开 #7,已显示完整中文(渲染纯文本 4058 字符),加载占位隐藏,截图留证。
- VPS 资源压力仍存在:2 vCPU、负载约 11–15,2 秒采样约 70% CPU steal,曾观察到数据库锁竞争和本机 HTTP 超时。应用修复不等于消除了宿主机资源争抢。本机访问 Cloudflare 备用入口也出现 TLS 握手超时,未认证所有代理/TUN 配置。
- 回滚备份
/opt/qiaomu-backups/qmreader-web-20261028-080348-382daae32291。
English
Fixes / additions
- Return the article body before sending view/read writes and supplementary panel requests, so synchronous writer waits cannot block that article-open response.
- Deliver existing original and Chinese text with the viewer-scoped article HTML. Article reading no longer waits for catalog, account synchronization, or another rewrite request.
- Bundle original, rewrite, and reading status in the detail API; consume prefetched responses and avoid duplicate reads. Preserve exact contribution selection and bounded error recovery.
- Keep the full deadline for authenticated downloads, instead of cancelling and restarting a healthy slow read halfway.
- Reuse delivered bodies for 30 seconds in bounded, account-scoped memory; clear on account changes, edits, or deletion. No persistent storage. Article HTML and authenticated detail responses remain private/no-store. GET requests do not generate AI content.
- Guard the workbench keyboard handler against events without a key.
Validation
180 tests, 8 network recovery cases, and 3 Python deployment/reliability checks passed, together with both GitHub checks. Authenticated browser fault injection confirmed readable Chinese content while supplementary APIs fail.
Not verified
All client proxy/TUN configurations are not covered. Existing collection health degradation is outside this fix; no additional paid AI generation was triggered.
Upgrade
The hosted site runs this release; refresh an existing tab. Self-hosters should preserve data/config/secrets and use the deployment script for backup and rollback.
Commit: 382daae322915ae9a9f86d4de5fe734de7b58c42
Archive SHA-256: eabe1b5ab0b218e22d41d66d67ffea73c6c328104810ed24bebd5132f686c39b
QMReader v1.0.9 · 中文内容自然加载
打开中文文章时先显示加载动画和正文占位,避免短暂误报“没有中文内容”。后台处理完成后自动展示正文,网络失败可重新加载;用户切到原文后,迟到的中文结果不会强行切换视图。
API 增加明确的内容准备状态和重试间隔,精简列表保留中文内容是否就绪。继续使用现有后台预生成策略,读取文章不触发重复 AI 生成。
168 项自动测试、8 项网络恢复测试及 3 项部署/可靠性检查通过,浏览器已验证慢网、排队完成及失败提示。生产已部署 1.0.9 / db65307,99 个运行文件摘要一致;保留数据与配置,具备回滚备份。
本次验证采用已有中文正文和隔离排队夹具,未消耗线上 AI 生成额度。
QMReader v1.0.8 · 阅读网络恢复
公开 RSS 阅读增加直连与 Cloudflare 备用路径的限时恢复,来源列表支持精简传输。保留删除/隐藏即时检查,不缓存私人内容。
160 个自动测试通过;生产部署 1.0.8 / d6985d8,98 个发布文件摘要核验完成,网页实际正文阅读通过。报告用户的具体 TUN 配置尚未复现,备用入口与主站使用相同源站,不代表源站容灾。
QMReader v1.0.7
阅读页只保留一条进度线;鼠标点击按钮不残留外框,键盘导航仍有细焦点提示。左右分栏改为 1px 细线,列表取消多余缩进和双边框,搜索、筛选与文章文字统一对齐。
重写按钮移到顶部收藏前,保留原权限和加载状态;标题与正文之间不再插入操作行。修复用方向键调整分栏时意外切换文章的问题。
验证:151 项 Node 测试、8 项可靠性测试、3 项 Python 检查通过,依赖审计 0 漏洞。浏览器已检查浅色/深色、鼠标/键盘焦点、管理员与普通读者、版本切换、分栏拖动及窄屏布局。320px/375px 为浏览器模拟,未做物理手机测试。
线上服务:https://rss.qiaomu.ai
合并 PR:#38
合并提交:ece0d25b0dafbbfc0b504fe0f06d8ec14a3d928e
CI:https://github.com/joeseesun/qmreader/actions/runs/40461915099
QMReader v1.0.6
阅读工具集中到顶部,原文、译文、中文改写可直接切换,AI 伴读默认收起;保留护眼背景、字体设置与文章目录,窄屏工具栏自动调整布局。
AI 设置新增可搜索的服务目录及 Gemini、Azure、Responses 协议。修复账号请求误用站点公共额度、断流文本被当作完整结果、厂商 Key 自动发送到不匹配服务的问题。ChatGPT/Codex 等账号登录仍默认关闭,真实账号登录未验证。
合并 #25、#35、#36,并保留线上已有的翻译断点续做、文章移动与 AI 路由改进;修复 body-parser、undici 依赖漏洞。
验证:149 项 Node 测试、8 项可靠性测试、3 项 Python 检查及 main CI 通过,依赖审计 0 漏洞。生产 95 个发布文件与合并源码一致;公网版本、健康、文章列表、插件 API 与 141 个订阅源返回正常;5 个主要前端文件公网摘要一致。浏览器已验证线上文章正文、中文改写和阅读设置。375px/320px 为浏览器模拟验收,未做物理手机测试。
线上服务:https://rss.qiaomu.ai
合并提交:660633284c8e0ac144c9dc1f6dbe935d31558125
合并 PR:#37
CI:https://github.com/joeseesun/qmreader/actions/runs/40460049394
QMReader v1.0.5
默认关闭 DeepSeek Flash 思考模式,保留正文输出额度,改善标题翻译和乔木改写的响应速度。
修复网站 AI 额度只累计最大预留、成功调用后不结算的问题,避免尚有实际额度时提前停止生成。每日上限和并发限制保持不变。新增限定时间范围、只补缺项的恢复脚本,保留已有改写。
播客已有 Get笔记完整逐字稿、但公开转写目录暂未收录时,现在可核对来源后继续生成改写;私人逐字稿不通过公开接口返回。
验证:120 项 Node 测试、8 项可靠性测试、3 项部署脚本测试通过;GitHub main CI 通过;生产 83 份发布文件校验一致,服务健康检查正常。
线上服务:https://rss.qiaomu.ai
合并提交:285e4bf3525d067b4ec1129d216725c0e281456a
QMReader v1.0.3
服务器统一使用 deepseek-flash,开启思考并采用 high,覆盖翻译、乔木转写和后台播客任务。
- 修复中文译文因标签间空格差异而丢失链接、代码和列表格式的问题,旧翻译缓存会在下一次生成时刷新。
- 根据整期真实测试调整推理余量和网页默认额度,单次上限 16,384 tokens;每日预算、并发和 Flash 限制继续生效。
- 兼容已有
deepseek-v4-flash配置,保留其他服务的原有参数。
实测:52,951 字逐字稿完成六段提炼和最终成文,约 160 秒生成 4,991 字中文转写,7 次请求均为 Flash/high、HTTP 200、正常结束。部署后标题翻译约 1.4 秒、正文翻译约 3.8 秒,四项真实 API 检查全部通过。以上是单次样本测量。测试结果存入隔离数据库。
验证:113 项网站测试、8 项可靠性测试、3 项 Python 测试、GitHub CI 通过,生产依赖 audit 0。线上 82 个运行文件(含部署标记)已核对,版本接口返回本发布提交。
边界:GetNote 已有逐字稿读取成功;这次没有重新进行音频识别。另有一条既有 GetNote 任务持续返回空稿,属于上游取稿问题。
线上:https://rss.qiaomu.ai
版本:https://rss.qiaomu.ai/api/version
PR:#26
QMReader v1.0.2
修复账户恢复等待:文章继续匿名开放,登录入口立即可用,迟到的账户响应不会覆盖新登录或退出。
- 默认首页随 HTML 返回 40 条公开元数据,减少一次列表请求;保留热门排序和公开资产状态。
- 恢复黑白界面,覆盖浅色、深色与手机布局,更新资源缓存版本。
- 纳入当前生产功能与抓取可靠性源码,整合 API/多机线程 PR joeseesun/qiaomu-ai-rss#80。
- 增加指定 GitHub 提交部署、自动回滚、线上版本查询和恢复手册;修补现有依赖漏洞。
验证:101 项网站回归、8 项可靠性、1 项 health、2 项发布/回滚测试及浏览器验收通过,生产依赖 audit 0。
边界:本机代理/Fake-IP 路径仍可能影响连接;未更改系统代理。四项未实现的旧后台 worker 规格归档为 planned,不计入通过数量。整机数据与凭据恢复需要独立加密备份,本次没有演练销毁恢复。
已上线:https://rss.qiaomu.ai ,版本接口 https://rss.qiaomu.ai/api/version 返回提交 10b3fce16cc468eac46652b714929261efcb9f38。81 个运行代码文件与 GitHub 包摘要一致;正式浏览器首屏实测约 3.6 秒、40 条文章,账户请求后台约 0.67 秒。以上是一次测量,不是性能 SLA。