All Versions
Latest Version
Avg Release Cycle
19 days
Latest Release

Changelog History
Page 4

  • v1.12 Changes

    ๐Ÿš€ Released 2020-12-13

    • โž• Add the limit and starting_after arguments to :meth:~Reader.get_feeds, :meth:~Reader.get_entries, and :meth:~Reader.search_entries, allowing them to be used in a paginated fashion. (:issue:196)
    • โž• Add the :attr:~Entry.object_id property that allows getting the unique identifier of a data object in a uniform way. (:issue:196)
    • ๐ŸŒ In the web application, add links to toggle feed/entry counts. (:issue:185)
  • v1.11 Changes

    November 28, 2020

    ๐Ÿš€ Released 2020-11-28

    • ๐Ÿ‘ Allow disabling feed updates for specific feeds. (:issue:187)
    • โž• Add methods to get aggregated feed and entry counts. (:issue:185)
    • ๐ŸŒ In the web application: allow disabling feed updates for a feed; allow filtering feeds by whether they have updates enabled; do not show feed update errors for feeds that have updates disabled. (:issue:187)
    • ๐ŸŒ In the web application, show feed and entry counts when ?counts=yes is used. (:issue:185)
    • ๐ŸŒ In the web application, use YAML instead of JSON for the tags and metadata fields.
  • v1.10 Changes

    November 20, 2020

    ๐Ÿš€ Released 2020-11-20

    • ๐Ÿ‘‰ Use indexes for :meth:~Reader.get_entries() (recent order); should make calls 10-30% faster. (:issue:134)
    • ๐Ÿ‘ Allow sorting :meth:~Reader.search_entries results randomly. Allow sorting search results randomly in the web application. (:issue:200)
    • ๐Ÿ“œ Reraise unexpected errors caused by parser bugs instead of replacing them with an :exc:AssertionError.
    • โž• Add the sqlite_releases custom parser plugin.
    • ๐Ÿ”จ Refactor the HTTP feed sub-parser to allow reuse by custom parsers.
    • โž• Add a user guide, and improve other parts of the documentation. (:issue:194)
  • v1.9 Changes

    October 28, 2020

    ๐Ÿš€ Released 2020-10-28

    • ๐Ÿ‘Œ Support Python 3.9. (:issue:199)
    • ๐Ÿ‘Œ Support Windows (requires Python >= 3.9). (:issue:163)
    • ๐ŸŽ Use GitHub Actions to do macOS and Windows CI builds. (:issue:199)
    • Rename the cloudflare_ua_fix plugin to ua_fallback. Retry any feed that gets a 403, not just those served by Cloudflare. (:issue:181)
    • ๐Ÿ›  Fix type annotation to avoid mypy 0.790 errors. (:issue:198)
  • v1.8 Changes

    October 02, 2020

    ๐Ÿš€ Released 2020-10-02

    • โฌ‡๏ธ Drop feedparser 5.x support (deprecated in 1.7); use feedparser 6.x instead. (:issue:190)
    • ๐Ÿ‘‰ Make the string representation of :exc:ReaderError and its subclasses more consistent; add error messages and improve the existing ones. (:issue:173)
    • Add method :meth:~Reader.change_feed_url to change the URL of a feed. (:issue:149)
    • ๐Ÿ‘ Allow changing the URL of a feed in the web application. (:issue:149)
    • โž• Add more tag navigation links to the web application. (:issue:184)
    • In the feed_entry_dedupe plugin, copy the important flag from the old entry to the new one. (:issue:140)
  • v1.7 Changes

    September 19, 2020

    ๐Ÿš€ Released 2020-09-19

    • Add new methods to support feed tags: :meth:~Reader.add_feed_tag, :meth:~Reader.remove_feed_tag, and :meth:~Reader.get_feed_tags. Allow filtering feeds and entries by their feed tags. (:issue:184)
    • โž• Add the broken argument to :meth:~Reader.get_feeds, which allows getting only feeds that failed / did not fail during the last update. (:issue:189)
    • ๐Ÿ—„ feedparser 5.x support is deprecated in favor of feedparser 6.x. Using feedparser 5.x will raise a deprecation warning in version 1.7, and support will be removed the following version. (:issue:190)
    • ๐Ÿท Tag-related web application features: show tags in the feed list; allow adding/removing tags; allow filtering feeds and entries by their feed tag; add a page that lists all tags. (:issue:184)
    • ๐ŸŒ In the web application, allow showing only feeds that failed / did not fail. (:issue:189)
    • In the preview_feed_list plugin, add <meta> tags as a feed detection heuristic.
    • โž• Add a few property-based tests. (:issue:188)
  • v1.6 Changes

    September 04, 2020

    ๐Ÿš€ Released 2020-09-04

    • Add the feed_root argument to :func:make_reader, which allows limiting local feed parsing to a specific directory or disabling it altogether. Using it is recommended, since by default reader will access any local feed path (in 2.0, local file parsing will be disabled by default). (:issue:155)
    • ๐Ÿ‘Œ Support loading CLI and web application settings from a :doc:configuration file <config>. (:issue:177)
    • Fail fast for feeds that return HTTP 4xx or 5xx status codes, instead of (likely) failing later with an ambiguous XML parsing error. The cause of the raised :exc:ParseError is now an instance of :exc:requests.HTTPError. (:issue:182)
    • Add cloudflare_ua_fix plugin (work around Cloudflare sometimes blocking requests). (:issue:181)
    • ๐Ÿ“œ feedparser 6.0 (beta) compatibility fixes.
    • ๐Ÿ“œ Internal parser API changes to support alternative parsers, pre-request hooks, and making arbitrary HTTP requests using the same logic :class:Reader uses. (:issue:155)
    • In the /preview page and the preview_feed_list plugin, use the same plugins the main :class:Reader does. (enabled by :issue:155)
  • v1.5 Changes

    July 30, 2020

    ๐Ÿš€ Released 2020-07-30

    • ๐Ÿ‘‰ Use rowid when deleting from the search index, instead of the entry id. Previously, each :meth:~Reader.update_search call would result in a full scan, even if there was nothing to update/delete. This should reduce the amount of reads significantly (deleting 4 entries from a database with 10k entries resulted in an 1000x decrease in bytes read). (:issue:178)
    • ๐Ÿš€ Require at least SQLite 3.18 (released 2017-03-30) for the current :meth:~Reader.update_search implementation; all other reader features continue to work with SQLite >= 3.15. (:issue:178)
    • โšก๏ธ Run PRAGMA optimize on :meth:~Reader.close(). This should increase the performance of all methods. As an example, in :issue:178 it was found that :meth:~Reader.update_search resulted in a full scan of the entries table, even if there was nothing to update; this change should prevent this from happening. (:issue:143)

    .. note:: PRAGMA optimize is a no-op in SQLite versions earlier than 3.18. In order to avoid the case described above, you should run ANALYZE_ regularly (e.g. every few days).

    .. _ANALYZE:

  • v1.4 Changes

    July 13, 2020

    ๐Ÿš€ Released 2020-07-13

    • โšก๏ธ Work to reduce the likelihood of "database is locked" errors during updates (:issue:175):

      • Prepare entries to be added to the search index (:meth:~Reader.update_search) outside transactions.
      • Fix bug causing duplicate rows in the search index when an entry changes while updating the search index.
      • Update the search index only when the indexed values change (details below).
      • Use SQLite WAL (details below).
    • โšก๏ธ Update the search index only when the indexed values change. Previously, any change on a feed would result in all its entries being re-indexed, even if the feed title or the entry content didn't change. This should reduce the :meth:~Reader.update_search run time significantly.

    • ๐ŸŒฒ Use SQLite's write-ahead logging_ to increase concurrency. At the moment there is no way to disable WAL. This change may be reverted in the future. (:issue:169)

    • Require at least click 7.0 for the cli extra.

    • Do not fail for feeds with incorrectly-declared media types, if feedparser can parse the feed; this is similar to the current behavior for incorrectly-declared encodings. (:issue:171)

    • โšก๏ธ Raise :exc:ParseError during update for feeds feedparser can't detect the type of, instead of silently returning an empty feed. (:issue:171)

    • โž• Add sort argument to :meth:~Reader.search_entries. Allow sorting search results by recency in addition to relevance (the default). (:issue:176)

    • ๐ŸŒ In the web application, display a nice error message for invalid search queries instead of returning an HTTP 500 Internal Server Error.

    • ๐ŸŒ Other minor web application improvements.

    • ๐ŸŒฒ Minor CLI logging improvements.

    ๐ŸŒฒ .. _write-ahead logging:

  • v1.3 Changes

    June 23, 2020

    ๐Ÿš€ Released 2020-06-23

    • โšก๏ธ If a feed failed to update, provide details about the error in :attr:Feed.last_exception. (:issue:68)
    • โšก๏ธ Show details about feed update errors in the web application. (:issue:68)
    • โšก๏ธ Expose the :attr:~Feed.added and :attr:~Feed.last_updated Feed attributes.
    • โšก๏ธ Expose the :attr:~Entry.last_updated Entry attribute.
    • โšก๏ธ Raise :exc:ParseError / log during update if an entry has no id, instead of unconditionally raising :exc:AttributeError. (:issue:170)
    • Fall back to as entry id if an entry in an RSS feed has no ; previously, feeds like this would fail on update. (:issue:170)
    • โšก๏ธ Minor web application improvements (show feed added/updated date).
    • ๐ŸŒ In the web application, handle previewing an invalid feed nicely instead of returning an HTTP 500 Internal Server Error. (:issue:172)
    • ๐Ÿ‘ Internal API changes to support multiple storage implementations in the future. (:issue:168)