Releases: shouya/rss-funnel
0.1.4
0.1.3
New filters
- Detect magnet links from feed entries (#122)
- Image proxy endpoint and filter (#123)
- Filter for limiting the number of posts (#98)
Features
Improvements
- Cache feed results after full_text filter (#112)
- Improve post body rendering on Web UI (#106)
- Add more utility functions (#108)
- Support http/2 requests (#117)
- Proxy support (#105)
- Handle various body fields for different feed formats (#100)
Bug fixes
0.1.2
0.1.1
0.1.0
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!
0.0.5
New features
Live demo
A live demo is made available for anyone who wants a glimpse on what RSS funnel looks like: https://rss-funnel-demo.fly.dev/
Inspector UI (#22, #28, #30)
There is a new inspector UI to help you view and debug your feeds. It is accessible now the index page. (e.g. http://localhost:4080/
)
On the inspector UI you can adjust various query parameters to see how the feed will be transformed. Combined with the automatic reload feature below, you can easily see the changes you make to your configuration.
Automatic reload (#29)
If you run the server with a -w
flag, the server will automatically reload the configuration file and restart to apply the changes.
Reloading on Inspector UI is still requires an explicit click on the "Reload config" button. I'm working on making this automatic as well.
merge
filter (#18)
The merge
filter is a new filter that allows you to merge multiple feeds into one. This is useful when you want to combine multiple feeds into one.
There are two configuration syntax styles for merge
filter:
endpoints:
- path: /feed.xml
source: https://example.com/feed1.xml
filters:
- merge: https://example.com/feed2.xml
- merge: https://example.com/feed3.xml
- merge:
source: https://example.com/feed4.xml
client: <any client configuration>
filters: <apply filters on feed4.xml before merging>
More DOM navigation and manipulation methods (#20)
There are now more DOM navigation and manipulation methods accessible in the JS filter:
Node.parent()
Node.previous_sibling()
Node.next_sibling()
Node.node_type()
Node.destroy()
Breaking change
endpoints[].content_type
is now relocated under endpoints[].client.assume_content_type
(#17)
Other changes
- Strip markup outside body from html sources (#31)
- Fix the handling of
text/xml
andapplication/xml
content types (#16)
Full Changelog: 0.0.4...0.0.5
0.0.4
New features
- DOM manipulation API in JS runtime
- Highlighter filter (
highlight
) (#10) - Caching requests to servers (#12)
- Multiarch docker image (amd64 and arm64/v8)
- Endpoint testing from command line
- Add post selection filters (
keep_only
/discard
)