In this release, the coding focus has been on moving to PHP 8.1+ and refactoring the integration of the SimplePie library (which was long due). At the same time, plenty of new features have been added. Enjoy! π
Breaking changes π₯:
Require PHP 8.1+ (and improved support of PHP 8.4+)
Require PostgreSQL 10+ or MariaDB 10.0.5+ or MySQL 8+
β οΈ Advanced regex syntax for searches depends on the database used (SQLite, PostgreSQL, MariaDB, MySQL),
but FreshRSS filter actions such as auto-mark-as-read and auto-favourite always use PHP PCRE2 syntax.
Allow dynamic search operator in user queries, like search:UserQueryA date:P1d
New feed mode HTML+XPath+JSON dot notation (JSON in HTML)
Better HTTP compliance with support for HTTP response headers Cache-Control: max-age and Expires
New unicity policies and heuristic for feeds with bad article IDs (reduce the problem of duplicated articles)
New option to automatically mark new articles as read if an identical title already exists in the same category
Add ability to remove content from articles with CSS selectors, also when not using full content
New condition option to selectively retrieve full content of articles
New UI feature to download a userβ SQLite database or a database SQLite export (to be produced by CLI)
β οΈ Advanced regex syntax for searches depends on the database used (SQLite, PostgreSQL, MariaDB, MySQL),
but FreshRSS filter actions such as auto-mark-as-read and auto-favourite always use PHP PCRE2 syntax.
Allow dynamic search operator in user queries, like search:UserQueryA date:P1d#6851
New feed mode HTML+XPath+JSON dot notation (JSON in HTML) #6888
Better HTTP compliance with support for HTTP response headers Cache-Control: max-age and Expires#6812, FreshRSS/simplepie#26
Support custom HTTP request headers per feed (e.g. for Authorization) #6820
New unicity policies and heuristic for feeds with bad article IDs #4487, #6900
Fixed the alignment of the select-all checkbox in the notifications drawer (#24213 by @Dominic-Marcelino)
Enhanced vertical alignment of SSO icons on login page (#24119 by @robsoncombr)
Fixed an issue with unintentional sorting after editing items in relational interfaces (#24172 by @osmandvc)
A potential licensing issue was reported in our use of TinyMCE (used for the WYSIWYG interface) after they changed licenses in the new major version. We've downgraded to the previous major which is MIT-licensed to resolve that while we look for a long term solution. (#24181 by @paescuj)
Fixed the display of relational fields in nested groups (#24183 by @formfcw)
Improved the default user created display template by using the avatar field (#24160 by @gavalierm)
Fixed thumbnails not appearing in File Library after upload (#24087 by @joselcvarela)
This is a security release to address a vulnerability in our dependencies where specifically formatted requests could be used to manipulate application configuration in environments where a certain PHP option (register_argc_argv) is enabled. This is not an option that's typically enabled in production web-serving environments, but it's advised to update where uncertain.
Full List of Changes
Updated application PHP dependencies.
Updated translations with latest Crowdin changes. (#5317)
Updated setting categories to validate by for existing views, allowing custom categories to be used via the theme system. Thanks to @LachTrip. (#5255, #5251)
Updated translations with latest Crowdin changes. (#5250)
Vulnerability that allows a user with the lowest privilege to conduct a session hijacking, subsequently gaining unauthorized access to the admin and other user accounts. (Muhammad Aizat, datack.my)
Ensured data in sidebar is re-fetched when switching pages while a sidebar pane is already opened (#23553 by @SP12893678)
Ensured errors occured within the cards layout are always shown (#23802 by @SP12893678)
Fixed format warnings in api/src/request/is-denied-ip.ts and app/src/interfaces/input-rich-text-html/input-rich-text-html.vue (#23584 by @ComfortablyCoding)
Fixed an issue that would cause log streaming to fail on Directus installations that use a subpath in the URL (#23569 by @JoshTheDerf)
Fixed an issue that could cause the color picker interface to crash when a invalid color was used and improved the UX of interacting with the text input of the color picker interface. (#23654 by @connorwinston)
Ensured users are redirected to the intended page after login via LDAP (#23788 by @mmsardar)
Fixed failing validation of $CURRENT_POLICIES and $CURRENT_ROLES in the filter interface (#23730 by @hanneskuettner)
Fixed the truncation of long collection names in the permission configuration interface (#23700 by @hanneskuettner)
Fixed format warnings in api/src/request/is-denied-ip.ts and app/src/interfaces/input-rich-text-html/input-rich-text-html.vue (#23584 by @ComfortablyCoding)
Ensured notifications are reloaded after manually running a Flow to provide users with the latest notifications generated by the Flow (#23381 by @Dominic-Marcelino)
Ensured warning about unsaved changes is displayed for Flows with custom confirmation config too (#23408 by @Dominic-Marcelino)
Improved selection label of the "New Tab" checkbox in the html rich text editor (#23502 by @simboonlong)
Added notice in notifications drawer when no items are found due to applied search/filter (#23428 by @paescuj)
Fixed styling issues with the related-values display (#21854 by @formfcw)