# FreshRSS changelog See also [the FreshRSS releases](https://github.com/FreshRSS/FreshRSS/releases). ## 202X-XX-XX FreshRSS 1.28.1 * Features * Handle Web scraping of `text/plain` as `
` [#8340](https://github.com/FreshRSS/FreshRSS/pull/8340)
* Bug fixing
	* Auto-add `lastUserModified` database column also during mark-as-read action [#8346](https://github.com/FreshRSS/FreshRSS/pull/8346)
* 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)
* Extensions
	* Update `.gitignore` to ignore installed extensions [#8372](https://github.com/FreshRSS/FreshRSS/pull/8372)


## 2025-12-24 FreshRSS 1.28.0

* 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 export/import [#7988](https://github.com/FreshRSS/FreshRSS/pull/7988)
	* Add username and timestamp to SQLite export from Web UI [#8169](https://github.com/FreshRSS/FreshRSS/pull/8169)
	* Add option to apply filter actions to existing articles [#7959](https://github.com/FreshRSS/FreshRSS/pull/7959), [#8259](https://github.com/FreshRSS/FreshRSS/pull/8259)
	* Support CSS selector `~` *subsequent-sibling* [#8154](https://github.com/FreshRSS/FreshRSS/pull/8154)
		* Upstream PR [phpgt/CssXPath#231](https://github.com/phpgt/CssXPath/pull/231)
	* Rework saving of configuration files for more reliability in case of e.g. full disk [#8220](https://github.com/FreshRSS/FreshRSS/pull/8220)
	* Web scraping support date format as milliseconds for Unix epoch [#8266](https://github.com/FreshRSS/FreshRSS/pull/8266)
	* Allow negative category sort numbers [#8330](https://github.com/FreshRSS/FreshRSS/pull/8330)
* Performance
	* Improve SQL speed for updating cached information [#6957](https://github.com/FreshRSS/FreshRSS/pull/6957), [#8207](https://github.com/FreshRSS/FreshRSS/pull/8207),
		[#8255](https://github.com/FreshRSS/FreshRSS/pull/8255), [#8254](https://github.com/FreshRSS/FreshRSS/pull/8254), [#8255](https://github.com/FreshRSS/FreshRSS/pull/8255)
	* Fix SQL performance issue with MySQL, using an index hint [#8211](https://github.com/FreshRSS/FreshRSS/pull/8211)
	* Scaling of user statistics in Web UI and CLI, to help instances with 1k+ users [#8277](https://github.com/FreshRSS/FreshRSS/pull/8277)
	* API streaming of large responses for reducing memory consumption and increasing speed [#8041](https://github.com/FreshRSS/FreshRSS/pull/8041)
* Security
	* 💥 Move unsafe autologin to an extension [#7958](https://github.com/FreshRSS/FreshRSS/pull/7958)
	* Fix some CSRFs [#8035](https://github.com/FreshRSS/FreshRSS/pull/8035)
	* Strengthen some crypto (login, tokens, nonces) [#8061](https://github.com/FreshRSS/FreshRSS/pull/8061), [#8320](https://github.com/FreshRSS/FreshRSS/pull/8320)
	* Create separate HTTP `Retry-After` rules for proxies [#8029](https://github.com/FreshRSS/FreshRSS/pull/8029), [#8218](https://github.com/FreshRSS/FreshRSS/pull/8218)
	* Add `data:` to CSP in subscription controller [#8253](https://github.com/FreshRSS/FreshRSS/pull/8253)
	* Improve anonymous authentication logic [#8165](https://github.com/FreshRSS/FreshRSS/pull/8165)
	* Enable GitHub [release immutability](https://github.blog/changelog/2025-10-28-immutable-releases-are-now-generally-available/) [#8205](https://github.com/FreshRSS/FreshRSS/issues/8205)
* Bug fixing
	* Exclude local networks for domain-wide HTTP `Retry-After` [#8195](https://github.com/FreshRSS/FreshRSS/pull/8195)
	* Fix OpenID Connect with Debian 13 [#8032](https://github.com/FreshRSS/FreshRSS/pull/8032)
	* Fix MySQL / MariaDB bug wrongly sorting new articles [#8223](https://github.com/FreshRSS/FreshRSS/pull/8223)
	* Fix MySQL / MariaDB database size calculation [#8282](https://github.com/FreshRSS/FreshRSS/pull/8282)
	* Fix SQLite bind bug when adding user label [#8101](https://github.com/FreshRSS/FreshRSS/pull/8101)
	* Fix SQL auto-update of field `f.kind` to ease migrations from FreshRSS versions older than 1.20.0 [#8148](https://github.com/FreshRSS/FreshRSS/pull/8148)
	* Fix search encoding and quoting [#8311](https://github.com/FreshRSS/FreshRSS/pull/8311), [#8324](https://github.com/FreshRSS/FreshRSS/pull/8324), [#8338](https://github.com/FreshRSS/FreshRSS/pull/8338)
	* Fix handling of database unexpected null content (during migrations) [#8319](https://github.com/FreshRSS/FreshRSS/pull/8319), [#8321](https://github.com/FreshRSS/FreshRSS/pull/8321)
	* Fix drag & drop of user query losing information [#8113](https://github.com/FreshRSS/FreshRSS/pull/8113)
	* Fix DOM error while filtering retrieved full content [#8132](https://github.com/FreshRSS/FreshRSS/pull/8132), [#8161](https://github.com/FreshRSS/FreshRSS/pull/8161)
	* Fix `config.custom.php` during install [#8033](https://github.com/FreshRSS/FreshRSS/pull/8033)
	* Fix do not mark important feeds as read from category [#8067](https://github.com/FreshRSS/FreshRSS/pull/8067)
	* Fix regression of warnings in Web browser console due to lack of `window.bcrypt` object [#8166](https://github.com/FreshRSS/FreshRSS/pull/8166)
	* Fix chart resize regression due to `chart.js` v4 update [#8298](https://github.com/FreshRSS/FreshRSS/pull/8298)
	* Fix CLI user creation warning when language is not given [#8283](https://github.com/FreshRSS/FreshRSS/pull/8283)
	* Fix merging of custom HTTP headers [#8251](https://github.com/FreshRSS/FreshRSS/pull/8251)
	* Fix bug in the case of duplicated mark-as-read filters [#8322](https://github.com/FreshRSS/FreshRSS/pull/8322)
* SimplePie
	* Fix support of HTTP trailer headers [#7983](https://github.com/FreshRSS/FreshRSS/pull/7983), [simplepie#943](https://github.com/simplepie/simplepie/pull/943)
	* Apply HTTPS policy also on GUIDs and permalinks [#8037](https://github.com/FreshRSS/FreshRSS/pull/8037), [simplepie#951](https://github.com/simplepie/simplepie/pull/951)
		* Fix `WordPress.com` HTTP duplicates with WebSub [Automattic/pushpress#16](https://github.com/Automattic/pushpress/pull/16)
	* Implement HTML whitelist for SimplePie sanitizer [#7924](https://github.com/FreshRSS/FreshRSS/pull/7924), [simplepie#947](https://github.com/simplepie/simplepie/pull/947)
	* Various upstream contributions [simplepie#940](https://github.com/simplepie/simplepie/pull/940), [simplepie#944](https://github.com/simplepie/simplepie/pull/944)
* Deployment
	* Docker default image updated to Debian 13 Trixie with PHP 8.4.11 and Apache 2.4.65 [#8032](https://github.com/FreshRSS/FreshRSS/pull/8032)
	* Docker alternative image updated to Alpine 3.23 with PHP 8.4.15 and Apache 2.4.65 [#8285](https://github.com/FreshRSS/FreshRSS/pull/8285)
	* Fix Docker healthcheck `cli/health.php` compatibility with OpenID Connect [#8040](https://github.com/FreshRSS/FreshRSS/pull/8040)
	* Improve Docker for compatibility with other base images such as Arch Linux [#8299](https://github.com/FreshRSS/FreshRSS/pull/8299)
		* Improve `cli/access-permissions.sh` to detect the correct permission Web group such as `www-data`, `apache`, or `http`
	* Update PostgreSQL volume for Docker [#8216](https://github.com/FreshRSS/FreshRSS/pull/8216), [#8224](https://github.com/FreshRSS/FreshRSS/pull/8224)
	* Catch lack of `exec()` function for git update [#8228](https://github.com/FreshRSS/FreshRSS/pull/8228)
	* Work around `DOMDocument::saveHTML()` scrambling charset encoding in some versions of libxml2 [#8296](https://github.com/FreshRSS/FreshRSS/pull/8296)
	* Improve configuration checks for PHP extensions (in Web UI and CLI), including recommending e.g. `php-intl` [#8334](https://github.com/FreshRSS/FreshRSS/pull/8334)
* UI
	* New button for toggling sidebar on desktop view [#8201](https://github.com/FreshRSS/FreshRSS/pull/8201), [#8286](https://github.com/FreshRSS/FreshRSS/pull/8286)
	* Better transitions between groups of articles [#8174](https://github.com/FreshRSS/FreshRSS/pull/8174)
	* New links in transitions and jump ⏭ to next transition [#8294](https://github.com/FreshRSS/FreshRSS/pull/8294)
	* More visible selected article [#8230](https://github.com/FreshRSS/FreshRSS/pull/8230)
	* Show the parsed search query instead of the original user input [#8293](https://github.com/FreshRSS/FreshRSS/pull/8293),
		[#8306](https://github.com/FreshRSS/FreshRSS/pull/8306), [#8341](https://github.com/FreshRSS/FreshRSS/pull/8341)
	* Show search query in the page title [#8217](https://github.com/FreshRSS/FreshRSS/pull/8217)
	* Scroll into filtered feed/category on page load in the sidebar [#8281](https://github.com/FreshRSS/FreshRSS/pull/8281), [#8307](https://github.com/FreshRSS/FreshRSS/pull/8307)
	* Fix autocomplete issues in change password form [#7812](https://github.com/FreshRSS/FreshRSS/pull/7812)
	* Fix navigating between read feeds using shortcut shift+j/k [#8057](https://github.com/FreshRSS/FreshRSS/pull/8057)
	* Dark background in Web app manifest to avoid white flash when opening [#8140](https://github.com/FreshRSS/FreshRSS/pull/8140)
	* Increase button visibility in UI to change theme [#8149](https://github.com/FreshRSS/FreshRSS/pull/8149)
	* Replace arrow navigation in theme switcher with `