Skip to content

Releases: shouya/rss-funnel

0.1.4

06 Aug 09:07
29141c5
Compare
Choose a tag to compare

Bug fixes

  • Build on Windows (#142)

0.1.3

06 Aug 08:34
dcbb00d
Compare
Choose a tag to compare

New filters

  • Detect magnet links from feed entries (#122)
  • Image proxy endpoint and filter (#123)
  • Filter for limiting the number of posts (#98)

Features

  • Placeholders in source (#139)
  • On-the-fly filters (#120)
  • Health check command (#134)

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

  • Detect endpoint path collision (#103)
  • Fix broken cookie handling in requests (#116)
  • Graceful shutdown (#132)
  • Unescaped dynamic source url (#135)
  • Improve source error message (#138)
  • Typo in an error message
  • Allow unspecified filters key (#141)

0.1.2

16 Mar 13:47
87096bf
Compare
Choose a tag to compare

Features

  • Select publication date in split filter (#85)

Bug fixes

  • Correctly merge feeds with mixed namespaces (#90)
  • Reliably detect config file modification made by vim (#84)

0.1.1

13 Mar 10:29
c434e5c
Compare
Choose a tag to compare

Features

  • case_sensitive option for highlight and sanitize filter (#82)

Bug fixes

  • Fix the client field shown on the UI even when the user does not specify it (#77)
  • Fix the case_sensitive field not respected for keep_only/discard filters (#79)

0.1.0

08 Mar 14:37
fd8e811
Compare
Choose a tag to compare

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!

0.0.5

20 Feb 08:26
1596bd7
Compare
Choose a tag to compare

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 and application/xml content types (#16)

Full Changelog: 0.0.4...0.0.5

0.0.4

02 Feb 12:03
20937b9
Compare
Choose a tag to compare

New features