Stability update
Prior to this release, rss-funnel 0.0.x provided no stability guarantees, which meant your setup and configuration could break with any upgrade. This has changed with 0.1.0!
Starting from 0.1.0, we guarantee that patch version upgrades will never break your existing configuration. For example, if your setup runs smoothly with 0.1.5, you should be able to safely upgrade to 0.1.6 without any changes needed to your configuration or deployment setup. We will introduce breaking changes only in minor version upgrades, so an upgrade from 0.1.0 to 0.2.0 may require extra actions on your part.
New Features
modify_post
and modify_feed
filters (#51, #72)
Customize your feeds with ease using the new modify_post
and modify_feed
filters that allow modifying posts and feeds in-place conveniently.
filters:
- modify_post: post.title += ' (modified)'
These filters should cover most general use cases of the js
filter, which is now deprecated and will be removed in a future release.
Check out the Filter config documentation for more details.
Fetch API (#69)
You can now call the fetch
API to fetch remote content from inside JavaScript filters. We've included a recipe for a DeArrow-ed YouTube feed to showcase this new capability. See the JavaScript API docs for more information.
Feed from scratch (#44)
Creating feeds from scratch is now possible! Specify the source
for an endpoint using a particular syntax to generate a feed from the ground up. This allows for advanced manipulation like merging multiple sources. Check out the documentation for the syntax details.
Relative path syntax for source (#47)
You can also use a relative path syntax (e.g., /another-endpoint.xml) to specify a local endpoint as the source, both in endpoint source configs and inside the merge
filter.
Parallel fetch in merge
filter (#58)
The merge
filter now supports specifying multiple sources to fetch them in parallel, improving endpoint latency.
- path: /rss-tool-releases.xml
source:
format: rss
title: RSS Tool Releases
filters:
- merge:
source:
- /github-release.xml?source=https://github.com/shouya/rss-funnel/releases
- /github-release.xml?source=https://github.com/RSS-Bridge/rss-bridge/releases
filters:
- convert_to: rss
- merge:
- https://selfh.st/releases/feed/latest/project/yarr.xml
- https://selfh.st/releases/feed/latest/project/miniflux.xml
Authentication for Inspector UI (#70)
While the inspector UI is read-only, exposing it publicly allows enumerating all your endpoints, raising security concerns. You can now specify login credentials in the config file to require authentication for accessing the UI:
auth:
username: admin
password: hunter2
endpoints: ...
Of course, you can still disable the inspector UI entirely on production using the --inspector-ui=false
option.
Feed format conversion (#68)
Introducing the new convert_to
filter to convert feeds between RSS and Atom formats. This is particularly useful with the merge
filter when combining feeds of different formats.
Feel free to use convert_to
anywhere you need format conversion. For example, converting to RSS before modify_post
can be handy since RSS fields are generally simpler.
Configure via environment (#74)
No more need to specify docker commands just to configure server binding and the config file location! You can now simply define a few environment variables:
version: "3.8"
services:
rss-funnel:
image: ghcr.io/shouya/rss-funnel:latest
ports:
- 4080:4080
environment:
RSS_FUNNEL_CONFIG: /funnel.yaml
RSS_FUNNEL_BIND: 0.0.0.0:4080
volumes:
- ./funnel.yaml:/funnel.yaml
Visit the documentation for the list of available environment variables.
UI changes
Source viewer (#44)
The feed source is now visible in the UI.
Regular source | From scratch source | Dynamic source |
---|---|---|
Filter docs (#55)
Hover over filters to see a popup with possible syntax and brief descriptions for each field, helping you craft filters more easily.
JSON preview (#64)
Writing JavaScript filters is now easier with the new JSON preview, giving you visibility into the feed structure and available fields for manipulation.
Error reporting (#63)
Configuration reload errors or issues in the feed processing pipeline are now conveniently shown in the inspector UI.
Other changes
- Disable inspector UI at build time with
cargo build --no-default-features
(#48) - Add arbitrary notes to document filters using the
note
filter (#50) - Improved handling of non-UTF8 feeds (#67)
- Expect
full_text
filter performance up to an order of magnitude faster on multi-core systems thanks to improved parallelization (#61) - Fixed build for
aarch64-unknown-linux-gnu
target (#49) - Rewritten watch and reload backend logic for better cache retention and error reporting (#60)
merge
filter now sorts posts from newest to oldest (#58)
Let me know if you would like me to modify or expand anything!