Reading view

FreshRSS 1.29.1

This is bug-fix release for 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:

  • Features
    • Accept .txt import of feed URLs in additional to e.g. OPML #8818, #8837
    • New CLI for automatic periodic SQLite export with retention #8819
    • More feed info: last received date, publication date #8799
  • Bug fixing
    • Fix cookies with some browsers #8867
    • Fix search in shared user queries with empty results #8863
    • Fix XML errors with loading invalid OPML in lib_opml library #8652, #8853,
      lib_opml#48, lib_opml#51
    • Fix ensure maximum number of feeds also with Dynamic OPML #8832
    • Fix click mark as read #8817
  • UI
    • Improve browser compatibility to keep mobile navigation at the bottom #8833
    • Improve support of older/simpler Web browsers/engines such as SeaMonkey #8810,
      #8811, #8813,
    • Improve Swage theme #8842
    • Rename Nord theme to Nord #8805
    • Replace GIF spinner by CSS spinner #8804, #8812
    • Various UI and style improvements: #8800, #8816,
  • I18n
    • Improve Brazilian Portuguese #8846
    • Improve Dutch #8868
    • Improve German #8840
    • Improve Polish #8854
    • Improve Russian #8861
    • Improve Traditional Chinese #8849
  • Misc.

  •  

FreshRSS 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:

  • Features
    • New sort order preferences at global, category, and feed levels #8234
    • New filtering by date of Server modification date #8131, #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
    • New option to automatically mark new articles as read if an identical GUID already exists in the same category #8673
    • Automatic feed visibility/priority during search #8609
    • Add feed visibility filter to statistics view unread dates #8489
    • Add option to enable/disable notifications, also for PWA #8458
    • Add a form to create new user queries on the User Queries page #8623
    • Allow WebSub hub push from same private network #8450
    • Support category field in JSON feed import #8786
  • Bug fixing
    • Fix wrong search toString in case of regex-looking string #8479
    • Fix article last seen date in case of feed errors #8646
    • Fix search expansion with backslash #8497
    • Fix user query parsing #8543
    • Fix search in shared user queries #8789
    • Fix redirect to wrong view after mark as read in reader and global views #8552
    • Fix SQLite paging when sorting by article length #8594
    • Fix change sorting during paging #8688
    • Fix SQL keyset pagination when sorting by category name #8597
    • Fix SQL duplicates in the user labels when sorting randomly #8626
    • Fix wrong error redirect in subscription management #8625
    • Fix do not include hidden feeds when counting total number of unread articles #8715
    • Update user modify date when changing extensions UserJS / UserCSS #8607
    • Non-strict OPML export #eedefb
  • Security
    • Limit cURL to protocols HTTP, HTTPS #8713
    • Better sanitise favicon URLs #8714
    • New setting for <iframe> referrer allow list #8672
    • Fix email validation and allow error page for unverified email users #8582
    • Add allowfullscreen to <iframe> #8467
    • Rewrite Set-Cookie using native PHP support of SameSite #8447, #8778
      • Sanitize lifetime of session cookies from session.cookie-lifetime in php.ini
    • Update to <meta name="referrer" content="no-referrer" /> from deprecated never #8725
    • Preventive measure against search ingestion #8777
  • UI
    • New option to hide sidebar by default #8528
    • Improve mobile view with multiple lines when thumbnails and summaries are shown #8631
    • New option to disable unread counter in tab title and favicon #8728
    • Show time since when a feed has problems #8670
    • Improve add feed UI #8683
    • Improve slider behaviour when using navigate back button #8496, #8524
    • Improve consistency of slider behaviour after submitting form #8612
    • Create dynamic favicons from SVG instead of PNG canvas #8577, #8588
    • Only display scrollbar everywhere if there's an overflow (especially for Chromium) #8542
    • Fix CSS padding of .content pre code #8620
    • Fix wrong navigation buttons layout on Chromium #8606
    • Fix don’t mark as read if middle click is outside of article link #8553
    • More robust JS #8595
    • Fix sidebar slide animation at narrow viewports #8747
    • Visually dim disabled users in user management table #8768
    • Improve multiple UI themes #8711, #8732,
      #8733, #8734, #8735,
      #8736, #8737, #8738,
      #8739, #8743, #8746,
      #8749, #8761, #8781,
      #8784, #8785
    • Various UI and style improvements: #8537, #8538,
      #8541, #8624, #8731,
      #8774
  • Deployment
    • Also push Docker images to GitHub registry #8669
    • Improve support of PHP 8.5+ using Pdo\Mysql #8526
    • Add support for Podman in Makefile #8456
    • Re-add database status in installation check #8510
    • Docker / CLI: Allow chown/chmod to fail with warning #8635
  • Extensions
    • New Webhook extension for automated RSS notifications Extensions#456
    • New LLM Classification extension to automatically tag incoming articles based on a prompt sent to an LLM Extensions#458
    • New extension methods to get typed configuration values #8696
    • New hook: Minz_HookType::ActionExecute #8599, #8603
    • New hook to modify the list of feeds to actualize #8655, #8675
    • Allow passing Minz_HookType as hook name in registerHook() #8600
    • Return more info and status from httpGet() #8700
    • Make httpGet() cache nullable #8705
    • Allow extensions’ configuration UI to use select-input-changer JavaScript helper #8721
  • SimplePie
  • CLI
    • New cli/purge.php to apply purge policy #8740
  • I18n
  • Misc.

  •  

FreshRSS 1.28.1

This is a release focussing on bug fixing, in particular regressions from the release 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:

  • Features
    • Handle Web scraping of text/plain as <pre class="text-plain"> #8340
    • New customisable message for closed registrations #8462
  • Bug fixing
    • Fix unwanted expansion of user queries (saved searches) applied to filters #8395
    • Fix encoding of filter actions for labels #8368
    • Fix searching of tags #8425
    • Fix refreshing feeds with token while anonymous refresh is disabled #8371
    • Fix RSS and OPML access by token #8434
    • Fix MySQL/MariaDB transliterator_transliterate fallback (when the php-intl extension is unavailable) #8427
    • Fix regression with MySQL/MariaDB index hint #8460
    • Auto-add lastUserModified database column also during mark-as-read action #8346
    • Do not include hidden feeds when counting unread articles in categories #8357
    • Remove wrong PHP deprecation of OPML export action #8399
    • Fix shortcut for next unread article #8466
    • Fix custom session.cookie-lifetime #8446
    • Fix feed validator button when changing the feed URL #8436
  • Performance
    • Disable counting articles in user labels for Ajax requests (unused) #8352
  • Security
    • Change Content-Disposition: inline to attachment in f.php #8344
    • Hardened user methods exists, mtime, ctime #26c1102
  • Deployment
    • Add username in Apache access logs (also in Docker logs): for GReader API, and for HTTP Basic Auth from reverse proxy #8392
  • SimplePie
  • Extensions
    • Update .gitignore to ignore installed extensions #8372
  • UI
    • Add data-category="3" to ease custom CSS styling of articles #8397
    • Fix space between By: and the author’s name #8422
  • I18n
  • Misc.

  •  

FreshRSS 1.28.0

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.

  •