Skip to content

v3.2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Aug 15:07

3.2.0 (2026-08-30)

新功能

  • 收件箱 (Inbox):脚本、自动化或第三方平台可以把文章 POST 给 FeedCraft,再作为 RSS 订阅。适合没有 RSS 的来源(webhook、私有数据);配套系统授权令牌、条目上限与过期清理。
  • 主题订阅 (Topic Feed):把多个来源合成一个订阅。支持按标题、SimHash(字面近似)、Embedding(语义)跨源去重;分步向导可为每个输入源加备注并即时预览;子源抓取失败时用缓存兜底。
  • 新原子工艺:ai-filter(自然语言筛选)、ai-content-process(自定义提示词加工正文)、re-title(按正文重写标题)、link-flatten(把文内链接抽成独立条目)。
  • 网页监控:为没有 RSS 的网页建订阅,只在关注字段(价格、版本号等)变化时推送。
  • 预览体验:RSS 预览支持 HTML 渲染、卡片展开与详情弹窗;Feed 对比并入同一页面。浏览器服务改为可配置 Provider,不再限定 Browserless。

重要变更

  • 单 feed 内文章级 LLM 调用进入全局调度器并发执行,处理延迟明显下降;缓存未命中时的同 key 请求会合并(singleflight)。
  • RSS 生成增强:HTML 转 RSS 支持抓取前点击/翻页等导航,并可指定条目图标;JSON 转 RSS 支持 $ 模板。
  • 可限制单次从源读取的条目数,大源不必每次全量处理。
  • fulltext-plus:单篇渲染超时不再拖垮整个 Feed;浏览器取不到内容时回退普通全文提取。
  • 上游抓取失败返回更准确的状态码;配方名重复给出明确提示。
  • AtomCraft 创建后不再允许改名,避免 FlowCraft / 配方引用失效。

升级注意

  • 破坏性变更:Embedding 模型必须显式配置 FC_EMBEDDING_API_MODEL,不再提供默认值。
Change log detail

