# FreshRSS changelog > A self-hosted RSS and Atom feed aggregator. - Vendor: FreshRSS - Category: Productivity - Official site: https://freshrss.org - Tracked by: What's New (https://whatsnew.fyi/product/freshrss) - Harvested from: GitHub (FreshRSS/FreshRSS) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## Releases ### 1.29.1 — FreshRSS 1.29.1 - Date: 2026-05-20 - Version: 1.29.1 - Original notes: https://github.com/FreshRSS/FreshRSS/releases/tag/1.29.1 - Permalink: https://whatsnew.fyi/product/freshrss/releases/1.29.1 - **added** — Accept .txt import of feed URLs in addition to e.g. OPML - **added** — New CLI for automatic periodic SQLite export with retention - **added** — More feed info: last received date, publication date - **fixed** — Fix cookies with some browsers - **fixed** — Fix search in shared user queries with empty results - **fixed** — Fix XML errors with loading invalid OPML in lib_opml library - **fixed** — Fix ensure maximum number of feeds also with Dynamic OPML - **fixed** — Fix click mark as read - **changed** — Improve browser compatibility to keep mobile navigation at the bottom - **changed** — Improve support of older/simpler Web browsers/engines such as SeaMonkey - **changed** — Improve Swage theme - **changed** — Rename Nord theme to Nord - **changed** — Replace GIF spinner by CSS spinner * [Milestone](https://github.com/FreshRSS/FreshRSS/milestones/1.29.1) This is bug-fix release for [1.29.0](https://github.com/FreshRSS/FreshRSS/releases/tag/1.29.0). Feature highlights✨: * Accept `.txt` import of feed URLs in additional to e.g. OPML * New CLI for automatic periodic SQLite export with retention * More feed info: last received date, publication date Bug fixes highlights 🐛: * Fix cookies with some browsers * Fix search in shared user queries with empty results UI highlights 🖼: * Improve Web browsers compatibility This release has been made by @Alkarex, @Frenzie, @IEEE-754, @Inverle, @McFev, @ciro-mota, @cweiske, @polybjorn and newcomer @mzl2233 Full [changelog](https://github.com/FreshRSS/FreshRSS/blob/1.291/CHANGELOG.md): * Features * Accept `.txt` import of feed URLs in additional to e.g. OPML [#8818](https://github.com/FreshRSS/FreshRSS/pull/8818), [#8837](https://github.com/FreshRSS/FreshRSS/pull/8837) * New CLI for automatic periodic SQLite export with retention [#8819](https://github.com/FreshRSS/FreshRSS/pull/8819) * More feed info: last received date, publication date [#8799](https://github.com/FreshRSS/FreshRSS/pull/8799) * Bug fixing * Fix cookies with some browsers [#8867](https://github.com/FreshRSS/FreshRSS/pull/8867) * Fix search in shared user queries with empty results [#8863](https://github.com/FreshRSS/FreshRSS/pull/8863) * Fix XML errors with loading invalid OPML in `lib_opml` library [#8652](https://github.com/FreshRSS/FreshRSS/pull/8652), [#8853](https://github.com/FreshRSS/FreshRSS/pull/8853), [lib_opml#48](https://framagit.org/marienfressinaud/lib_opml/-/merge_requests/48), [lib_opml#51](https://framagit.org/marienfressinaud/lib_opml/-/merge_requests/51) * Fix ensure maximum number of feeds also with Dynamic OPML [#8832](https://github.com/FreshRSS/FreshRSS/pull/8832) * Fix click mark as read [#8817](https://github.com/FreshRSS/FreshRSS/pull/8817) * UI * Improve browser compatibility to keep mobile navigation at the bottom [#8833](https://github.com/FreshRSS/FreshRSS/pull/8833) * Improve support of older/simpler Web browsers/engines such as SeaMonkey [#8810](https://github.com/FreshRSS/FreshRSS/pull/8810), [#8811](https://github.com/FreshRSS/FreshRSS/pull/8811), [#8813](https://github.com/FreshRSS/FreshRSS/pull/8813), * Improve *Swage* theme [#8842](https://github.com/FreshRSS/FreshRSS/pull/8842) * Rename *Nord theme* to *Nord* [#8805](https://github.com/FreshRSS/FreshRSS/pull/8805) * Replace GIF spinner by CSS spinner [#8804](https://github.com/FreshRSS/FreshRSS/pull/8804), [#8812](https://github.com/FreshRSS/FreshRSS/pull/8812) * Various UI and style improvements: [#8800](https://github.com/FreshRSS/FreshRSS/pull/8800), [#8816](https://github.com/FreshRSS/FreshRSS/pull/8816), * I18n * Improve Brazilian Portuguese [#8846](https://github.com/FreshRSS/FreshRSS/pull/8846) * Improve Dutch [#8868](https://github.com/FreshRSS/FreshRSS/pull/8868) * Improve German [#8840](https://github.com/FreshRSS/FreshRSS/pull/8840) * Improve Polish [#8854](https://github.com/FreshRSS/FreshRSS/pull/8854) * Improve Russian [#8861](https://github.com/FreshRSS/FreshRSS/pull/8861) * Improve Traditional Chinese [#8849](https://github.com/FreshRSS/FreshRSS/pull/8849) * Misc. * Update dev dependencies [#8858](https://github.com/FreshRSS/FreshRSS/pull/8858), [#8864](https://github.com/FreshRSS/FreshRSS/pull/8864) ### 1.29.0 — FreshRSS 1.29.0 - Date: 2026-05-10 - Version: 1.29.0 - Original notes: https://github.com/FreshRSS/FreshRSS/releases/tag/1.29.0 - Permalink: https://whatsnew.fyi/product/freshrss/releases/1.29.0 - **added** — New sort order preferences at global, category, and feed levels - **added** — New filtering by date of Server modification date with corresponding search operator - **added** — Use feed-provided icon - **added** — New option to automatically mark new articles as read if an identical GUID already exists in the same category - **added** — Automatic feed visibility/priority during search - **added** — Add feed visibility filter to statistics view unread dates - **added** — Add option to enable/disable notifications, also for PWA - **added** — Add a form to create new user queries on the User Queries page - **added** — Allow WebSub hub push from same private network - **added** — Support category field in JSON feed import - **added** — New option to hide sidebar by default - **added** — New option to disable unread counter in tab title and favicon - **added** — Show time since when a feed has problems - **added** — New functions to handle plural in internationalisation - **added** — New cli/purge.php to apply purge policy from command line - **added** — New Webhook extension for automated RSS notifications - **added** — New LLM Classification extension to automatically tag incoming articles based on a prompt sent to an LLM - **fixed** — Fix wrong search toString in case of regex-looking string - **fixed** — Fix article last seen date in case of feed errors - **fixed** — Fix search expansion with backslash - **security** — Limit cURL to protocols HTTP, HTTPS * [Milestone](https://github.com/FreshRSS/FreshRSS/milestones/1.29.0) This is a major release. Feature highlights✨: * New sort order preferences at global, category, and feed levels * Use feed-provided icon * New option to hide sidebar by default * Show time since when a feed has problems * New functions to handle plural in internationalisation * New `cli/purge.php` to apply purge policy from command line Bug fixes highlights 🐛: * Improve support of PHP 8.5+ * Several fixes related to searches Security highlights 🛡: * Limit cURL to protocols HTTP, HTTPS UI highlights 🖼: * Improve mobile view with multiple lines when thumbnails and summaries are shown * Several themes improved Extensions highlights 🧩: * New Webhook extension for automated RSS notifications * New LLM Classification extension to automatically tag incoming articles based on a prompt sent to an LLM This release has been made by @Alkarex, @Inverle, @Kiblyn11, @math-GH, @rupakbajgain, @xtmd and newcomers @polybjorn, @olivluca, @tomasodehnal, @PeterVavercak, @mrtnrdl, @ale-rt, @cweiske, @rid3r45, @gabbihive, @drosell271, @Kachelkaiser, @zanivann, @nanos, @bowencool, @pe1uca, @matheusroberson, @DenuxPlays, @rlrs, @chanse-syres, @IEEE-754, @umaidshahid, @michi-onl Full [changelog](https://github.com/FreshRSS/FreshRSS/blob/1.29.0/CHANGELOG.md): * Features * New sort order preferences at global, category, and feed levels [#8234](https://github.com/FreshRSS/FreshRSS/pull/8234) * New filtering by date of *Server modification date* [#8131](https://github.com/FreshRSS/FreshRSS/pull/8131), [#8576](https://github.com/FreshRSS/FreshRSS/pull/8576) * Corresponding search operator, e.g. `mdate:P1D` for finding articles modified by the author / server during the past day. * Especially useful for optimising the API synchronisation. * Use feed-provided icon [#8633](https://github.com/FreshRSS/FreshRSS/pull/8633) * New option to automatically mark new articles as read if an identical GUID already exists in the same category [#8673](https://github.com/FreshRSS/FreshRSS/pull/8673) * Automatic feed visibility/priority during search [#8609](https://github.com/FreshRSS/FreshRSS/pull/8609) * Add feed visibility filter to statistics view *unread dates* [#8489](https://github.com/FreshRSS/FreshRSS/pull/8489) * Add option to enable/disable notifications, also for PWA [#8458](https://github.com/FreshRSS/FreshRSS/pull/8458) * Add a form to create new user queries on the *User Queries* page [#8623](https://github.com/FreshRSS/FreshRSS/pull/8623) * Allow WebSub hub push from same private network [#8450](https://github.com/FreshRSS/FreshRSS/pull/8450) * Support category field in JSON feed import [#8786](https://github.com/FreshRSS/FreshRSS/pull/8786) * Bug fixing * Fix wrong search `toString` in case of regex-looking string [#8479](https://github.com/FreshRSS/FreshRSS/pull/8479) * Fix article *last seen date* in case of feed errors [#8646](https://github.com/FreshRSS/FreshRSS/pull/8646) * Fix search expansion with backslash [#8497](https://github.com/FreshRSS/FreshRSS/pull/8497) * Fix user query parsing [#8543](https://github.com/FreshRSS/FreshRSS/pull/8543) * Fix search in shared user queries [#8789](https://github.com/FreshRSS/FreshRSS/pull/8789) * Fix redirect to wrong view after mark as read in *reader* and *global* views [#8552](https://github.com/FreshRSS/FreshRSS/pull/8552) * Fix SQLite paging when sorting by article length [#8594](https://github.com/FreshRSS/FreshRSS/pull/8594) * Fix change sorting during paging [#8688](https://github.com/FreshRSS/FreshRSS/pull/8688) * Fix SQL keyset pagination when sorting by category name [#8597](https://github.com/FreshRSS/FreshRSS/pull/8597) * Fix SQL duplicates in the user labels when sorting randomly [#8626](https://github.com/FreshRSS/FreshRSS/pull/8626) * Fix wrong error redirect in subscription management [#8625](https://github.com/FreshRSS/FreshRSS/pull/862 _[Truncated at 4000 characters — full notes: https://github.com/FreshRSS/FreshRSS/releases/tag/1.29.0]_ ### 1.28.1 — FreshRSS 1.28.1 - Date: 2026-01-25 - Version: 1.28.1 - Original notes: https://github.com/FreshRSS/FreshRSS/releases/tag/1.28.1 - Permalink: https://whatsnew.fyi/product/freshrss/releases/1.28.1 - **added** — Handle Web scraping of text/plain as
- **added** — New customisable message for closed registrations
- **added** — Add username in Apache access logs and Docker logs for GReader API and HTTP Basic Auth from reverse proxy
- **added** — Add data-category="3" attribute to articles to ease custom CSS styling
- **changed** — Disable counting articles in user labels for Ajax requests
- **changed** — Update CURLOPT_ACCEPT_ENCODING
- **fixed** — Fix unwanted expansion of user queries applied to filters
- **fixed** — Fix encoding of filter actions for labels
- **fixed** — Fix searching of tags
- **fixed** — Fix refreshing feeds with token while anonymous refresh is disabled
- **fixed** — Fix RSS and OPML access by token
- **fixed** — Fix MySQL/MariaDB transliterator_transliterate fallback when php-intl extension is unavailable
- **fixed** — Fix regression with MySQL/MariaDB index hint
- **fixed** — Auto-add lastUserModified database column during mark-as-read action
- **fixed** — Do not include hidden feeds when counting unread articles in categories
- **fixed** — Remove wrong PHP deprecation of OPML export action
- **fixed** — Fix shortcut for next unread article
- **fixed** — Fix custom session.cookie-lifetime
- **fixed** — Fix feed validator button when changing the feed URL
- **fixed** — Fix space between By: and the author's name
- **security** — Change Content-Disposition from inline to attachment in f.php
- **security** — Harden user methods exists, mtime, ctime
* [Milestone](https://github.com/FreshRSS/FreshRSS/milestones/1.28.1)
This is a release focussing on bug fixing, in particular regressions from the release [1.28.0](https://github.com/FreshRSS/FreshRSS/releases/tag/1.28.0).
Selected new features ✨:
* New customisable message for closed registrations
* Add username in Apache access logs (also in Docker logs): for GReader API, and for HTTP Basic Auth from reverse proxy
Improved performance 🏎️:
* Disable counting articles in user labels for Ajax requests (unused)
Many bug fixes 🐛
This release has been made by @Alkarex, @Frenzie, @Inverle and newcomers @ciro-mota, @eveiscoull, @hackerman70000, @Hufschmidt, @johan456789, @martgnz, @mmeier86, @netsho, @neuhaus, @RobLoach, @rupakbajgain.
Full [changelog](https://github.com/FreshRSS/FreshRSS/blob/1.28.1/CHANGELOG.md):
* Features
* Handle Web scraping of `text/plain` as `` [#8340](https://github.com/FreshRSS/FreshRSS/pull/8340)
* New customisable message for closed registrations [#8462](https://github.com/FreshRSS/FreshRSS/pull/8462)
* Bug fixing
* Fix unwanted expansion of user queries (saved searches) applied to filters [#8395](https://github.com/FreshRSS/FreshRSS/pull/8395)
* Fix encoding of filter actions for labels [#8368](https://github.com/FreshRSS/FreshRSS/pull/8368)
* Fix searching of tags [#8425](https://github.com/FreshRSS/FreshRSS/pull/8425)
* Fix refreshing feeds with token while anonymous refresh is disabled [#8371](https://github.com/FreshRSS/FreshRSS/pull/8371)
* Fix RSS and OPML access by token [#8434](https://github.com/FreshRSS/FreshRSS/pull/8434)
* Fix MySQL/MariaDB `transliterator_transliterate` fallback (when the `php-intl` extension is unavailable) [#8427](https://github.com/FreshRSS/FreshRSS/pull/8427)
* Fix regression with MySQL/MariaDB index hint [#8460](https://github.com/FreshRSS/FreshRSS/pull/8460)
* Auto-add `lastUserModified` database column also during mark-as-read action [#8346](https://github.com/FreshRSS/FreshRSS/pull/8346)
* Do not include hidden feeds when counting unread articles in categories [#8357](https://github.com/FreshRSS/FreshRSS/pull/8357)
* Remove wrong PHP deprecation of OPML export action [#8399](https://github.com/FreshRSS/FreshRSS/pull/8399)
* Fix shortcut for next unread article [#8466](https://github.com/FreshRSS/FreshRSS/pull/8466)
* Fix custom `session.cookie-lifetime` [#8446](https://github.com/FreshRSS/FreshRSS/pull/8446)
* Fix feed validator button when changing the feed URL [#8436](https://github.com/FreshRSS/FreshRSS/pull/8436)
* Performance
* Disable counting articles in user labels for Ajax requests (unused) [#8352](https://github.com/FreshRSS/FreshRSS/pull/8352)
* Security
* Change `Content-Disposition: inline` to `attachment` in `f.php` [#8344](https://github.com/FreshRSS/FreshRSS/pull/8344)
* Hardened user methods `exists`, `mtime`, `ctime` [#26c1102](https://github.com/FreshRSS/FreshRSS/commit/26c1102567c095b051b5e1a0aedb45b78713c283)
* Deployment
* Add username in Apache access logs (also in Docker logs): for GReader API, and for HTTP Basic Auth from reverse proxy [#8392](https://github.com/FreshRSS/FreshRSS/pull/8392)
* SimplePie
* Update of `CURLOPT_ACCEPT_ENCODING` [#8376](https://github.com/FreshRSS/FreshRSS/pull/8376), [simplepie#960](https://github.com/simplepie/simplepie/pull/960), [simplepie#962](https://github.com/simplepie/simplepie/pull/962)
* Fix don’t preserve children inside disallowed `` element [#8443](https://github.com/FreshRSS/FreshRSS/pull/8443)
* Fixes before PHPStan 2 [#8445](https://github.com/FreshRSS/FreshRSS/pull/8445), [simplepie#957](https://github.com/simplepie/simplepie/pull/957)
* Extensions
* Update `.gitignore` to ignore installed extensions [#8372](https://github.com/FreshRSS/FreshRSS/pull/8372)
* UI
* Add `data-category="3"` to ease custom CSS styling of articles [#8397](https://github.com/FreshRSS/FreshRSS/pull/8397)
_[Truncated at 4000 characters — full notes: https://github.com/FreshRSS/FreshRSS/releases/tag/1.28.1]_
### 1.28.0 — FreshRSS 1.28.0
- Date: 2025-12-24
- Version: 1.28.0
- Original notes: https://github.com/FreshRSS/FreshRSS/releases/tag/1.28.0
- Permalink: https://whatsnew.fyi/product/freshrss/releases/1.28.0
- **added** — New sorting and filtering by date of User modified with corresponding search operator, e.g. userdate:PT1H for the past hour
- **added** — New sorting by article length
- **added** — New advanced search form
- **added** — New overview of dates with most unread articles
- **added** — New ability to share feed visibility through API
- **added** — Add new feed visibility (priority) Show in its feed
- **added** — Add compatibility with PCRE word boundary \b and \B for regex search using PostgreSQL
- **added** — Allow marking as read articles older than 1 or 7 days also when sorting by publication date
- **added** — New option to show user labels instead of tags in RSS share
- **added** — Configurable notification timeout
- **added** — OPML export/import of unicity criteria
- **added** — Ensure stable IDs (categories, feeds, labels) during export/import
- **added** — Add username and timestamp to SQLite export from Web UI
- **added** — Add option to apply filter actions to existing articles
- **added** — Support CSS selector ~ subsequent-sibling
- **added** — Web scraping support date format as milliseconds for Unix epoch
- **added** — Allow negative category sort numbers
- **changed** — More uniform SQL search and PHP search for accents and case-sensitivity
- **changed** — Rework saving of configuration files for more reliability in case of e.g. full disk
- **changed** — Scaling of user statistics in Web UI and CLI to help instances with 1k+ users
- **changed** — Improve SQL speed for some critical requests for large databases
- **changed** — API performance optimisation thanks to streaming of large responses
- **changed** — Docker default image updated to Debian 13 Trixie with PHP 8.4.11
- **fixed** — Fix OpenID Connect with Debian 13
- **fixed** — Fix MySQL / MariaDB bug wrongly sorting new articles
- **fixed** — Fix SQLite bind bug when adding tag
- **fixed** — Fix some CSRFs
- **removed** — Move unsafe autologin to an extension
- **deprecated** — Potential breaking changes for some extensions which have to rename some old functions
* [Milestone](https://github.com/FreshRSS/FreshRSS/milestones/1.28.0)
This is a major release, just in time for the holidays 🎄
Selected new features ✨:
* New sorting and filtering by date of *User modified*, with corresponding search operator, e.g. `userdate:PT1H` for the past hour
* New sorting by article length
* New advanced search form
* New overview of dates with most unread articles
* New ability to share feed visibility through API (implemented by e.g. [Capy Reader](https://github.com/jocmp/capyreader))
* Bonus: Capy Reader is also the first open source Android app to support *user labels*
* Better transitions UI between groups of articles
* New links in UI for transitions between groups of articles, and jump to next transition
* Docker default image updated to Debian 13 Trixie with PHP 8.4.11
* And much more…
Improved performance 🏎️:
* Scaling of user statistics in Web UI and CLI, to help instances with 1k+ users
* Improve SQL speed for some critical requests for large databases
* API performance optimisation thanks to streaming of large responses
Selected bug fixes 🐛:
* Fix OpenID Connect with Debian 13
* Fix MySQL / MariaDB bug wrongly sorting new articles
* Fix SQLite bind bug when adding tag
Breaking changes 💥:
* Move unsafe autologin to an extension
* Potential breaking changes for some extensions (which have to rename some old functions)
This release has been made by @Alkarex, @Frenzie, @Inverle, @aledeg, @andris155, @horvi28, @math-GH, @minna-xD and newcomers @Darkentia, @FollowTheWizard, @GreyChame1eon, @McFev, @jocmp, @larsks, @martinhartmann, @matthew-neavling, @pudymody, @raspo, @scharmach, @scollovati, @stag-enterprises, @vandys, @xtmd, @yzx9.
Full [changelog](https://github.com/FreshRSS/FreshRSS/blob/1.28.0/CHANGELOG.md):
* Features
* New sorting and filtering by date of *User modified* [#7886](https://github.com/FreshRSS/FreshRSS/pull/7886), [#8090](https://github.com/FreshRSS/FreshRSS/pull/8090),
[#8105](https://github.com/FreshRSS/FreshRSS/pull/8105), [#8118](https://github.com/FreshRSS/FreshRSS/pull/8118), [#8130](https://github.com/FreshRSS/FreshRSS/pull/8130)
* Corresponding search operator, e.g. `userdate:PT1H` for the past hour [#8093](https://github.com/FreshRSS/FreshRSS/pull/8093)
* Allows finding articles marked by the local user as read/unread or starred/unstarred at specific dates for e.g. undo action.
* New sorting by article length [#8119](https://github.com/FreshRSS/FreshRSS/pull/8119)
* New advanced search form [#8103](https://github.com/FreshRSS/FreshRSS/pull/8103), [#8122](https://github.com/FreshRSS/FreshRSS/pull/8122), [#8226](https://github.com/FreshRSS/FreshRSS/pull/8226)
* Add compatibility with PCRE word boundary `\b` and `\B` for regex search using PostgreSQL [#8141](https://github.com/FreshRSS/FreshRSS/pull/8141)
* More uniform SQL search and PHP search for accents and case-sensitivity (e.g. for automatically marking as read) [#8329](https://github.com/FreshRSS/FreshRSS/pull/8329)
* New overview of dates with most unread articles [#8089](https://github.com/FreshRSS/FreshRSS/pull/8089)
* Allow marking as read articles older than 1 or 7 days also when sorting by publication date [#8163](https://github.com/FreshRSS/FreshRSS/pull/8163)
* New option to show user labels instead of tags in RSS share [#8112](https://github.com/FreshRSS/FreshRSS/pull/8112)
* Add new feed visibility (priority) *Show in its feed* [#7972](https://github.com/FreshRSS/FreshRSS/pull/7972)
* New ability to share feed visibility through API (implemented by e.g. Capy Reader) [#7583](https://github.com/FreshRSS/FreshRSS/pull/7583), [#8158](https://github.com/FreshRSS/FreshRSS/pull/8158)
* Configurable notification timeout [#7942](https://github.com/FreshRSS/FreshRSS/pull/7942)
* OPML export/import of unicity criteria [#8243](https://github.com/FreshRSS/FreshRSS/pull/8243)
* Ensure stable IDs (categories, feeds, labels) during expor
_[Truncated at 4000 characters — full notes: https://github.com/FreshRSS/FreshRSS/releases/tag/1.28.0]_
### 1.27.1 — FreshRSS 1.27.1
- Date: 2025-09-27
- Version: 1.27.1
- Original notes: https://github.com/FreshRSS/FreshRSS/releases/tag/1.27.1
- Permalink: https://whatsnew.fyi/product/freshrss/releases/1.27.1
- **added** — Automatic database recovery skips broken entries during CLI export/import
- **added** — Add security option for CSP frame-ancestors
- **added** — Lazy-load