Skip to content

0.1.0

Compare
Choose a tag to compare
@github-actions github-actions released this 08 Mar 14:37
· 51 commits to master since this release
fd8e811

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.

image

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.

image

Error reporting (#63)

Configuration reload errors or issues in the feed processing pipeline are now conveniently shown in the inspector UI.

image

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!