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)
- 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:
- Features
- New sorting and filtering by date of User modified #7886, #8090,
#8105, #8118, #8130
- Corresponding search operator, e.g.
userdate:PT1H for the past hour #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
- New advanced search form #8103, #8122, #8226
- Add compatibility with PCRE word boundary
\b and \B for regex search using PostgreSQL #8141
- More uniform SQL search and PHP search for accents and case-sensitivity (e.g. for automatically marking as read) #8329
- New overview of dates with most unread articles #8089
- Allow marking as read articles older than 1 or 7 days also when sorting by publication date #8163
- New option to show user labels instead of tags in RSS share #8112
- Add new feed visibility (priority) Show in its feed #7972
- New ability to share feed visibility through API (implemented by e.g. Capy Reader) #7583, #8158
- Configurable notification timeout #7942
- OPML export/import of unicity criteria #8243
- Ensure stable IDs (categories, feeds, labels) during export/import #7988
- Add username and timestamp to SQLite export from Web UI #8169
- Add option to apply filter actions to existing articles #7959, #8259
- Support CSS selector
~ subsequent-sibling #8154
- Rework saving of configuration files for more reliability in case of e.g. full disk #8220
- Web scraping support date format as milliseconds for Unix epoch #8266
- Allow negative category sort numbers #8330
- Performance
- Improve SQL speed for updating cached information #6957, #8207,
#8255, #8254, #8255
- Fix SQL performance issue with MySQL, using an index hint #8211
- Scaling of user statistics in Web UI and CLI, to help instances with 1k+ users #8277
- API streaming of large responses for reducing memory consumption and increasing speed #8041
- Security
- 💥 Move unsafe autologin to an extension #7958
- Fix some CSRFs #8035
- Strengthen some crypto (login, tokens, nonces) #8061, #8320
- Create separate HTTP
Retry-After rules for proxies #8029, #8218
- Add
data: to CSP in subscription controller #8253
- Improve anonymous authentication logic #8165
- Enable GitHub release immutability #8205
- Bug fixing
- Exclude local networks for domain-wide HTTP
Retry-After #8195
- Fix OpenID Connect with Debian 13 #8032
- Fix MySQL / MariaDB bug wrongly sorting new articles #8223
- Fix MySQL / MariaDB database size calculation #8282
- Fix SQLite bind bug when adding tag #8101
- Fix SQL auto-update of field
f.kind to ease migrations from FreshRSS versions older than 1.20.0 #8148
- Fix search encoding and quoting #8311, #8324, #8338
- Fix handling of database unexpected null content (during migrations) #8319, #8321
- Fix drag & drop of user query losing information #8113
- Fix DOM error while filtering retrieved full content #8132, #8161
- Fix
config.custom.php during install #8033
- Fix do not mark important feeds as read from category #8067
- Fix regression of warnings in Web browser console due to lack of
window.bcrypt object #8166
- Fix chart resize regression due to
chart.js v4 update #8298
- Fix CLI user creation warning when language is not given #8283
- Fix merging of custom HTTP headers #8251
- Fix bug in the case of duplicated mark-as-read filters #8322
- SimplePie
- Deployment
- Docker default image updated to Debian 13 Trixie with PHP 8.4.11 and Apache 2.4.65 #8032
- Docker alternative image updated to Alpine 3.23 with PHP 8.4.15 and Apache 2.4.65 #8285
- Fix Docker healthcheck
cli/health.php compatibility with OpenID Connect #8040
- Improve Docker for compatibility with other base images such as Arch Linux #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, #8224
- Catch lack of
exec() function for git update #8228
- Work around
DOMDocument::saveHTML() scrambling charset encoding in some versions of libxml2 #8296
- Improve configuration checks for PHP extensions (in Web UI and CLI), including recommending e.g.
php-intl #8334
- UI
- New button for toggling sidebar on desktop view #8201, #8286
- Better transitions between groups of articles #8174
- New links in transitions and jump to next transition #8294
- More visible selected article #8230
- Show the parsed search query instead of the original user input #8293,
#8306, #8341
- Show search query in the page title #8217
- Scroll into filtered feed/category on page load in the sidebar #8281, #8307
- Fix autocomplete issues in change password form #7812
- Fix navigating between read feeds using shortcut shift+j/k #8057
- Dark background in Web app manifest to avoid white flash when opening #8140
- Increase button visibility in UI to change theme #8149
- Replace arrow navigation in theme switcher with
<select> #8190
- Improve scroll of article after load of user labels #7962
- Keep scroll state of page when closing the slider #8295, #8301
- Scroll into filtered feed/category on page load #8281
- Display sidebar dropdowns above if no space below #8335, #8336
- Use native CSS instead of SCSS #8200, #8241
- Various UI and style improvements: #8171, #8185, #8196
- JavaScript finalise migration from
Promise to async/await: #8182
- API
- API performance optimisation: streaming of large responses #8041
- Fever API: Add
with_ids parameter to mass-change read/unread/saved/unsaved on lists of articles #8312
- Misc API: better REST error semantics #8232
- Extensions
- Add support for extension priority #8038
- Add support for extension compatibility #8081
- Improve PHP code with hook enums #8036
- New hook
nav_entries #8054
- Rename Extensions default branch from master to main #8194
- I18n
- Translation status as text in README #7842
- Add new translate CLI commands
move #8214
- Change some regional language codes to comply with RFC 5646 / IETF BCP 47 / ISO 3166 / ISO 639-1 #8065
- Improve German #8028
- Improve Greek #8146
- Improve Finnish #8073, #8092
- Improve Hungarian #8244
- Improve Italian #8115, #8186
- Improve Polish #8134, #8135
- Improve Russian #8155, #8197
- Improve Simplified Chinese #8308, #8313
- Misc.
- Add code to modify a search expression #8293
- Remove Pocket sharing service #8127, #8128
- Update to PHPMailer 7.0.1 #8048, #8180, #8272
- 💥 Housekeeping of
lib_rss.php with potential breaking changes for some extensions #8193,
- Use native PHP
#[Deprecated] #8325
- Improve PHP code #8156, #8203, #8284,
#8292, #8297
- GitHub Actions:
--no-progress #8315
- Update dev dependencies #8043, #8044,
#8045, #8046, #8047,
#8052, #8176, #8177,
#8178, #8179, #8210,
#8270, #8271, #8273,
#8274, #8275, #8276