# 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 `