Features

  • add better error handling & observability (68c1987)
  • add admin page for inbox and system token management (29699b5)
  • add AI content process craft (#766) (648049b)
  • add ai filter atom craft (#753) (2b5a5c7)
  • add builder for topicFeed (aff43de)
  • add cache status to craft log output (cc52fe1)
  • add conecpt visualizer page (a89dc27)
  • add direct inbox RSS endpoint GET /inbox/:inbox_id/rss (698e779)
  • add example RSS feeds (#755) (27cc2ac)
  • add ID format validation to controllers (1b6a52f)
  • add inbox support (e6fee58)
  • add io.LimitReader to prevent OOM in HTTP fetcher (#717) (d9f2ade)
  • add link flatten atom craft (#825) (a317405)
  • add more RSS format examples (#758) (324e525)
  • add template options to curl-to-rss (11e6519)
  • add topic feed (0888588)
  • add topic feed aggregation and processors (07b662a)
  • add web admin page support for web monitor feature (c8717f7)
  • admin: highlight missing crafts on health dashboard (#709) (24bf35a)
  • admin: sort atom craft templates alphabetically (3cac037)
  • admin: 按 Feed源心智模型重构侧边栏菜单 (COL-39) (c4c4071)
  • admin: 按 Feed源心智模型重构侧边栏菜单 (COL-39) (fbc7306)
  • admin: 按 Feed源心智模型重构侧边栏菜单 (COL-39) (fbc7306)
  • better error message and ux for feed compare page (0d2eb76)
  • better ux for feed preview tool (a8033a1)
  • complete inbox i18n coverage and add documentation (en/zh/zh-TW) (#779) (f9e60e9)
  • craft: add llm article processors and payload builder (003541b)
  • craft: 调用 LLM 前的 cleanup 移除 base64 编码图片以节省 token (#827) (9424cca)
  • custom_recipe: add copy link support (df86ae2)
  • doc-site: 文档目录重构为四象限结构 (COL-38) (#913) (44b7da1)
  • doc-site: 文档目录重构为四象限结构 (COL-38) (#913) (#916) (e1a7d6d)
  • docs: add github social link to doc-site header (37d0b59)
  • enhance LLM filters to use title and format payload in markdown codeblocks (#654) (d191225)
  • feed-viewer: enhance preview with HTML mode, card expand/collapse, and detail modal (#804) (a14e886)
  • fetcher: configure http client with timeout instead of using DefaultClient (6318cca)
  • fix i18n for zh-TW (c13f529)
  • implement topic feed CRUD API and admin UI (15da70a)
  • inbox-ui: optimize integration guide into tabs and add AI prompt generator (a347b24)
  • inbox: add gc stats and cleanup endpoints (6e32030)
  • log: allow custom LOG_LEVEL and demote language detection log to trace (f69d105)
  • make embedding model configuration mandatory and remove defaults (06db2ba)
  • merge Feed Compare into RSS Viewer page (f8a51a0)
  • optimistic caching for topic sub-feeds with per-URI health tracking (#805) (a930c53)
  • optimize concept visualizer page(#633) (a67876a)
  • optimize topic feed timestamp logic (fb80f5d)
  • prevent editing AtomCraft name after creation (#801) (3d438a9)
  • refactor user-agent header logic and support custom ua via env var (f8f31c7)
  • rename curl-to-rss to json-to-rss to make it more clear (5674f75)
  • router: add public topic feed route (3efcf01)
  • source: add web monitor source and preview tool (65e797a)
  • support HTML to RSS navigation actions (#833) (fbbc618)
  • topic: 新增三种去重策略 —— 按标题、SimHash、Embedding (#788) (ce77b15)
  • unhide topic feed page + redesign input source editor (#783) (e64ac9d)
  • unhide topic feed page and re-enable detail navigation (1d75166)
  • unify feed preview targets (#780) (66c9334)
  • update admin panel for topic feed management (e8c24a8)
  • update arch doc (6273626)
  • update default FC_LLM_MAX_CONCURRENCY to 3 (4bd5992)
  • update favicon support for admin panel (df9ac9e)
  • update ui for custom recipe page (826b6d1)
  • use FNV hash for content keys to get bettert performance (c7e60a4)
  • versioning: release-please 流程与构建期版本展示 (COL-36) (#909) (9de2c09)
  • 优化 Topic Feed 管理:分步向导、输入备注与预览 (#806) (85838a2)
  • 双 changelog——人工 RELEASES.md + 自动 CHANGELOG.md (COL-41) (#921) (efc29b1)
  • 将剩余 AI/Embedding craft 迁到原生 CraftFeed 处理器 (#900) (2f4a245)
  • 限制 Feed 输入条目数 (#881) (92ada8e)

Bug Fixes

  • add context timeout to feed fetch and retry loop (bc4f3ac)
  • add generic MD5 hash helper (83bdc46)
  • admin: HTML 转 RSS 允许抓取内网源并展示可读错误 (0e5f2ea)
  • admin: Topic 编辑页输入源与聚合规则改为纵向列表 (597150a)
  • admin: 为空列表页增加创建引导 (#880) (5c0b77e)
  • admin: 优化 Topic 向导、支持 Inbox,并修复非法 XML 字符解析失败 (#876) (67e6370)
  • admin: 修复全部 Craft 列表名称列英文中途折行 (3d99dbc)
  • admin: 修复自定义配方表格单元格文本垂直堆叠 (fa503a6)
  • admin: 将欢迎页快速开始改为可交互 URL 生成 (87238f3)
  • admin: 居中 Topic 创建向导的核心内容区域 (8d85111)
  • admin: 强制 Craft 名称列 nowrap,避免最长标识中途折行 (d109fb6)
  • admin: 文档中心菜单按当前 UI 语言跳转 (COL-37) (#910) (245f21f)
  • admin: 自定义配方空表单保存前校验 (COL-27) (#907) (c58693e)
  • cache: 用 singleflight 合并 CachedFunc 同 key 并发未命中 (8ca02a5)
  • ci: 让 release-please 读取 config extra-files (COL-40) (22e5080)
  • correctly handle logout action and provide feedback (#741) (4dd29e2)
  • correctly resolve relative feed links against base URL (46c0f10)
  • craft: 将上游抓取失败从 500 改为 502/504/422 (2f27f3b)
  • craft: 浏览器访问 craft 端点时渲染可读预览 (e0eaab9)
  • craft: 遗留适配器判空并统一 AI craft 构建期校验 (#904) (bdd1c59)
  • craft: 避免 fulltext-plus 因 browserless 超时全体失败 (#883) (ab9e252)
  • custom recipe and craft flow deletion behavior (#715) (590f283)
  • dao: return nil on TopicFeed query failure (9a0b797)
  • docs: 修复 Inbox 指南页面显示异常 (#886) (84cd9a1)
  • enforce form validation before saving craft atom (#642) (11227bc)
  • Ensure valid JSON in jsonToRss placeholders (93d5abf)
  • html-to-rss: use descendant combinator in generated CSS selectors (1bc5c73)
  • improve browserless error handling and feed viewer presentation (#714) (154f911)
  • model: prevent nil article panics by filtering at source and adding checks (53c26e0)
  • model: use fallback author from gofeed if authors list is empty (40f54ad)
  • normalize feed viewer errors (c09136f)
  • normalize relative VITE_API_BASE_URL to start with a slash (dfd822d)
  • parser: prevent clearing fallback content on HTML extraction failure (6f38c1f)
  • preserve feed viewer validation messages (62ce2f0)
  • recipe: add nil check for processedCraftFeed to prevent panic (09d8bf1)
  • recipe: 重复配方名称返回 409 而非暴露 SQL 错误 (#888) (8c8a49e)
  • resolve inbox bugs found during testing (d1c1262)
  • restore description fallback before content-based crafts run (c8a93c1)
  • return 404 on deleting non-existent topic feed (e77c4bb)
  • util: 修复 Markdown/HTML 转换中的段落换行丢失 (#807) (e5ba366)
  • web-monitor: 修复4处网页监控功能 Bug (#789) (f8d95fb)
  • web/admin: handle copy link failure gracefully in TopicFeed detail view (5a7e72a)

Performance Improvements

  • craft: 单 feed 文章并发进入全局 LLM 调度器 (#902) (07d0aa8)