Repository navigation
Releases: Jaaayden/feedlantern
Releases · Jaaayden/feedlantern
Release list
FeedLantern v0.11.0 · 日志合并与仪表盘趋势图
抓取日志
- 结果相同的连续检查合并为一条日志:来源、成败、有效条数、翻页信息、错误、规则预警和通知状态都与上一条一致且没有新增内容时,只在该条上记录“连续 N 次结果相同”和最近一次检查时间,不再逐次新增。条数变化、出现新内容、来源变化或成败切换仍单独成条;持续失败且原因相同也会合并。
- 每个订阅最多保留 100 条日志,可在“设置 → 日志与显示”调整为 10–1000 条,超出时清理最早的记录;原有按天数保留仍然生效,已合并的日志按最近一次检查时间计算保留期。
- 升级后数据库自动增加两列,无需手工迁移;升级前已有的重复日志不会回头合并,会随新日志和保留期自然清理。
仪表盘
- “运行趋势”里的“新增采集”和“翻译完成”改为柱状加折线:新增采集用圆角柱,翻译完成用折线叠在上面,没有记录的日子显示为浅灰短柱;水平网格改为虚线,图例下方的汇总数字放大并置于名称下方。悬停仍显示当天两项数值,7 天范围的折线标出每天的点。
- 统计口径、时间范围(7、30、90 天)和“订阅数量”折线图保持不变,亮暗主题与手机宽度下均已检查。
升级提示
- 可从 v0.10.0 直接更新,数据库仍为 schema 23,无需手工迁移;启动时自动为抓取日志增加两列。
- 保留原数据卷及
master.key。已有的重复日志不会回头合并;新的“每个订阅保留日志条数”默认 100,可在“设置 → 日志与显示”调整。 - 服务端与 CLI 同步更新到 0.11.0;版本镜像为
ghcr.io/jaaayden/feedlantern:0.11.0,latest继续跟随通过 CI 的 main。
完整变更:v0.10.0…v0.11.0
FeedLantern v0.10.0 · 性能优化与轻量部署
性能与资源占用
- 翻译统计增加
(feed_id, status)索引,翻译状态和规则预警批量读取,订阅列表最多执行三次 SQL;已有数据库启动时自动创建索引。 - 大量订阅下复用日期格式器、筛选结果和未变化的列表,延迟屏幕外条目的布局与绘制;相对时间仍定期更新,原有列表、卡片、搜索和批量操作保留。
- 设置栏目共用短期内存缓存并合并并发请求,保存、导入和切换账号或工作台时更新或清除缓存;加载文字显示当前栏目。设置和用户管理页面暂停完整订阅列表轮询。
- 没有编辑会话或抓取任务时,Chromium 空闲 60 秒后自动退出,下一次请求重新启动;翻译缓存连续命中不再反复写入保留时间。
- Docker 改为多阶段构建,仅带无头 Chromium,清理安装缓存,前端依赖只参与构建,排除本地开发目录。保留字体、浏览器沙箱、CLI 和维护命令,依赖版本不变。
- 本机 arm64 对比:gzip 镜像层约 621 MB 降至 346 MB;小型测试页面在 1 CPU、512 MiB 内存且无额外交换空间下完成识别、抓取和 RSS 输出,内存峰值约 367 MiB。具体测量口径和限制见性能文档,复杂网站用量取决于实际页面。
检查阈值与聚合选择
- “设置 → 通知 → 告警策略”新增个人检查阈值,默认连续失败 3 次,可设为 1–1000;成功抓取一次清零,中断不计失败,重启和清理日志保留次数。
- 未达到阈值的失败保留原因和日志,启用中的订阅显示“等待重试”;侧栏、仪表盘、列表和用户管理统一口径。检查阈值与推送通知阈值分开,未开启通知也生效,核心规则异常仍独立提示。
- 更换通知渠道只取消旧的推送任务和去重状态,保留实际失败次数,保存本身不补发通知。
- 新建或编辑聚合时,可按名称或网址搜索后全选匹配结果;取消选择只作用于当前结果,其他已选订阅保留,成员不会重复添加。
升级提示
- 可从 v0.9.0 直接更新,数据库仍为 schema 23,无需手工迁移;旧个人设置默认采用 3 次检查阈值。
- 保留原数据卷及
master.key。不改变订阅内容保留规则、累计采集和翻译计数,不自动转换 PubMed RSS 订阅。 - 服务端与 CLI 同步更新到 0.10.0;版本镜像为
ghcr.io/jaaayden/feedlantern:0.10.0,latest继续跟随通过 CI 的 main。
完整变更:v0.9.0…v0.10.0
v0.9.0 · 仪表盘、累计统计与订阅导航
支持从 v0.7.0 直接更新,保留原数据卷;数据库在启动时自动迁移,无需手工修改。
仪表盘与导航
- 新增仪表盘,集中显示订阅数、自动更新数、当前保留内容和需要检查的数量;紧凑图表提供 7/30/90 天的采集、翻译与订阅变化趋势。
- 原“订阅管理”改名为“全部订阅”,保留原来的列表、卡片、搜索、筛选、排序和批量操作;统计和聚合分别移至仪表盘与独立的“聚合订阅”页面。
- 侧栏新增“需要检查”,与仪表盘、用户管理统一统计抓取失败和核心规则异常;用户管理显示每个账号的待检查数量,包括零。
- 设置保留左侧栏目、右侧详情的布局;新增页面支持中英文、明暗主题和移动端,图表支持键盘查看。
独立保存累计数量
- 累计采集、累计翻译与消息内容分开保存,超过保留上限清理内容、删除订阅、清理日志或重启均不会扣减累计值;写入失败回滚时计数也会回滚。
- 仍已保存的条目重复抓取不重复累计;重新翻译成功另计一次。日趋势按 UTC 日期保留 90 天,累计值长期保留。
- 备份包含累计值和趋势,恢复不会把导入的内容重复计数。界面显示开始记录的日期,不补造旧版未记录的历史。
升级提示
- 支持从 v0.7.0 直接升级,无需手工执行 SQL。服务启动时自动从 schema 19 依次升级至 23;从 v0.8.x 升级则从 schema 22 升至 23。
- 保留原数据卷及其中的
master.key,账号、订阅地址、内容和译文保持原有身份。升级前保存完整数据卷与部署配置;回退时同时使用旧镜像和升级前的数据。 - 累计统计从此次升级启用时开始记录。旧版已清理的内容无法补算;恢复不含统计的旧备份后,从恢复时重新开始记录。
- 不自动转换已有 PubMed RSS 订阅;遇到 NCBI 验证页时,可在界面核对查询条件后确认转换为 PubMed 检索订阅。
- 服务端与 CLI 同步更新到 0.9.0,镜像可固定为
ghcr.io/jaaayden/feedlantern:0.9.0。
依赖维护
- 更新 TypeScript、Vite、tsx、concurrently 和 sanitize-html,完成构建、302 项后端测试、54 项浏览器测试及 amd64/arm64 容器验证。
规则预警分级与日志提示
- 修复条目数、标题和链接正常,仅日期、图片或摘要缺失时仍统一显示“规则可能失效”并推送通知的问题。现在显示“部分字段缺失”轻提示,订阅继续输出,不计入“需要检查”,可单独筛选;条目数骤降、标题或链接异常仍保留规则告警。
- 已有可选字段告警在升级后自动降级,尚未发送的通知取消;轻提示升级为真正异常时仍能按原有通知策略告警。恢复正常后清除提示。
- “重新识别缺失字段”默认只勾选已重新找到的受影响自动字段;没有找到时不会默认删除旧规则,正常规则和手动字段保留,预览并确认后才保存。
- 抓取日志中的成功状态和规则提示相邻显示,适配明暗主题与手机宽度。旧日志没有分级信息时显示“规则检查记录”,不猜测历史严重程度。
- API 的
ruleHealth新增severity(warning/notice);新日志返回warningSeverity,旧日志可能没有该字段。
安装与升级:FeedLantern 文档。
v0.8.1 · PubMed 限流修复与文档网站
v0.8.1 — 2026-10-25
PubMed 限流修复
- 修复服务繁忙或事件循环停顿后,多个预先分配的时隙一起到期、请求集中发出的情况。现在按实际放行时间依次排队,继续保持匿名请求 350 毫秒、带 API Key 请求 110 毫秒的间隔。
- NCBI 返回 429 后的暂停同时作用于已在等待的请求;取消请求会及时退出,后续请求仍可继续。排队时间估算保留,用单调时钟计算间隔。
- 增加事件循环停顿、暂停期间排队和取消的确定性回归测试。沿用 v0.8.0 的数据库 schema 22,升级方式相同。
文档网站
- 新增 GitHub Pages 静态网站,提供中英文介绍页、文档导航、站内搜索、深色模式和手机布局。中文文档完整呈现;现有英文使用指南、部署和配置参考同步提供,其他文档明确标注为中文。
- 网站从仓库中的 Markdown 构建,合并到 main 后自动检查链接并部署。
镜像:ghcr.io/jaaayden/feedlantern:0.8.1(amd64 / arm64)。CLI 与服务端版本同步为 0.8.1。
PubMed 检索订阅、Agent CLI / MCP、中英文界面及从旧版升级的完整说明,见 v0.8.0 更新日志。
验证:292 项单元与集成测试、51 项浏览器验收,以及 amd64 / arm64 容器和 Compose 部署检查全部通过。构建与发布记录:main CI、v0.8.1 CI。
v0.8.0 · PubMed 检索订阅、CLI/MCP 与中英文界面
v0.8.0 — 2026-10-25
这一版新增原生 PubMed 检索订阅、Agent CLI / MCP 和中英文界面。
PubMed 检索订阅
- 在“新建订阅 → PubMed 检索”中按关键词、标题/摘要、作者、期刊、机构、MeSH 等字段组合条件,支持 AND / OR / NOT、发表日期和文章类型筛选,也可手写查询式。默认不加引号,每行可选“精确短语”;无法还原为条件的合法查询式按原文保留。
- 预览显示匹配总数、最新 5 篇、NCBI 实际执行的查询式和提示,可直接在 PubMed 中对照。输入防抖、结果缓存和全局限流共同减少重复请求。
- 通过 NCBI E-utilities 按最新收录顺序抓取 10 / 20 / 50 / 100 篇,支持原文、译文、双语输出,以及现有的过滤、保留条数、聚合、通知和网络配置。修改查询式保留已有文章。
- 订阅名默认为“查询式原文 +
- PubMed”,随查询式更新;手动命名后保留自定义名称。超过 200 字符时省略名称中间部分,完整查询式不变。RSS、Atom 和 JSON Feed 使用同一频道标题。 - PubMed RSS 按原地址抓取,移除期刊 RSS 在后台自动改走 E-utilities 的处理。期刊 RSS 和检索式 RSS 都可在验证候选查询式后显式转换;无法确认一致的进入构建器核对。
- 批量验证在后台运行,最多同时验证 5 个订阅,并共用 NCBI 限流队列。任务和结果持久化,关闭页面后继续、服务重启后恢复,支持缓存、取消、重试及边验证边转换。
- 转换保留订阅 ID、对外订阅地址、已有条目和译文,以及翻译、过滤、输出、保留、聚合、刷新和网络设置。默认保留旧名称,单个或批量转换时可勾选按查询式重命名,并预览新名称。
- “设置 → PubMed(NCBI)”支持保存前测试 API Key 和邮箱,显示响应状态及速率上限;密钥加密保存、不回显。所有 NCBI 请求共用限流器,无 Key 时每秒最多 3 个,有 Key 时最多 10 个,429 后暂停并重试。
- 新增 PubMed 预览、转换、后台验证任务和密钥测试 API;CLI / MCP 同步支持预览、创建、验证、转换和可选重命名。
Agent CLI 与 MCP
- 新增
feedlantern命令行(packages/cli):通过个人访问令牌管理订阅、识别网页、预览规则、刷新、查看条目和日志、管理聚合及批量任务。支持 JSON / 表格输出、多个配置档案和稳定的错误代码、退出码。 - 写操作支持
--dry-run;删除操作需--yes。配置文件权限为 0600,读取和写入能力受令牌权限约束。 feedlantern mcp通过 stdio 提供同一批工具,支持只读模式;删除和 PubMed 转换要求显式确认。- 新增令牌自身信息与调用记录接口。CLI 版本号与服务端同步;目前从仓库打包安装,未发布到 npm 注册表,见 安装与使用。
English 与简体中文
- 界面、日期和数字格式、错误提示及个人通知支持中英文,语言按账号保存。登录页和初始化页也可切换语言。
- 旧账号升级后保留简体中文;新账号默认跟随浏览器。不支持的语言使用
DEFAULT_LOCALE(默认en,可设zh-CN)。 - API 保留稳定错误代码,并返回本地化说明;订阅输出内容仍按原文或目标翻译语言显示。
- 新增英文 README、使用指南、部署和配置参考;修复登录页密码错误被误报为登录失效的问题。
报错改进
- RSS 来源返回网页、验证页或异常 2xx 响应时,预览、日志和通知说明实际原因,不再误报 XML 实体声明问题。合法 RSS 即使被标为 HTML 仍可解析,外部实体和 DTD 仍被拒绝。
升级提示
- 从 v0.7.0 升级时,数据库自动从 schema 19 迁移到 22,加入账号语言和 PubMed 验证任务等存储。升级前导出完整备份;回退旧版本时同时恢复升级前的数据。
- 已有订阅、对外订阅地址和已保存内容保留。曾由期刊 RSS 自动走 E-utilities 的订阅会恢复普通 RSS 抓取;若遇 NCBI 验证页,可在界面核对并转换为 PubMed 检索订阅。
- CLI 与服务端同时更新到 0.8.0;Docker 镜像可固定为
ghcr.io/jaaayden/feedlantern:0.8.0,latest继续跟随通过 CI 的 main。
v0.7.0
What's Changed
- feat(feeds): 订阅输出与条目控制(条目过滤、Atom / JSON Feed、输出条数) by @Jaaayden in #24
- feat(notify): 多通知渠道(Webhook、ntfy、Telegram) by @Jaaayden in #25
- feat(api): 个人访问令牌与 OpenAPI 3.1 文档 by @Jaaayden in #19
- feat(translation): 可替换的翻译服务与多目标语言 by @Jaaayden in #23
- feat: 聚合订阅(把多个订阅合并成一个 RSS 地址) by @Jaaayden in #20
- feat(health): 规则失效预警与一键重新识别 by @Jaaayden in #21
- feat(pagination): 自动翻页 / 多页采集 by @Jaaayden in #22
- feat(network): 每个订阅可设置代理与请求头(网络配置) by @Jaaayden in #31
- fix: 保留条数可设置、超时报错可读、恢复备份保留本机设置、代理订阅的 DoH 经代理 by @Jaaayden in #32
- feat: token call logs, reader-style feed panel, settings pages and translation service cards by @Jaaayden in #33
Full Changelog: v0.6.3...v0.7.0
v0.6.3
v0.6.2
What's Changed
Full Changelog: v0.6.1...v0.6.2
v0.6.1
What's Changed
Full Changelog: v0.6.0...v0.6.1
v0.6.0
What's Changed
- refactor: cheaper session checks, single-process start, image healthcheck by @Jaaayden in #2
- chore(deps): batch-update dependencies and workflow action pins by @Jaaayden in #11
- fix: backup export failed when the translation cache exceeded its limit by @Jaaayden in #12
- feat: add project icon by @Jaaayden in #13
- fix: bound database growth and let it shrink by @Jaaayden in #14
- docs: rewrite README and bring the docs up to date by @Jaaayden in #15
- feat(web): redesign the UI and reorganise screens (Night Lantern) by @Jaaayden in #16
Full Changelog: v0.5.1...v0.6.0