{ "success": true, "article": { "extract_id": "sha256:398657bc79f4c8d43f1f695f772f296c9a0fc28df30758562c6cc2fbcc277ab9", "item_id": "sha256:6b36071bbd22c58692c039e172669ae28ac1ec8a6a6bce150c22d80af29761fc", "source_id": "freshrss:2987af960359c5c0", "url": "https://github.com/FreshRSS/FreshRSS/releases/tag/1.28.0", "title": "FreshRSS 1.28.0", "author": "Alkarex", "published_at": "2025-12-24T19:27:23Z", "language": null, "content_kind": "article", "plain_text": "FreshRSS 1.28.0\nAlkarex\nreleased this\n24 Dec 19:27\nΒ·\n135 commits\nto edge\nsince this release\nImmutable\nrelease. Only release title and notes can be modified.\nThis is a major release, just in time for the holidays πŸŽ„\nSelected new features ✨:\n- New sorting and filtering by date of User modified, with corresponding search operator, e.g.\nuserdate:PT1H\nfor the past hour - New sorting by article length\n- New advanced search form\n- New overview of dates with most unread articles\n- New ability to share feed visibility through API (implemented by e.g. Capy Reader)\n- Bonus: Capy Reader is also the first open source Android app to support user labels\n- Better transitions UI between groups of articles\n- New links in UI for transitions between groups of articles, and jump to next transition\n- Docker default image updated to Debian 13 Trixie with PHP 8.4.11\n- And much more…\nImproved performance 🏎️:\n- Scaling of user statistics in Web UI and CLI, to help instances with 1k+ users\n- Improve SQL speed for some critical requests for large databases\n- API performance optimisation thanks to streaming of large responses\nSelected bug fixes πŸ›:\n- Fix OpenID Connect with Debian 13\n- Fix MySQL / MariaDB bug wrongly sorting new articles\n- Fix SQLite bind bug when adding tag\nBreaking changes πŸ’₯:\n- Move unsafe autologin to an extension\n- Potential breaking changes for some extensions (which have to rename some old functions)\nThis 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.\nFull changelog:\n- Features\n- New sorting and filtering by date of User modified #7886, #8090,\n#8105, #8118, #8130- Corresponding search operator, e.g.\nuserdate:PT1H\nfor 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.\n- Corresponding search operator, e.g.\n- New sorting by article length #8119\n- New advanced search form #8103, #8122, #8226\n- Add compatibility with PCRE word boundary\n\\b\nand\\B\nfor 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\n- New overview of dates with most unread articles #8089\n- Allow marking as read articles older than 1 or 7 days also when sorting by publication date #8163\n- New option to show user labels instead of tags in RSS share #8112\n- Add new feed visibility (priority) Show in its feed #7972\n- New ability to share feed visibility through API (implemented by e.g. Capy Reader) #7583, #8158\n- Configurable notification timeout #7942\n- OPML export/import of unicity criteria #8243\n- Ensure stable IDs (categories, feeds, labels) during export/import #7988\n- Add username and timestamp to SQLite export from Web UI #8169\n- Add option to apply filter actions to existing articles #7959, #8259\n- Support CSS selector\n~\nsubsequent-sibling #8154- Upstream PR phpgt/CssXPath#231\n- Rework saving of configuration files for more reliability in case of e.g. full disk #8220\n- Web scraping support date format as milliseconds for Unix epoch #8266\n- Allow negative category sort numbers #8330\n- New sorting and filtering by date of User modified #7886, #8090,\n- Performance\n- Improve SQL speed for updating cached information #6957, #8207,\n#8255, #8254, #8255 - Fix SQL performance issue with MySQL, using an index hint #8211\n- Scaling of user statistics in Web UI and CLI, to help instances with 1k+ users #8277\n- API streaming of large responses for reducing memory consumption and increasing speed #8041\n- Improve SQL speed for updating cached information #6957, #8207,\n- Security\n- πŸ’₯ Move unsafe autologin to an extension #7958\n- Fix some CSRFs #8035\n- Strengthen some crypto (login, tokens, nonces) #8061, #8320\n- Create separate HTTP\nRetry-After\nrules for proxies #8029, #8218 - Add\ndata:\nto CSP in subscription controller #8253 - Improve anonymous authentication logic #8165\n- Enable GitHub release immutability #8205\n- Bug fixing\n- Exclude local networks for domain-wide HTTP\nRetry-After\n#8195 - Fix OpenID Connect with Debian 13 #8032\n- Fix MySQL / MariaDB bug wrongly sorting new articles #8223\n- Fix MySQL / MariaDB database size calculation #8282\n- Fix SQLite bind bug when adding tag #8101\n- Fix SQL auto-update of field\nf.kind\nto ease migrations from FreshRSS versions older than 1.20.0 #8148 - Fix search encoding and quoting #8311, #8324, #8338\n- Fix handling of database unexpected null content (during migrations) #8319, #8321\n- Fix drag & drop of user query losing information #8113\n- Fix DOM error while filtering retrieved full content #8132, #8161\n- Fix\nconfig.custom.php\nduring install #8033 - Fix do not mark important feeds as read from category #8067\n- Fix regression of warnings in Web browser console due to lack of\nwindow.bcrypt\nobject #8166 - Fix chart resize regression due to\nchart.js\nv4 update #8298 - Fix CLI user creation warning when language is not given #8283\n- Fix merging of custom HTTP headers #8251\n- Fix bug in the case of duplicated mark-as-read filters #8322\n- Exclude local networks for domain-wide HTTP\n- SimplePie\n- Fix support of HTTP trailer headers #7983, simplepie#943\n- Apply HTTPS policy also on GUIDs and permalinks #8037, simplepie#951\n- Fix\nWordPress.com\nHTTP duplicates with WebSub Automattic/pushpress#16\n- Fix\n- Implement HTML whitelist for SimplePie sanitizer #7924, simplepie#947\n- Various upstream contributions simplepie#940, simplepie#944\n- Deployment\n- Docker default image updated to Debian 13 Trixie with PHP 8.4.11 and Apache 2.4.65 #8032\n- Docker alternative image updated to Alpine 3.23 with PHP 8.4.15 and Apache 2.4.65 #8285\n- Fix Docker healthcheck\ncli/health.php\ncompatibility with OpenID Connect #8040 - Improve Docker for compatibility with other base images such as Arch Linux #8299\n- Improve\ncli/access-permissions.sh\nto detect the correct permission Web group such aswww-data\n,apache\n, orhttp\n- Improve\n- Update PostgreSQL volume for Docker #8216, #8224\n- Catch lack of\nexec()\nfunction for git update #8228 - Work around\nDOMDocument::saveHTML()\nscrambling charset encoding in some versions of libxml2 #8296 - Improve configuration checks for PHP extensions (in Web UI and CLI), including recommending e.g.\nphp-intl\n#8334\n- UI\n- New button for toggling sidebar on desktop view #8201, #8286\n- Better transitions between groups of articles #8174\n- New links in transitions and jump to next transition #8294\n- More visible selected article #8230\n- Show the parsed search query instead of the original user input #8293,\n#8306, #8341 - Show search query in the page title #8217\n- Scroll into filtered feed/category on page load in the sidebar #8281, #8307\n- Fix autocomplete issues in change password form #7812\n- Fix navigating between read feeds using shortcut shift+j/k #8057\n- Dark background in Web app manifest to avoid white flash when opening #8140\n- Increase button visibility in UI to change theme #8149\n- Replace arrow navigation in theme switcher with\n