See also the FreshRSS releases.
- Features
- Add support for regex search (regular expressions) #6706, #6926
⚠️ 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
andExpires
#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
- New option to automatically mark new articles as read if an identical title already exists in the same category #6922
- Add ability to remove content from articles with CSS selectors, also when not using full content #6786, #6807
- Update
phpgt/cssxpath
library with improved CSS selectors #6618- Support for
:last-child
,:first-of-type
,:last-of-type
,^=
,|=
- Support for
- New UI feature to download a user’ SQLite database or a database SQLite export (to be produced by CLI) #6931
- Better import of Inoreader user labels #6791
- New sharing with Telegram #6838
- Add support for regex search (regular expressions) #6706, #6926
- Bug fixing
- Compatibility
- Deployment
- SimplePie
- Refactor our embedding of SimplePie #4374
- Our fork is maintained in its own repository.
- Remove HTTP
Referer
#6822, FreshRSS/simplepie#27- If some sites require it, add
Referer: https://example.net/
to the custom HTTP headers of the feed #6820
- If some sites require it, add
- Upstream fixes simplepie#878, simplepie#883
- Sync upstream #6840
- Refactor our embedding of SimplePie #4374
- Security
- UI
- Searchable My Labels field #6753
- Move to next unread Label on mark as read #6886
- Improve Web accessibility: fix
aria-hidden
bug, and use HTML5hidden
#6910 - Default styles for
<pre>
and<code>
#6770 - Refactor the sharing menu to use a
<template>
instead of duplicated HTML code #6751 - Refactor the label menu to use a
<template>
#6864 - Improved subscription management page #6816
- Restore JavaScript form validation compatibility with Web browsers using older engines (SeaMonkey) #6777
- Reorganise some options #6920
- I18n
- Misc.
- Better cache name for JSON feeds #6768
- Fix inversed encoding logic in
Minz_Request::paramArray()
#6800 - Pass PHPStan
booleansInConditions
#6793 - Rename PHPStan configuration file to
phpstan.dist.neon
to allow custom configuration inphpstan.neon
#6892 - Code improvements #6800, #6809
- Makefile improvements #6913
- Fix PHPCS
ControlSignature
#6896 - Update dev dependencies #6780
- Bug fixing
- Fix mark-as-read from user query #6738
- Fix regression for shortcut to move between categories #6741
- Fix feed title option #6771
- Fix XPath for HTML documents with broken root (used by CSS selectors to fetch full content) #6774
- Fix UI regression in Mapco/Ansum themes #6740
- Fix minor style bug with some themes #6746
- Fix export of OPML information for date format of JSON and HTML+XPath feeds #6779
- Security
- OpenID Connect better definition of session parameters #6730
- Compatibility
- Last version supporting PHP 7.4
- Misc.
- Features
- New global option to automatically add articles to favourites #6648
- New possibility to share a user query in JSON GReader format #6655
- New fields image and description for user query share #6541
- Show article first words when an article title is empty #6240
- New option to share articles from the article title line #6395
- Improve JSON Dot Notation module to access more string-friendly types #6631
- Improve detection of image types for enclosures not providing a type #6653
- Add sharing to archive.is #6650
- Security
- Bug fixing
- Fix parentheses for complex
OR
Boolean search expressions #6672 - Fix keep max unread #6632
- Fix regression in mark as read upon gone #6663
- Fix regression on mark duplicate titles as read for modified articles #6664
- Fix regression for Fever API, remove dependency to Exif extension #6624
- Fix muted feeds for WebSub #6671
- Fix performance / deadlock of PostgreSQL and MySQL / MariaDB during schema updates #6692
- Fix HTTP cache of main page (regression since 1.18.0) #6719
- Fix HTTP cache of shareable user queries #6718
- Fix HTTP cache for feeds with modified
Last-Modified
when content is not modified #6723
- Fix parentheses for complex
- Extensions
- CLI
- Add quiet option to
cli/db-backup.php
#6593
- Add quiet option to
- Compatibility
- Initial support for PHP 8.4+ #6615
- With upstream contributions php/php-src#14873, PhpGt/CssXPath#227
- Fix SQLite on FreeBSD due to DQS #6701, #6702
- Initial support for PHP 8.4+ #6615
- Deployment
- UI
- I18n
- Misc.
- Features
- Bug fixing
- Fix regression HTTP GET curl options #6492
- Fix regression of mark as read if an identical title already exists #6536, #6543
- Fix connection to PostgreSQL databases with uppercase letters #6482
- Fix UI regression hover over title while having the navigation buttons in mobile view #6486
- Fix UI for some drag & drops #6505, #6508
- i18n
- Misc.
- Features
- New shareable user query mechanism to share list of articles by HTML, RSS, OPML #6052
- Deprecates RSS sharing with master token
- New JSON scraping mode to consume JSON data #5662, #6317, #6369, #6476
- New support for JSON Feeds #5662
- New support for HTTP POST #5662
- New option to automatically add labels to incoming articles #5954
- New button to download a feed configuration as OPML #6312
- Web scraping support more encodings such as EUC-JP #6112
- Web scraping support password-protected queries (refactor some cURL options and use
CURLOPT_USERPWD
) #6177 - Web scraping HTTP GET allow UTF-8 even when charset is far from top #6271
- Allow manual refresh of disabled feeds #6408
- Allow multiple authors on enclosures #6272
- New system option in
data/config.php
for number of feeds to refresh in parallel from UI #6124
- New shareable user query mechanism to share list of articles by HTML, RSS, OPML #6052
- CLI
- New CLI for database backup & restore #6387
- Can also be used to migrate from one database to another, or to upgrade SQLite schema
./cli/db-backup.php ; ./cli/db-restore.php
- Improve CLI parameters #6028, #6036, #6099, #6214
- Fix i18n
cli/manipulate.translation.php
ignore behaviour #6041
- New CLI for database backup & restore #6387
- API
- Bug fixing
- Better account for some edge cases for cron and automatic labels during feed refresh #6117
- Better support for thumbnails in RSS feeds #5972
- Auto-update PostgreSQL or MariaDB / MySQL databases for column details changes since FreshRSS 1.21.0 #6279
- For SQLite, DB update require running
./cli/db-backup.php ; ./cli/db-restore.php --force-overwrite
- For SQLite, DB update require running
- Fix SQLite import of exports produced before FreshRSS 1.20.0 #6450
- Fix SQLite release handle to fix deleting users on Microsoft Windows #6285
- Fix to allow admins to create user even when there are Terms Of Service #6269
- Fix updating the uncategorized category deletes the title #6073
- Fix disable master authentication token #6185
- Fix CSS selector preview #6423
- Fix CSS selector encoding #6426
- Fix export of CSS selector in OPML of individual feeds #6435
- Fix OPML import of
CURLOPT_PROXYTYPE
#6439 - Fix favicon with protocol-relative URLs have duplicate slashes #6068
- Fix feed TTL+muted logic #6115
- Fix apply mark as read to updated articles too #6334
- Fix ZIP export on systems with custom temp folder #6392
- Fix number of posts per page during paging #6268
- Fix clipboard sharing UI #6301
- Fix shortcut for clipboard sharing #6277
- Fix user-query filter display #6421
- SimplePie
- Fix absolutize URL for several cases #6270, simplepie/#861
- Security
- Replace
iframe
allow
attribute #6274
- Replace
- Deployment
- Disable unused PHP modules in our Debian-based Docker image #5994
- UI
- i18n
- Improve Brazilian Portuguese #6067
- Improve Czech #6344
- Improve Dutch #6343
- Improve German #6313
- Improve Hungarian #6005, #6377, #6464
- Improve Indonesian #6473
- Improve Italian #6018, #6060, #6329
- Improve Japanese #6108, #6294
- Improve Korean #6342
- Improve Polish #6358
- Improve Portuguese #6345
- Improve Russian #6467
- Improve Simplified Chinese #6336
- Improve Slovakian #6356
- Improve Spanish #6471
- Improve Traditional Chinese #6350
- Improve Turkish #6328
- Misc. #6460
- Extensions
- Sanitize parsing list of extensions names and version number #6016, #6155, Extensions#214, #6186
- Apply filter actions such as mark as read after the entry_before_insert hook for extensions #6091
- New developer command to test all third-party extensions Extensions#228, #6273
composer run-script phpstan-third-party
- New function
Minz_Extension::amendCsp()
for extensions to modify HTTP headers for Content Security Policy #6246 - New property
FreshRSS_Entry::isUpdated()
for extensions to know whether an entry is new or updated #6334
- Compatibility
- Misc.
- Bug fixing
- Fix crash regression with the option Max number of tags shown #5978
- Fix crash regression when enabling extensions defined by old FreshRSS installations #5979
- Fix crash regression during export when using MySQL #5988
- More robust assignment of categories to feeds #5986
- Fix
base_url
being cleared when saving settings #5992 - Fix unwanted button in UI of update page #5999
- Deployment
- Exclude more folders with
.dockerignore
#5996
- Exclude more folders with
- i18n
- Features
- New Important feeds group in the main view, with corresponding new priority level for feeds #5782
- Entries from important feeds are not marked as read during scroll, during focus, nor during Mark all as read
- Add filter actions (auto mark as read) at category level and at global levels #5942
- Improve reliability of Max number of articles to keep unread #5905
- New option to mark entries as read when focused from keyboard shortcut 5812
- New display option to hide My labels in article footers #5884
- Add support for more thumbnail types in feeds enclosures #5806
- Support for favicons with non-absolute paths #5839
- Increase SQL (
VARCHAR
) text fields length to maximum possible #5788 - Increase SQL date fields to 64-bit to be ready for year 2038+ #5570
- New Important feeds group in the main view, with corresponding new priority level for feeds #5782
- Compatibility
- Bug fixing
- Fix regression in Docker
CRON_MIN
if any environment variable contains a single quote #5795 - Improve filtering of cron environment variables #5898
- Fix the
TRUSTED_PROXY
environment variable used in combination with trusted sources #5853 - Fix regression in marking as read if an identical title already exists #5937
- Fix JavaScript regression in label dropdown #5785
- Fix regression when renaming a label #5842
- Fix API for adding feed with a title #5868
- Fix regression in UI of update page #5802
- Fix XPath encoding #5912
- Fix notifications, in particular during login #5959
- Fix regression in Docker
- Deployment
- Extensions
- Upgrade extensions code to PHP 7.4+ #5901, #5957
- Breaking change: upgraded extensions require FreshRSS 1.23.0+ Extensions#181
- Pass FreshRSS version to JavaScript client side for extensions #5902
- Add GitHub Actions and PHPStan for automatic testing of the Extensions repository Extensions#185
- API
- Improve handling of new lines in enclosure descriptions (e.g., YouTube video descriptions) #5859
- Security
- UI
- i18n
- Misc.
- Bug fixing
- Fix regression in i18n English fallback for extensions #5752
- Fix identification of thumbnails #5750
- OpenID Connect compatibility with colon
:
inOIDC_SCOPES
#5753, #5764 - Avoid a warning on non-numeric
TRUSTED_PROXY
environment variable #5733 - Better identification of proxied client IP with
RemoteIPInternalProxy
in Apache #5740
- Deployment
- Compatibility
- Test compatibility with PHP 8.3 #5764
- UI
- i18n
- Misc.
- Features
- Add support for OpenID Connect (only in our default Debian-based Docker image for
x86_64
, not Alpine) throughlibapache2-mod-auth-openidc
#5351, #5463, #5481, #5523, #5646 - Allow sharing in anonymous mode #5261
- Support Unix socket for MySQL / MariaDB #5166
- Use proxy settings also for fetching favicons #5421
- Add mutual exclusion semaphore for better scaling of actualize script #5235
- Better reporting of XPath failures #5317
- Add sharing with Buffer.com #5286
- Add sharing with Omnivore #5477
- Improve sharing with Linkding #5433
- Do not automatically update feeds after import, to better support multiple imports #5629
- Compatibility for servers disabling
set_time_limit()
#5675 - New configuration constant
CLEANCACHE_HOURS
#5144
- Add support for OpenID Connect (only in our default Debian-based Docker image for
- Bug fixing
- Fix cache refresh #5562
- Fix and improvement of hash of articles using load full content #5576
- Fix case of falsy GUIDs #5412
- Fix and improve JSON export/import #5332, #5626
- Fix enclosures in RSS output #5540
- Fix parenthesis escaping bug in searches #5633
- Fix regression in Fever API enclosures #5214
- Fix regression in Fever API mark-all-as-read #5185
- Fix regression in OPML export of single feeds #5238
- Fix warning during OPML export with empty attributes #5559
- Fix extensions in actualize script #5243
- Fix link to configuration (system or user) for extensions #5394
- Fix mark as read upon gone option in some conditions #5315, #5382, #5404
- Fix mark selection as unread #5367
- Fix warning in articles repartition statistics #5228
- Fix count entries with some databases #5368
- Fix MariaDB database size calculation #5655
- Fix feed position attribute #5203
- Fix warning when tagging entries #5221
- Fix labels in anonymous mode #5650
- Fix bug not allowing strings for tags in XPath #5653
- Fix get and order when saving user query #5515
- Fix search using user queries #5669
- Fix regression of access to logs even when auto-update is disabled #5577
- Fix access to Apache logs from Dev Container #5660
- Fix malformed HTTP header in case of internal fatal error #5699
- Fix rare exception for HTML notifications #5690
- UI
- New option to display website name and/or favicon of articles #4969
- Support
<meta name="theme-color" .../>
#5105 - Config user settings in slider #5094
- Improve theme selector #5281, #5688
- Improve share to clipboard with animation and icon #5295
- Allow share to clipboard even for localhost and without HTTPS #5606
- Feedback when tag with same name as category already exists #5181
- Show base URL in configuration #5656, #5657
- Show Terms of Service in config menu #5215
- Show Terms of Service in footer #5222
- Improve about page #5192
- Improve update page #5420, #5636, #5647
- Improve Step 1 of install process #5350
- Improve Global view on mobile #5297
- Reduce network overhead for Global view #5496
- Fix Global view: Stick the article to the top when opened #5153
- Fix configuration views that are using a slider #5469
- Fix highlight next/prev article while using shortcuts #5211
- Fix regression in statistics column name % of total #5232
- Fix macOS feed title meta-click behaviour #5492
- Improve themes
- Delete previously deprecated themes: BlueLagoon, Screwdriver #5374, #5694
- Various UI and style improvements #5147, #5216, #5303, #5304, #5397, #5398, #5400, #5603, #5695
- Security
- Deployment
- Docker listen on all interfaces by default, including IPv6 #5180
- Docker default image updated to Debian 12 Bookworm with PHP 8.2.7 and Apache 2.4.57 #5461
- Docker alternative image updated to Alpine 3.18 with PHP 8.1.23 and Apache 2.4.58 #5383
- Docker quiet Apache
a2enmod
#5464 - Docker: Add
DATA_PATH
to cron env #5531
- i18n
- Extensions
- SimplePie
- Fix
error_reporting
for PHP 8.1+ #5199
- Fix
- Misc.
- Reduce database locks #5576, #5625, #5648, #5649
- Improve MySQL / MariaDB performance for updating cached SQL values #5648
- Increase time limit import OPML #5231
- Save SQL attributes as native Unicode #5371
- Remove old SQL auto-updates #5625, #5649
- Improve Dev Container (update to Alpine 3.18, use
DATA_PATH
environment variable) #5423 - Update
lib_opml
#5188 - Update
lib/http-conditional
#5277 - Update PHPMailer #5389
- Use typed access to request parameters #5267
- Typed view model classes #5380
- Remove
ConfigurationSetter
#5251, #5580 - Ignore
./data.back/
in.gitignore
#5359 - Composer dev command compatibility with macOS #5379
- Code improvements #5089, #5212, #5213, #5362, #5470, #5501, #5504, #5667
- Increase PHPStan from Level 5 to level 7 #4112, #5064, #5087, #5090, #5106, #5108, #5230, #5239, #5258, #5263, #5264, #5269, #5272, #5275, #5279, #5282, #5283, #5289, #5290, #5291, #5292, #5299, #5305, #5307, #5309, #5313, #5318, #5319, #5327, #5328, #5352, #5353, #5354, #5361, #5366, #5370, #5373, #5376, #5384, #5388, #5393, #5400, #5406, #5429, #5431, #5434, #5578
- Update dev dependencies #5336, #5339, #5478, #5513, #5541, #5691, #5693
- Features
- New XML+XPath mode for fetching XML documents when there is no RSS/ATOM feed #5076
- Better support of feed enclosures (image / audio / video attachments) #4944
- User-defined time-zone #4906
- Improve HTML+XPath mode by allowing HTML content #4878
- Search only on full tag names and not on parts of tag names #4882
- Allows searching for parentheses with
\(
or\)
#4989 - Firefox-compatible sharing service for
mailto:
links for webmail services #4680 - Add sharing to archive.org #5096
- Increase max HTTP timeout to 15 minutes #5074
- Compatibility
- Deployment
- Docker default image (Debian 11 Bullseye) updated to PHP 7.4.33
- Docker: alternative image updated to Alpine 3.17 with PHP 8.1.16 and Apache 2.4.55 #4886
- More uniform time-zone behaviour #4903, #4905
- New CLI script
cli/sensitive-log.sh
to help e.g. Apache clear logs for sensitive information such as credentials #5001 - New CLI script
cli/access-permissions.sh
to help apply file permissions correctly #5062 - Improve file permissions on
./extensions/
#4956 - Update Apache mime type
font/woff
#4894 - Re-added a git
latest
branch (instead of a tag) to track the latest FreshRSS stable releases #5148
- Bug fixing
- Fix allow disabling curl proxy for specific feed, when proxy is defined globally #5082
- NFS-friendly
is_writable()
checks #4780 - Fix error handling when updating feed URL #5039
- Fix feed favicon after editing feed URL #4975
- Fix allow Ctrl+Click to open Manage feeds in new tab #4980
- Fix empty window opened when pressing space after page load #5146
- Fix keep current view when searching #4981
- Fix mobile view: scroll main area again after closing slider #5092
- Fix change confirmation when leaving sharing service config #5098
- Fix sharing to Lemmy #5020
- Security
- API avoid logging passwords CVE-2023-22481
- Remove execution rights on some files not needing it #5065
- More robust application of file access permissions #5062
- UI
- Improve search box #4994
- Improve navigation menu structure #4937
- More consistent sorting of feeds alphabetically #4841
- Improve reader view on mobile screen #4868
- Various UI and style improvements #4681, #4794 #4800, #4850, #4865, #4872, #4874, #4889, #4890, #4891, #4897, #4899, #4910, #4923, #4927, #4960, #4985, #4998, #5034, #5040, #5055, #5058, #5097, #5100
- Themes
- Dark mode for Origine and Origine compact themes #4843
- Improve Ansum and Mapco #4938, #4959, #4967, #4983, #4995
- Improve Dark pink #4881
- Improve Nord theme #4892, #4979
- Improve Origine #4893
- Improve Origine compact #4873
- Improve Pafat #4909
- Improve Swage #4875, #4922, #4936, #5029
- Mark some themes as tentatively deprecated: BlueLagoon, Flat, Screwdriver #4807
- i18n
- SimplePie
- No URL Decode for enclosure links simplepie#768
- Fix case of multiple RSS2.0 enclosures simplepie#769
- Sanitize thumbnail URL simplepie#770
- Use single constant for default HTTP Accept header simplepie#784
- Misc.
- Increase max feed URL length and drop unicity in database #5038
- New support of Development Containers / GitHub Codespaces to ease development #4859
- Update library
lib_opml
#4403 - Code improvements #4232, #4651, #5024, #5025, #5028, #5032, #5158, #5045, #5049, #5063, #5084
- Update dev dependencies #4993, #5006, #5109
- Security fixes
- CVE-2022-23497 Fix security vulnerability in
ext.php
#4928 - Apache
TraceEnable Off
#4863
- CVE-2022-23497 Fix security vulnerability in
- Features
- API
- Minor Google Reader API improvements #4763
- Bug fixing
- Fix SQL transaction rollbacks during auto-update #4622
- Fix
opcache
bug during Web update #4629, update.freshrss.org#4 - Fix export bug #4822
- Fix OPML import of special feed attributes #4708
- Fix JavaScript bug with remembering opened categories #4827
- Fix
curlopt
options for HTML+XPath #4759 - Fix charset bug for HTML+XPath #4623
- Fix HTML-encoding of CSS selectors #4707, #4823
- Fix some broken author links #4743
- Fix show settings page after adding new feed #4631
- Fix login page when user does not exist #4621
- Fix feed manage link on stats page #4768
- Fix minor layout bugs #4830
- Fix minor UI bugs with Safari #4643
- UI
- Change some default settings related to marking articles as read #4736
- Improve scrollbar when slider is open #4692
- Improve Subscription Management: Show the category position number #4679
- Improve Reader view: Mark article as read while scrolling #4652
- Improve sharing / integration page #4774
- Improve article summary text cut #4666
- Improve HTML semantics for some boxes #4665
- Change dynamic OPML icon #4673, #4810
- Improve box layout for global view #4791
- Improve logs layout #4594
- Improve Feed configuration: number of articles #4625
- Improve drop-down menus #4597
- Show tile with explanation when hovering empty feeds #4617
- Added bottom nav padding for iOS #4741
- Themes
- Implement CSS variables for easy colour customisation #4641, #4693, #4789
- Improve CSS line height #4671, #4782
- Improved reader view with framed articles #4663
- Improve themes Alternative Dark #4635, #4797; Blue Lagon #4786; Dark #4806; Mapco #4648, #4709, #4711; Origine #4842; Origine Compact #4636, #4735, #4787; Pafat #4783, #4792, #4793, #4796, #4811; Swage #4799, #4828, #4829
- Rename
template.css
tofrss.css
#4644 - Misc. #4596, #4619, #4696
- i18n
- Rename tag to label in some languages #4770
- Improve typographic quotes #4714
- Remove invalid i18n string #4844
- Add Greek #4718, #4754
- Add Indonesian #4706
- Improve Brazilian Portuguese #4669
- Improve Czech #4670
- Improve Italian #4803
- Improve Japanese #4668
- Improve Russian #4719
- Improve Spanish #4676, #4725
- Improve Turkish #4715
- Improve i18n tools #4742, #4756
- Compatibility
- Deployment
- Docker default image (Debian 11 Bullseye) updated to PHP 7.4.33
- Docker: alternative image (Alpine 3.16) updated to PHP 8.0.25
- Misc.
- Features
- New Web scraping feature HTML+XPath for Web pages without any RSS/ATOM feed #4220
- Add support for Dynamic OPML #4407
- Subscriber: Ability for a category to be dynamically populated with a list of feeds provided by a remote OPML
- Publisher: Ability to dynamically export a FreshRSS view (all, feed, category) into a dynamic OPML
- New search engine supporting (nested) parentheses #4378, #4503
(author:Alice OR intitle:hello) (author:Bob OR intitle:world)
- also with negation:
!((author:Alice intitle:hello) OR (author:Bob intitle:world))
- and supporting calling user queries from the search field by name:
search:"My query"
orsearch:QueryA
, or by ID:S:3
- Allow many (50k+) feeds #4347
- New option to exclude some DOM elements with a CSS Selector when retrieving an article full content #4501
- New option to automatically mark as read gone articles #4426
- New OPML export/import of some proprietary FreshRSS attributes #4342
- Tolerate the import of some invalid OPML files #4591
- New feed settings to allow cookies and HTTP redirects #4470
- Performance: Easier text search indexes for fast searches with PostgreSQL #4505
- The indexes must be manually added for now. Using GIN
pg_trgm
- The indexes must be manually added for now. Using GIN
- Easier definition of default user queries for new users in
data/config-user.custom.php
#4360 - New sharing through standard Web Share API #4271
- New sharing with Xing, Reddit, Pinterest, WhatsApp #4270
- New sharing with
archive.today
#4530
- SimplePie
- New method
rename_attribute()
instead of removing attributes to better be able to style/hide content of articles #4175, simplepie#717 - Fix parsing of HTTP Links simplepie#729
- Fix
status_code
type for PHP 8.1+ simplepie#728 - Fix relative URLs simplepie#744
- New method
- Bug fixing
- Fix last update & archive logic (especially for very long feeds, for which some old items were marked as unread) #4422
- Fix regression with Fever API on 32-bit platforms #4201
- Fix read-when-same-title bug #4206
- Fix some search expressions such as
"ab cd"
andab-cd
#4277 - Fix auto-load of more articles when using shortcuts #4532
- Fix space shortcut #4581
- WebSub: Use hash instead of base64 to handle long URLs #4282
- Fix handling of authors with ampersand
&
#4287 - Fix lazy loading images containing a quote
'
in the address #4330 - Fix database size calculation for PostgreSQL #4249
- Fix HTTP root redirection in some cases (trailing slash with a proxy) #4167
- Fix
htmlspecialchars()
warnings with PHP 8.1+ #4411 - Fix OPML category encoding #4427
- Fix one category of favicon update problem #4358
- Fix rare mark-as-read bug #4456
- Add missing extension hook
freshrss_user_maintenance
in CLI #4495 - Rename conflicting function
errorMessage()
which exists on some platforms #4289 - Fix remain of bookmarklet #4240
- UI
- Performance: Automatic simplification of layout for 1000+ feeds #4357
- Performance: New option icons-as-emojis #4353
- Manage feed configuration using a dynamic slider view #4226, #4297, #4394
- New option for custom HTML logo/title in the main Web UI view #4369
- Show errored, empty, muted feeds in statistics #4276
- Improve configuration of registration form #3932
- Improve subscription list drag & drop #3953
- Improve extension manager #4181
- Improve idle feeds list #4192
- Improve feed link in normal view #4006
- Improve browser notification for unread message #4193
- Improve notification banner #4023
- Improve new article banner #4037
- Improve pagination + load more button #4125
- Improve log view #4204
- Improve unread articles counter in normal view #4166
- Automatically set the category when adding a feed from an existing category #4333
- Better PWA colours for mobile #4254
- Improve article footer #4306
- Various UI and style improvements #4205, #4212, #4218, #4238, #4455, #4298, #4383, #4452, #4455, #4466, #4471, #4472, #4474, #4498, #4502, #4504, #4558, #4546, #4541
- Themes
- Extensions
- Allow extensions using
entry_before_insert
to changeentry->isRead()
#4331
- Allow extensions using
- i18n
- API
- Restrict maximum length of item content length for clients compatibility #4583
- Supported by Fluent Reader Lite #4595
- Deployment
- Docker: Performance: entrypoint fix buffering, problematic when importing large OPMLs during install #4417
- Docker default image (Debian 11 Bullseye) updated to PHP 7.4.30 and Apache 2.4.54
- Docker: alternative image updated to Alpine 3.16 with PHP 8.0.22 and Apache 2.4.54 #4391
- Add PHP extensions
php-openssl
(used by PHPMailer) andphp-xml
(used by SimplePie) #4420
- Add PHP extensions
- Docker: Upgraded dev image
freshrss/freshrss:newest
to PHP 8.2 #4420 - Include PHP extensions in Composer for easier automated deployment #4497
- Improved trimming of
base_url
to avoid some common configuration bugs, especially via Docker / CLI #4423
- CLI
- Allow empty DB prefix #4488
- Compatibility
- Security
- Improved error page, properly returning HTTP 500 and CSP #4465
- Misc.
- Replace
lib_phpQuery
byPhpGt/CssXPath
library for full content retrieval #4261- Add support for star CSS Selectors such as
a[href*="example"]
CssXPath#181
- Add support for star CSS Selectors such as
- Performance: Do not render irrelevant HTML for Ajax calls #4310, #4366
- Performance: New limit option when reloading a feed #4370
- Optional possibility to use Composer to update some libraries #4329, #4368
- Update to PHPMailer 6.6.0 #4329
- Use
.gitattributes
export-ignore
#4415 - Remove HTTP Referer for HTML download #4372
- Add database field
attributes
(JSON) for entries #4444 - Improve dev automated checks #4209
- Update dev dependencies #4173, #4203, #4241, #4419, #4424
- Fix extension list warning when offline#4571
- Code improvements #4130, #4194, #4201, #4202, #4258, #4263, #4356, #4436, #4489, #4490, #4496
- Replace
- Bug fixing
- Fix regression regarding keeping read state after seeing favourites / labels #4178
- Fix migration system on Synology and systems adding custom files to folders #4163
- Fix wrong dropdown triangle UI for labels #4174
- Fix minor UI bugs #4169, #4189, #4188
- Fix minor SCSS details for the themes Ansum and Mapco #4146
- UI
- Features
- Support JSON import with date in milliseconds (e.g., Feedly) #4186
- Deployment
- Docker: development image
:newest
updated to PHP 8.1.1 and Apache 2.4.52 #3666
- Docker: development image
- i18n
- Misc.
- Increase PHPStan to level 5 for code quality, also fixing several PHP 8.1 warnings #4110, #4123, #4119, #4182
- Clean temporary files generated by automated tests #4177
- Add automated spell checking of the code using typos #4138, #4134
- Enforce code style opening brace on same line in PHPCS #4122
- Remove broken GitHub Action automatically adding the
latest
tag to git #4135
- Bug fixing
- Fix some filters for automatic article actions (e.g.,
!pubdate:P3d
) #4092
- Fix some filters for automatic article actions (e.g.,
- Features
- New search operator on article IDs (useful to show a single article, extensions) #4058
- Entry (article) ID:
e:1639310674957894
or multiple entry IDs (or):e:1639310674957894,1639310674957893
- Entry (article) ID:
- New search operator on article IDs (useful to show a single article, extensions) #4058
- UI
- SimplePie
- Manual update to SimplePie 1.5.8 #4113
- Code improvements
- Features
- New thumbnail and/or summary options for the normal view #3805
- New setting to automatically mark as read a new article if there is already one with the same title in the same feed #3303
- New setting to keep only a maximum number of unread articles in a given feed #3303
- New search operator based on custom labels, or not #3709
- Search articles with label IDs:
L:12,13,14
or label names:label:something
orlabels:"my label,my other label,🧪"
- Search articles with any label:
L:*
or no label:!L:*
- Search articles with label IDs:
- Add support for installable progressive web app (PWA) #3890
- Bug fixing
- Fix marking as read a label with SQLite and PostgreSQL #3711
- Better fallback for feeds without title #3787
- Fix auto-load articles in anonymous mode and global view #4082
- Fix several typos found by PHPStan, including one affecting the cache of keep max unread articles #4019
- Fix warning in Fever API #4056
- Show no articles alert-box also in global view #4042, #3099
- Fix theme selection when a theme has been deleted #3874
- Fix keyboard shortcuts in anonymous mode #3945
- Fix show password in settings #3966
- Fix JavaScript warnings for non-validated users #3980
- Fix drag & drop layout for subscriptions #3949
- Security
- Better error handling when a user does not exist (especially for API) #3751, #4084
- Do not show Add new feed for anonymous users #4040
- Do not show Mark as read / unread / favourite for anonymous users #3871, #3876
- Do not show back link on error pages if the user does not have access #3765
- Only show Back to RSS feeds when logged-in #3790
- Fix for special characters in keyboard shortcuts #3922
- Remove old workarounds with white space to prevent password autocompletion #3814
- Compatibility
- Deployment
- Docker: development image
:oldest
is now based onalpine:3.5
with PHP 7.0.33 and Apache 2.4.35 #3666 - Docker: default image updated to Debian 11 Bullseye with PHP 7.4.25 and Apache 2.4.51 #3782
- Docker: alternative image updated to Alpine 3.15 with PHP 8.0.14 and Apache 2.4.52 #3996
- Docker: fix inclusion of
.htaccess
for./p/themes/
folder #4074 - Docker: only add the crontab when
CRON_MIN
is set #3927 - Docker: move logic to disable FreshRSS updates #3973
- Docker: allow mounting a volume for the cron file #3927
- Images on Docker Hub are automatically scanned for software vulnerabilities
- Docker: development image
- UI
- Remember article filters when changing views (category / feed) #3986
- Mobile view can access the configuration menu #3879, #3881
- Improve layout of settings on small screen #3818, #3819
- New shortcut to jump to next unread article #3891
- New shortcut to actualise feeds #3900
- Implement Escape shortcut to close panels #3901
- Improve layout of subscription management page #3893
- Use HTML5 tags with better semantics and structure #3651, #3676, #3713, #3747, #3830, #3851
- Allow JavaScript in themes #3739
- Improve layout of statistics #3797, #3799, #3803
- Improve label management #3959
- Update layout of user queries #3827
- Improve style of install procedure #3721
- Add retry button when checking requirements during install #3771
- Improve notification icon #3678
- Add CSS class to back links #3761
- Better support for
400
and405
HTTP error codes #3981 - Many minor UI and style improvements #3792, #3795, #3801, #3802, #3817, #3821, #3824, #3831, #3832, #3877, #3880, #3969, #3989, #3990, #4005, #4015
- Themes
- Show search box for all themes in mobile view #4025
- Fix alternative-dark theme to avoid bright elements #3774, #3806
- Improve the contrast of message boxes for the Origine theme #3725
- Uniformize the size of
input
andselect
elements for the Origine theme #3727 - Fix style of banner text for the Origine theme #3731
- i18n
- Fix language of e-mail notifications #4076
- Lint i18n #3841
- Fix bug in French and German translations of new/old tags #3703, #3668
- Fix name of keyboard shortcut to open in new tab #3899
- Add Japanese #3828, #3834
- Improve Chinese #3926, #3947, #3963, #4084
- Improve Dutch #3844, #3928
- Improve German #3720, #3846, #3913, #4008
- Improve Italian #3939
- Improve Korean #3914
- Improve Occitan #3935
- Improve Polish #4027
- Improve Portuguese #3908, #3925
- Improve Russian #3907
- Improve Slovak #4036
- Improve Spanish #3916
- Extensions
- Add system configuration for extension #3626
- SimplePie
- Misc.
- Implement GitHub Actions for continuous integration / automated testing 3920
- Use ESLint instead of JSHint #3906
- Improve
.editorconfig
and.stylelintrc
#3895, #3912 - Simplify Minz code with PHP 7
??
operator #4020 - Upgrade PHPMailer to 6.5.1 #3977
- Added Raindrop.io as sharing option #3717
- Delete outdated information regarding Firefox feed reader list #3822
- Features
- API
- Supported by Newsboat 2.24+ #3574
- Supported by RSS Guard #3627
- UI
- Allow Unicode for shortcuts #3548
- Bug fixing
- Fix database lock during refresh with MariaDB #3559
- Fix database creation from CLI #3544
- Fix:
pdo_sqlite
is optional except for export/import SQLite #3545 - Fix import of JSON and TT-RSS files, especially with PHP 8 #3553
- Allow import of more than 999 favourites/labelled articles even with SQLite
- Fix additional SQL limits, especially for SQLite #3586
- Fix search param encoding in user query #3541
- Fix undefined variable & dead code when adding feed #3546
- Fix missing translation in feed configuration #3554
- Fix double escaping in feed filters #3563
- Fix bugs in migration system #3589
- Fix regression preventing showing startup errors #3590
- Fix form redirection after erroneous user creation #3656
- Fix JavaScript error during navigation when no article is selected #3655
- Fix link to add feeds from the empty homepage #3650
- Fix git update error message #3645
- SimplePie
- Fix regression about media attachments #3565
- Fix regression about forcing HTTPS for enclosures #3568
- Catch ValueError for loadHTML with PHP 8 simplepie#673
- Provide access to latest HTTP status code simplepie#674
- Fix wrong SimplePie type hint simplepie#678
- Merge details from upstream PRs #3588, #3614
- API
- Compatibility with Web servers providing
ORIG_PATH_INFO
#3560
- Compatibility with Web servers providing
- i18n
- Code improvements:
- Deployment
- Automatically apply
latest
tag in git for the latest FreshRSS release #3524
- Automatically apply
- Misc.
- Features
- Allow parallel requests #3096
- Much faster manual feeds refresh
- Reload full article content when an article has changed #3506
- New share article link to clipboard #3330
- Improved OPML import of feeds with multiple categories #3286
- Add a content action parameter to work with CSS selector #3453
- New cURL options per feed: proxy, cookie, user-agent #3367, #3494, #3516
- Do not import feeds causing database errors (e.g. due to conflicting HTTP redirections) #3347
- Allow parallel requests #3096
- UI
- New option to remember open categories #3185
- Remember the scroll position of the sidebar #3231
- Feedback messages are now properly attached to a request, in case multiple tabs are open #3208
- New user query configuration page #3366
- Allow sorting and drag & drop in the list of user queries #3346, #3355
- Change layout to add a subscription #3289
- Change integration configuration page #3372
- Improve author search when clicking on an author #3315
- Allow typing a label name instead of selecting it #3213
- Use same behaviour for labels than the option Show all articles in favourites #3472
- Change naming from Tag management to Label management #3446
- Sort options alphabetically in share menu #3331
- Case-insensitive sort order of feeds in category settings #3466
- Better compression of the images #3184
- Fix minor jaggy motion of the sidebar #3266
- Remove useless reset action in sharing configuration page #3365
- Add autofocus on subscription page #3334
- Fix contrast issue by enforcing black text in base theme #3196
- Adjust brightness & contrast of images and videos in dark themes #3356
- Improve menu bar of several themes for mobile view #3480, #3491
- Fix dropdown menu for user queries with BlueLagoon and Screwdriver themes #3485
- Upgrade to jQuery 3.6.0 for statistics #3501
- Bug fixing
- Fix the reloading of full article content with SQLite #3461
- Fix the caching of an SQL prepared statement affecting the read state of updated articles #3500
- Better handle expected article conflicts in database #3409
- Fix SQL syntax error/warning when deleting temporary articles #3357
- Fix login and refresh bugs in anonymous mode #3305
- Fix i18n init #3249
- Fix tag management #3292
- Fix user queries with labels #3285
- Fix loading of default actions for shortcuts #3394
- Fix extensions when using CLI #3443
- Fix translation CLI #3364
- Allow searching for
+
sign #3489 - Fix cURL version detection in install script #3519
- Compatibility
- API
- CLI
- Add requirements check in relevant CLI #3410
- Deployment
- Possibility to auto-install via e.g.
docker-compose
#3353- New tolerance when the database is not available / up (yet) by trying a few times to connect
- Docker: use Apache
remoteip
to log the client remote IP instead of the local proxy IP #3226 - Docker: new environment variable
LISTEN
to change the internal Apache port when running in host network mode #3343 - Docker: Alpine image updated to 3.13 with PHP 8.0.3 and Apache 2.4.46 #3375
- Note: needed for MySQL 8+ with default authentication settings #3191
- Docker default image (Debian 10 Buster) updated to PHP 7.3.27
- New Docker development image based on
alpine:edge
to test the latest PHP 8+ version #3294 - New Docker development image based on
alpine:3.4
to test oldest supported PHP 5.6.36 version with Apache 2.4.43 #3274 - Disable built-in update mechanism for new installations using Docker #3496
- Check that PHP session is working during install #3430
- Possibility to auto-install via e.g.
- Security
- Auto-renew login cookie #3287
- Remove referer check, already replaced by CSRF token #3432
- Increase login cookie duration to 3 months by default #3170
- Prevent click on login button until JavaScript is fully loaded #3275
- Add toggle password visibility button on login form UI #3205
- Better sanitize feed description #3222
- Allow
@
-sign in database username (for Azure) #3241 - Add username hint for permissions during install #3373
- SimplePie
- SimplePie prevent cache pollution #3502
- Update to SimplePie 1.5.6 with PHP8 support #3469, #3206
- Reduce memory consumption to handle very big feeds simplepie#672
- Replace
ceil()
byintval()
for edge cases with PHP8 simplepie#670 - Strip HTML comments in feeds #3288
- Minor fix of return type for broken feeds #3423
- Fix images in enclosures without MIME type #3361
- Extensions
- New user maintenance hooks #3440
- New hooks
js_vars
andnav_menu
#3342 - Add class autoload for extensions #3350
- Add support for extension user files #3433
- Add user configuration in extensions #3397
- Add a method to retrieve a configuration value #3422
- Search files for both core and third-party extensions #3413
- Updated base extension class #3333, #3335
- Refactor extension file script #3399
- i18n
- Code improvements
- Improve FreshRSS system initialisation #3070
- Improve session code during install #3276
- Enforce
phpcs
(PHP_CodeSniffer) line length + whitespace #3488- Improve settings and applies to
*.phtml, *.css, *.js
as well
- Improve settings and applies to
- Fix superfluous Minz check during install #3302
- Extract some classes to their own files #3301, #3298, #3297
- Explicit git declaration of
.png
files as binary #3211 - Remove Minz validation #3439
- Explicit
PDO::ERRMODE_SILENT
#3048 - Add constant for minimal PHP version #3369
- Refactor requirements check during install #3368
- Misc.
- Features
- Security
- Add user auto-registration when using HTTP Basic authentication login method #3003
- Fix special characters in user queries #3037
- Hide feed credentials when adding a new feed #3099
- Trim whitespace for feed passwords #3158
- Updated PHPMailer library to 6.1.6 #3024
- Add blogger.com to the default list of forced HTTPS #3088
- UI
- Show feed name and date inside the article (especially good on mobile) #3081
- Add shortcut to control media elements (video, audio) #3036
- New option to disable shortcuts #3114
- Case-insensitive sort order of feeds in categories #3131
- Use machine-readable
<time datetime="">
for entry dates #3106 - Add tooltips on entry icons #3115
- Limit dropdown menus max-height #3102
- Fix inline code tag contrast in Ansum and Mapco themes #3048, #3050
- Fix login form in BlueLagoon and Screwdriver themes #3028
- API
- Supported by Fluent Reader (Windows, Linux, MacOS) #3140
- Fix API
quickadd
#3051 - Fix warning when adding a feed #3075
- Work-around for common API address errors #3061
- Compatibility
- Deployment
- CLI
- Bug fixing
- SimplePie: Fix compliance with HTTP 301 Moved Permanently #3180
- i18n
- Misc.
- Bug fixing (regressions)
- Fix migration of the preference Show categories unfolded (from ≤ 1.16.0) to the new Categories to unfold #3019
- Features
- API
- New table of compatible clients #2942
- Expose podcasts in API (used by e.g. FeedMe) #2898
- Workaround for clients not sending a clean login request #2961
- Relaxed detection of GReader short/long ID form (for Reeder) #2957
- Fix warning with FeedReader #2947
- Fix GReader string type for Usec fields #2935
- Fix Fever integers type #2946
- CLI
- UI
- Access to feed configuration in mobile view #2938
- Use standard
loading="lazy"
for favicons #2962 - New option to control which categories to unfold #2888
- Turn off autocapitalization in login fields #2907
- Minor layout improvement of help labels #2911
- Minor layout improvement of checkbox labels #2937
- Fix styling of search input fields in Safari #2887
- Fix styling of
.stick
elements in older Webkit browsers #2995 - Use common CSS template for Alternative-Dark theme #3000
- Upgrade to jQuery 3.5.1 for statistics #2982
- Compatibility
- Relax OPML parsing to allow importing not strictly-valid ones #2983
- Deployment
- Bug fixing
- Fix regression when marking all articles as read, risking to mark newer articles as read #2909
- Fix memory leak when using
lib_phpQuery
for full-content retrieval #3004 - Fix preview of CSS selector to retrieve full article content #2993
- Fix PostgreSQL install when user has limited connection rights #3013
- Fix Docker make cron use
FRESHRSS_ENV
environment variable #2963 - Fix e-mail validation bug for admins #2917
- Fix some cases when WebSub-enabled feeds change address #2922
- Fix ensuring that wrong login attempts generate HTTP 403 (e.g. for fail2ban) #2903
- Fix archiving options layout in Edge #2906
- Fix form in statistics for article repartition #2896
- Fix double-HTML-encoding of category names in statistics #2897
- Fix password reveal button during install #2999
- Fix Makefile rules when PHP is not installed #3010
- i18n
- Misc.
- Reduce memory consumption during feed refresh #2972, #2955
- and improved logs containing memory consumption #2964
- Reduce the risk of DB lock errors #2899
- Update PHPMailer library to 6.1.5 #2980
- Initial rules for Markdown linting #2880
- Add a Makefile rule for linting #2996
- Add a Makefile rule to refresh feeds #3014
- Reduce memory consumption during feed refresh #2972, #2955
- Features
- Allow multiple users to have administration rights #2096
- Preview the CSS rule to retrieve full article content #2778
- Improve CSS selector ordering in the full-text retrieval (
lib_phpQuery
) #2874- Allow combining selectors with a comma such as
#article .title, #article .content
- Allow combining selectors with a comma such as
- New search option
!date:
allowing to exclude any date interval #2869- For instance
!date:P1W
(exclude articles newer than 1 week),!pubdate:2019
,-date:2020-01-01/P5d
, etc.
- For instance
- New option to show all articles in the favourites view #2434
- Allow feed to be actualized just after being truncated #2862
- Fallback to showing a GUID when an article title is empty #2813
- API
- Supported by Readrops (Android, open source) #2798
- Improve consistency of the default category #2840
- Return proper
newestItemTimestampUsec
#2853 - Return
HTTP/1.x 200 OK
for an empty request, to ease discovery #2855 - Add ability to customise dates shown in API #2773
- Minor clearing of unused parameters #2816
- Compatibility
- Support PHP 7.4
- Bug fixing
- Fix regression causing a login bug in some situations related to e-mail login #2686
- Fix regression in feed refresh when there are users whose e-mail is not verified #2694
- Fix PostgreSQL install when using a username different than database name #2732
- Fix error with advanced searches using SQLite #2777
- Fix feed action filter when filtering on
author:
#2806 - Fix warning in WebSub #2743
- Fix environment variables
COPY_LOG_TO_SYSLOG
andFRESHRSS_ENV
controlling logging #2745 - Fix UI flickering when hovering over articles when authors are displayed #2701
- Fix array error with PHP 7.4 #2780
- Fix wrong
foreach
inapplyFilterActions
#2809 - Fix encoding bug in
lib_phpQuery
when fetching the full content of HTML documents with a complex<head ...>
#2864 - Fix minor bug in “articles to display” configuration UI #2767
- Fix sharing with Wallabag #2817
- Fix UI background bug when hovering over a long title that overlaps the date #2755
- UI
- Better UI / client network performance (time to first byte) thanks to a data streaming pipeline with
yield
#2588- Improved buffering strategy accordingly, with a loading animation while waiting for the first articles to arrive (e.g. complex / slow search) #2845
- To benefit from it, requires that the full Web stack allow efficient streaming / flushing of data. Check our reference Docker + Traefik documentation.
- Support RTL (right-to-left) languages #2776
- New keyboard shortcut Alt ⎇+r to park previous articles as read #2843
- In the statistics page, show feeds inactive for 1, 2, 3, 5 years #2827
- Reset FreshRSS page scroll when restoring a browser session, to avoid inadvertently marking as read new articles #2842
- Fix scrolling of labels dropdown #2727
- Enlarge
<audio>
widgets to use the full width of the reading zone, to help navigation in e.g. podcasts #2875 - Use
<p>
instead of<pre>
to display<media:description>
information #2807 - Show language and e-mail address in the list of users #2703
- Change logic when using shortcuts to navigate between feeds, in the case some are empty #2687
- Option to show/hide favicons (e.g. to reduce the number of requests) #2821
- Improve loader animation colour in the Dark theme #2753
- Better UI / client network performance (time to first byte) thanks to a data streaming pipeline with
- SimplePie
- Use distinct cache for feeds retrieved with
#force_feed
simplepie#643- Fix the issue of not being able to immediately try to add an invalid feed again #2524
- Update to SimplePie 1.5.4 #2702, #2814
- Require PHP 5.6+, and add PHP 7.4+ compatibility
- Add Russian and German dates
- Etc.
- Use distinct cache for feeds retrieved with
- Deployment
- Docker: Alpine image updated to 3.11 with PHP 7.3.16 and Apache 2.4.43 #2729
- Move core extensions (shipped with FreshRSS) to their own directory, so that
./extensions/
is solely for third-party extensions #2837- This allows mounting
./extensions/
as a Docker volume, to ease adding third-party extensions
- This allows mounting
- Extensions
- New core extension to find feeds for Google Groups #2835
- New hooks
check_url_before_add
andfeed_before_actualize
#2704 - Execute the
entry_before_display
hook also through the API #2762 - Allow extensions to change CSP (security) rules #2708
- Expose the article ID in the share system (for a new e-mail sharing extension) #2707
- i18n
- Misc.
- Bug fixing (regressions from 1.15.x)
- Compatibility
- Add fallback for systems with old ICU < 4.6 (International Components for Unicode) #2680
- API
- Do not obey
rel=self
feed redirections when WebSub is disabled #2659
- Do not obey
- UI
- Start adding support for RTL (right-to-left) languages #2656
- Deployment
- Docker: Ubuntu image updated to PHP 7.3.11
- Misc.
- Bug fixing (regressions from 1.15.x)
- Bug fixing (misc.)
- Sanitize Unicode UTF-8 before insertion of entries, especially needed for PostgreSQL #2645
- Misc.
- Rename sharing action to avoid erroneous blocking by some ad-blockers #2509
- Features
- New approach based on OPML to definite default feeds for new users #2627
- API
- Always send articles IDs as string, to fix compatibility with Reeder #2621
- Bug fixing (regressions from 1.15.0)
- Security
- Improve cookie security with policy
SameSite=Lax
#2630
- Improve cookie security with policy
- Misc.
- Perform automatic git updates with safer fetch+reset instead of clean+fetch+merge #2625
- CLI
- Command line to export/import any database to/from SQLite #2496
- Features
- New archiving method, including maximum number of articles per feed, and settings at feed, category, global levels #2335
- New option to control category sort order #2592
- New option to display article authors underneath the article title #2487
- Add e-mail capability #2476, #2481
- Ability to define default user settings in
data/config-user.custom.php
#2490- Including default feeds #2515
- Allow recreating users if they still exist in database #2555
- Add optional database connection URI parameters #2549, #2559
- Allow longer articles with MySQL / MariaDB (up to 16MB compressed instead of 64kB) #2448
- Add support for terms of service #2520
- Add sharing with Lemmy #2510
- API
- Compatibility
- Deployment
- Take advantage of
mod_authz_core
instead ofmod_access_compat
when running on Apache 2.4+ #2461 - Docker: Ubuntu image updated to 19.10 with PHP 7.3.8 and Apache 2.4.41 #2577
- Docker: Alpine image updated to 3.10 with PHP 7.3.11 and Apache 2.4.41 #2238
- Docker: Increase default PHP POST/upload size to ease importing ZIP files #2563
- New environment variable
COPY_LOG_TO_SYSLOG
to see all logs at once in e.g.docker logs -f
#2591 - New environment variable
FRESHRSS_ENV
to control Minz development mode #2508 - Git ignore
themes/xTheme-*
#2511
- Take advantage of
- Bug fixing
- Security
- UI
- I18n
- Extensions
- Misc.
- Make our JavaScript compatible with LibreJS #2576
- PDO (database) refactoring for code simplification #2522
- Automatic check of CSS syntax in Travis CI #2477
- Make our Travis greener by reducing redundant tests #2589
- Remove support for sharing with Google+ #2464
- Redirect connected users accessing registration page #2530
- Add Makefile #2481
- UI
- Bug fixing
- Fix wrong mark-as-read limit #2429
- Fix API call for removing a category #2411
- Fix user self-registration #2381
- Make CGI Authorization configuration for API more compatible #2446
- Fix refresh icon in Swage theme #2375
- Fix message banner in Swage theme #2379
- Docker: Add
php-gmp
for API support in Ubuntu 32-bit #2450
- Deployment
- Docker: Add automatic health check #2438, #2455
- Docker: Add a version for ARM architecture such as for Raspberry Pi #2436
- Docker: Ubuntu image updated to 19.04 with PHP 7.2.19 and Apache 2.4.38 #2422
- Docker: Alpine image updated to 3.10 with PHP 7.3.7 and Apache 2.4.39 #2238
- Add
hadolint
automatic check of Docker files in Travis #2456
- Security
- Allow
@-
as valid characters in usernames (i.e. allow most e-mails) #2391
- Allow
- I18n
- Improve Occitan #2358
- Misc.
- Bug fixing (regressions introduced in 1.14.X)
- Fix PHP 5.5- compatibility #2359
- Bug fixing (misc.)
- Fix minor code syntax warning in API #2362
- Misc.
- Add Travis check for PHP syntax #2361
- Bug fixing (regressions introduced in 1.14.0)
- Fix load more articles when using ascending order #2314
- Fix cron in the Ubuntu flavour of the Docker image #2319
- Fix the use of arrow keyboard keys for shortcuts #2316
- Fix control+click or middle-click for opening articles in a background tab #2310
- Fix the naming of the option to unfold categories #2307
- Fix shortcut problem when using unfolded articles #2328
- Fix auto-hiding articles #2323
- Fix scroll functions with Edge #2337
- Fix drop-down menu warning #2353
- Fix delay for individual mark-as-read actions #2332
- Fix scroll functions in Edge #2337
- Bug fixing (misc.)
- UI
- Better handling of bad Ajax requests and fast page unload (ask confirmation) #2346
- I18n
- Improve Dutch #2312
- Misc.
- Features
- UI
- New themes Ansum and Mapco #2245
- Rewrite jQuery and keyboard shortcut code as native JavaScript ES6 (except for graphs on the statistics pages) #2234
- Batch scroll-as-read for better client-side and server-side performance #2199
- Keyboard-shortcut navigation at end of feed or category continues to the next one #2255
- Changed jump behaviour after marking articles as read #2206
- More reactive auto-loading of articles #2268
- Deployment
- Bug fixing
- Fix feed option for marking modified articles as unread #2200
- Fix API HTTP Authorization case-sensitivity issue introduced in FreshRSS 1.13.1 #2233
- Fix breaking warning in Fever API #2239
- Fix encoding problem in Fever API #2241
- Fix author semi-colon prefix in Fever API #2281
- Fix the reading of the environment variable
COPY_SYSLOG_TO_STDERR
#2260 - Session fix when form login + HTTP auth are used #2286
- Fix
cli/user-info.php
for accounts using a version of the database older than 1.12.0 #2291
- CLI
- API
- Supported by Readably (client for Android using Fever API)
- I18n
- Security
- Misc.
- Remove HHMV from Travis continuous integration #2249
- Features
- Bug fixing
- Fix missing HTTP
X-Forwarded-Prefix
in cookie path behind a reverse-proxy #2201
- Fix missing HTTP
- Deployment
- Docker improvements #2202
- Performance: Hard-include Apache .htaccess to avoid having to scan for changes in those files
- Performance: Disable unused Apache security check of symlinks
- Performance: Disable unused Apache modules
- Add option to mount custom
.htaccess
for HTTP authentication - Docker logs gets PHP syslog messages (e.g. from cron job and when fetching external content)
- New environment variable
COPY_SYSLOG_TO_STDERR
or inconstants.local.php
to copy PHP syslog messages to STDERR #2213 - New
TZ
timezone environment variable #2153 - Run Docker cron job with Apache user instead of root #2208
- Accept HTTP header
X-WebAuth-User
for delegated HTTP Authentication #2204
- Docker improvements #2202
- Extensions
- Trigger a
freshrss:openArticle
JavaScript event #2222
- Trigger a
- API
- Security
- Fixes when HTTP user does not exist in FreshRSS #2204
- I18n
- Accessibility
- Remove alt in logo #2209
- API
- Improvements to the Google Reader API #2093
- Support for Vienna RSS (client for Mac OS X) #2091
- Contributions to WebSub in third-party systems to support instant push notifications from Mastodon 2.6.2+ and Friendica 2018.12+ #mastodon/9302, #friendica/6137
- Improvements to the Google Reader API #2093
- Features
- UI
- Reworked the scrolling of the categories/feeds sidebar #2117
- Native styled scrollbars in Firefox 64+, Chrome.
- Show collapsed sidebar in the reader mode #2169
- New shortcuts to move to previous/next article without opening it #1767
- Fix regression from 1.12.0 preventing from closing an article #2085
- Improvements of the Swage theme #2088, #2094
- Many style improvements #2108, #2115, #1620, #2089, #2122, #2161
- Reworked the scrolling of the categories/feeds sidebar #2117
- Deployment
- I18n
- Occitan #2110
- SimplePie
- Security
- Fix HTML injections reported by Netsparker #2121
- Bug fixing
- Misc.
- Add username in configuration menu and exported files #2133
- New option to set the duration of the cookie session #2137
- Add donation option via Liberapay #1694
- Features
- Ability to add labels (custom tags) to articles #928
- Also available through Google Reader API (full support in News+, partial in FeedMe, EasyRSS). No support in Fever API.
- Handle article tags containing spaces, as well as comma-separated tags #2023
- Handle authors containing spaces, as well as comma or semi-colon separated authors #2025
- Searches by tag, author, etc. accept Unicode characters #2025
- New option to disable cache for feeds with invalid HTTP caching #2052
- Ability to add labels (custom tags) to articles #928
- UI
- Security
- Performance
- Deployment
- Bug fixing
- Make article GUIDs case-sensitive also with MySQL #2077
- Ask confirmation for important configuration actions #2048
- Fix database size in the Web UI for users about to be deleted #2047
- Fix actualize bug after install #2044
- Fix manual / Web actualize for which the final commit could be done too early #2081
- Fix regression from version 1.11.2, which might have wrongly believed that the server address was private #2084
- Please check in
data/config.php
that you have'pubsubhubbub_enabled' => true,
if your server has a public address
- Please check in
- Extensions
- Update built-in extension to again fix Tumblr feeds from European Union due to GDPR #2053
- I18n
- Fix missing German translations, e.g. for Sharing with Known #2059
- Misc.
- Better port detection behind a proxy #2031
- Features
- Deployment
- Update Docker image to Alpine 3.8 with PHP 7.2 #1956
- Bug fixing
- Fix bugs when searching with special characters (e.g. preventing marking as read) #1944
- Avoid cutting in the middle of a multi-byte Unicode character #1996
- Fix username check in API to allow underscores #1955
- Fix Fever API to allow 32-bit architectures #1962
- Fix CSS font bug for Origine-compact theme #1990
- Fix last user activity for SQLite and PostgreSQL #2008
- Fix article counts with SQLite #2009
- Fix some automatic URL generation cases #1946
- Security
- Avoid feed credentials in logs #1949
- UI
- I18n
- Updated Korean #1985
- Mics.
- Features
- Better support of
media:
tags such as thumbnails and descriptions (e.g. for YouTube) #944
- Better support of
- Extensions
- Bug fixing
- API
- Add support for Fever compatible API, enabling more clients #1406
- iOS: Fiery Feeds, Unread
- MacOS: Readkit
- Add support for Fever compatible API, enabling more clients #1406
- Features
- Several per-feed options (implemented in JSON) #1838
- Light Boolean search implementation #879
- All parts are implicitly
AND
(which must not be written), except ifOR
is stated. - No use of parentheses. Support for quotes to disable the Boolean search, like
"This or that"
. - Example:
Hello intitle:World OR date:P1D example OR author:Else intitle:"This or that"
- All parts are implicitly
- Share with Pocket #1884
- Deployment
- Bug fixing
- Fix Docker bug affecting Apache
CustomLog
(unwanted local copy of access logs),ErrorLog
,Listen
(IPv6 bug) #1873 - Fix muted feeds that were not actually muted #1844
- Fix null exception in shares, showing only the first article #1824
- Fix error during import #1890
- Fix additional automatic sequence bug with PostgreSQL #1907
- Fix errors in case of empty/wrong username when updating user settings #1857
- Fixes in subscription menu #1858
- Fix allowing Unix sockets for MySQL and PostgreSQL #1888
- Fix
create-user
CLI optionno_default_feeds
#1900
- Fix Docker bug affecting Apache
- SimplePie
- Security
- UI
- Add tooltips on user queries #1823
- I18n
- Misc.
- Bug fixing
- Deployment
- New Docker image, smaller (based on Alpine Linux) and newer (with PHP 7.1) #1813
- with automated build for x86-64 (AMD64) architectures
- New Docker image, smaller (based on Alpine Linux) and newer (with PHP 7.1) #1813
- CLI
- New command
./cli/prepare.php
to make the needed sub-directories of the./data/
directory #1813
- New command
- Bug fixing
- UI
- Add tooltips on share configuration buttons #1805
- Misc.
- API
- Features
- Security
- Allow HTTP Auth login with
REDIRECT_REMOTE_USER
when using Apache internal redirect #1772
- Allow HTTP Auth login with
- UI
- Bug fixing
- Extensions
- Allow extensions to define their own reading view #1714
- I18n
- Misc.
- Features
- Share with Mastodon #1521
- UI
- SimplePie
- Remove "SimplePie" name from HTTP User-Agent string #1656
- Bug fixing
- CLI
- SQL
- Perform
VACUUM
on SQLite and PostgreSQL databases when optimisation is requested #918
- Perform
- API
- Breaking change / compatibility fix (EasyRSS): Provide
link
to articles without HTML-encoding #1683
- Breaking change / compatibility fix (EasyRSS): Provide
- Extensions
- I18n
- Misc.
- Compatibility
- UI
- New page for subscription tools #1534
- Adjustments to the padding of the tree of categories and feeds 1589
- Fix feed column position after lazy-loading images #1616
- Force UI controls for HTML5 video and audio #1642
- Fix share menu on small screens #1645
- Go back to previous view when collapsing article #1177
- CLI
- New command
./cli/update-user.php
to update user settings #1600
- New command
- I18n
- Bug fixing
- Misc.
- Features
- Deferred insertion of new articles, for better chronological order #530
- Better search:
- Possibility to use multiple
intitle:
,inurl:
,author:
#1478 - Negative searches with
!
or-
#1381- Examples:
!intitle:unwanted
,-intitle:unwanted
,-inurl:unwanted
,-author:unwanted
,-#unwanted
,-unwanted
- Examples:
- Allow double-quotes, such as
author:"some name"
, in addition to single-quotes such asauthor:'some name'
#1478
- Possibility to use multiple
- Multi-user tokens (to access RSS outputs of any user) #1390
- Compatibility
- Bug fixing
- Fix PubSubHubbub bugs when deleting users, and improved behaviour when removing feeds #1495
- Fix SQL uniqueness bug with PostgreSQL #1476
- (Require manual update for existing installations)
- Do not require PHP extension
fileinfo
for favicons #1461 - Fix UI lowest subscription popup hidden #1479
- Fix update system via ZIP archive #1498
- Work around for IE / Edge bug in username pattern in version 1.6.3 #1511
- Fix mark as read articles when adding a new feed #1535
- Change load order of CSS and JS to help CustomCSS and CustomJS extensions Extensions#13, #1547
- UI
- I18n
- Security
- Do not require write access to check availability of new versions #1450
- Misc.
- Move documentation into FreshRSS code #1510
- Moved
./data/force-https.default.txt
to./force-https.default.txt
,./data/config.default.php
to./config.default.php
, and./data/users/_/config.default.php
to./config-user.default.php
#1531 - Fall back to article URL when the article GUID is empty #1482
- Rewritten Favicon library using cURL #1504
- Fix SimplePie option to disable syslog #1528
- Features
- UI
- CLI
- Bug fixing
- Security
- Misc.
- Relaxed requirements for username to
/^[0-9a-zA-Z]|[0-9a-zA-Z_]{2,38}$/
#1423
- Relaxed requirements for username to
- Features
- SQL
- More robust export function in the case of large datasets #1372
- CLI
- New command
./cli/user-info.php
to get some user information #1345
- New command
- Bug fixing
- Fix bug in estimating last user activity #1358
- PostgreSQL: fix bug when updating cached values #1360
- Fix bug in confirmation before marking as read #1348
- Fix small bugs in installer #1363
- Allow slash in database hostname, when using sockets #1364
- Add curl user-agent to retrieve favicons #1380
- Send login cookie only once #1398
- Add a check for PHP extension fileinfo #1375
- Bug fixing
- Fix regression introduced in 1.6.0 when refreshing articles with Mark updated articles as unread #1349
- CLI
- New Command-Line Interface (CLI) #1095
- Install, add/delete users, actualize, import/export. See CLI documentation.
- New Command-Line Interface (CLI) #1095
- API
- Support for editing feeds and categories from client applications #1254
- Compatibility:
- Features
- Rework the “mark as read during scroll” option, enabled by default for new users #1258, #1309
- Including a keep unread function #1327
- In a multi-user context, take better advantage of other users’ refreshes #1280
- Better control of number of entries per page or RSS feed #1249
- Since X hours:
https://freshrss.example/i/?a=rss&hours=3
- Explicit number:
https://freshrss.example/i/?a=rss&nb=10
- Limited by
min_posts_per_rss
andmax_posts_per_rss
in user config
- Since X hours:
- Support custom ports
localhost:3306
for database servers #1241 - Add date to exported files #1240
- Auto-refresh favicons once or twice a month #1181, #1298
- Cron updates will also refresh favicons every 2 weeks #1306
- Rework the “mark as read during scroll” option, enabled by default for new users #1258, #1309
- Bug fixing
- Correction of bugs related to CSRF tokens introduced in version 1.5.0 #1253, 44f22ab
- Fix bug in Global view introduced in version 1.5.0 #1269
- Fix sharing bug #1289
- Fix bug in auto-loading more articles after marking an article as un-read #1318
- Fix bug during import of favourites #1315, #1312
- Fix bug not respecting language option for new users #1273
- Bug in example of URL for FreshRSS RSS output with token #1274
- Security
- Extensions
- SQL
- I18n
- Fix some messages during installation #1339
- UI
- SimplePie
- Fix auto-discovery of RSS feeds in Web pages served as
text/xml
#1264
- Fix auto-discovery of RSS feeds in Web pages served as
- Misc.
- Removed resource-priorities attributes (
defer
,lazyload
), deprecated by W3C #1222
- Removed resource-priorities attributes (
- Compatibility
- Features
- Security
- Bug fixing
- UI
- API
- Add API link in FreshRSS profile settings to ease set-up #1186
- Misc.
- Compatibility
- Require at least PHP 5.3+ (drop PHP 5.2) #1133
- Features
- SimplePie
- Support for feeds with invalid whitespace #1142
- Bug fixing
- Security
- CSP compatibility for homepage #1120
- I18n
- Draft of Russian #1085
- Misc.
- Security
- Features
- New list of domains for which to force HTTPS (for images, videos, iframes…) defined in
./data/force-https.default.txt
and./data/force-https.txt
#1083- In particular useful for privacy and to avoid mixed content errors, e.g. to see YouTube videos when FreshRSS is in HTTPS
- Add sharing with “Journal du Hacker” #1056
- New list of domains for which to force HTTPS (for images, videos, iframes…) defined in
- UI
- I18n
- Turkish #1073
- Bug fixing
- Fixed OPML import title bug #1048
- Fixed upgrade bug with SQLite when articles were marked as unread #1049
- Fixed error when deleting feeds from statistics page #1047
- Fixed several small bugs in global and reader view #1050
- Fixed sharing bug with PHP7 #1072
- Fixed fall-back when php-json is not installed #1092
- API
- Possibility to show only read items #1035
- Misc.
- Features
- Security
- Invalid logins now return HTTP 403, to be easier to catch (e.g. fail2ban) #1015
- UI
- I18n
- Italian #1003
- Misc.
- UI
- I18n
- Dutch #949
- Bug fixing
- Features
- Security
- UI
- Misc.
- PHP 7 officially supported (~70% speed improvements on early tests). #889
- Restore support for PHP 5.2.1+. #214a5cc #894
- Support for data-src for images of articles retrieved via the full-content module. #877
- Add a couple of default feeds for fresh installations. #886
- Changed some log visibilities. #885
- Fix broken links for extension script / style files. #862
- Load default configuration during installation to avoid hard-coded values. #890
- Fix non-consistent behaviour in Minz_Request::getBaseUrl() and introduce Minz_Request::guessBaseUrl(). #906
- Generate
base_url
during the installation and add apubsubhubbub_enabled
configuration key. #865 - Load configuration by recursion to overwrite array values. #923
- Cast
$limits
configuration values in integer. #925 - Don’t hide errors in configuration. #920
- Features
- New option to detect and mark updated articles as unread.
- Support for internationalized domain name (IDN).
- Improved logic for automatic deletion of old articles.
- API
- Work-around for News+ bug when there is no unread article on the server.
- UI
- New confirmation message when leaving a configuration page without saving the changes.
- Bug fixing
- Corrected bug introduced in previous beta about handling of HTTP 301 (feeds that have changed address)
- Corrected bug in FreshRSS RSS feeds.
- Security
- Sanitize HTTP request header
Host
.
- Sanitize HTTP request header
- Misc.
- Attempt to better handle encoded article titles.
- UI
- Slider math with Dark theme
- Add a message if request failed for mark as read / favourite
- I18n
- Fix some sentences
- Add German as a supported language
- Add some indications on password format
- Bug fixing
- Some shortcuts was never saved
- Global view didn’t work if set by default
- Minz_Error was badly raised
- Feed update failed if nothing had changed (MySQL only)
- CRON task failed with multiple users
- Tricky bug caused by cookie path
- Email sharing was badly supported (no urlencode())
- Misc.
- Add a CREDIT file with contributor names
- Update lib_opml
- Default favicon is now served by HTTP code 200
- Change calls to syslog by Minz_Log::notice
- HTTP credentials are no longer logged
- Feature
- Extension system (!!): some extensions are available at github.com/FreshRSS/Extensions
- Refactoring
- Front controller (FreshRSS class)
- Configuration system
- Sharing system
- New data files organization
- Updates
- Remove restriction of 1h for updates
- Show the current version of FreshRSS and the next one
- UI
- Remove the "sticky position" of the feed aside (moved into an extension)
- "Show password" shows the password only while the user is pressing the mouse.
- SimplePie
- Support for content-type application/x-rss+xml
- New force_feed option (for feeds sent with the wrong content-type / MIME) by adding #force_feed at the end of the feed URL
- Improved error messages
- Statistics
- Add information on feed repartition pages
- Add percent repartition for the bigger feeds
- UI
- New theme selector
- Update Screwdriver theme
- Add BlueLagoon theme by Mister aiR
- Misc.
- Add option to remove articles after reading them
- Add comments
- Refactor i18n system to avoid loading unnecessary strings
- Fix security issue in Minz_Error::error() method
- Fix redirection after refreshing a given feed
- UI
- New subscription page (introduce .box items)
- Change feed category by drag and drop
- New feed aside on the main page
- New configuration / administration organization
- Configuration
- New options in config.php for cache duration, timeout, max inactivity, max number of feeds and categories per user.
- Refactoring
- Refactor authentication system (introduce FreshRSS_Auth model)
- Refactor indexController (introduce FreshRSS_Context model)
- Use
_t()
,_i()
,_url()
,Minz_Request::good()
andMinz_Request::bad()
as much as possible - Refactor javascript_vars.phtml
- Better coding style
- I18n
- Introduce a new system for i18n keys (not finished yet)
- Misc.
- Fix global view (did not work anymore)
- Add do_post_update for update system
- Introduce
checkInstallAction
to test if FreshRSS installation is ok
- UI
- Add a space after tag icon
- Statistics
- Add an average per day on the 30-day period graph
- Add percent of total on top 10 feed
- Bug fixes
- Fix "mark as read" in global view
- Fix "read all" shortcut
- Fix categories not appearing when adding a new feed (GET action)
- Fix enclosure problem
- Fix getExtension() on PHP < 5.3.7
- UI
- New interface for statistics
- Fix filter buttons
- Number of articles divided by 2 in reading view
- Redesign of bigMarkAsRead
- Features
- New automatic update system
- New reset auth system
- Security
- "Mark as read" requires POST requests for several articles
- Test HTTP REFERER in install.php
- Configuration
- New "Show all articles" / "Show only unread" / "Adjust viewing" option
- New notification timeout option
- Misc.
- Improve coding style + comments
- Fix SQLite bug "ON DELETE CASCADE"
- Improve performance when importing articles
- UI
- Hide categories/feeds with unread articles when showing only unread articles
- Dynamic favicon showing the number of unread articles
- New theme: Screwdriver by Mister aiR
- Statistics
- New page with article repartition
- Improvements
- Security
- Basic protection against XSRF (Cross-Site Request Forgery) based on HTTP Referer (POST requests only)
- API
- Compatible with lighttpd
- Misc.
- Changed lazyload implementation
- Support of HTML5 notifications for new upcoming articles
- Add option to stay logged in
- Bug fixes in export function, add/remove users, keyboard shortcuts, etc.
- New options
- Add system of user queries which are shortcuts to filter the view
- New TTL option to limit the frequency at which feeds are refreshed (by cron or manual refresh button). It is still possible to manually refresh an individual feed at a higher frequency.
- SQL
- Add support for SQLite (beta) in addition to MySQL
- SimplePie
- Complies with HTTP "301 Moved Permanently" responses by automatically updating the URL of feeds that have changed address.
- Themes
- Flat and Dark designs are based on same template file as Origine
- Statistics
- Refactor code
- Add an idle feed page
- Misc
- Several bug fixes
- Add confirmation option when marking all articles as read
- Fix some typo
- API compatible with Google Reader API level 2
- Basic support for audio and video podcasts
- Searching
- New search filters date: and pubdate: accepting ISO 8601 date intervals such as
date:2013-2014
orpubdate:P1W
- Possibility to combine search filters, e.g.
date:2014-05 intitle:FreshRSS intitle:Open great reader #Internet
- New search filters date: and pubdate: accepting ISO 8601 date intervals such as
- Change nav menu with more buttons instead of dropdown menus and add some filters
- New system of import / export
- Support OPML, Json (like Google Reader) and ZIP archives
- Can export and import articles (specific option for favourites)
- Refactor "Origine" theme
- Some improvements
- Based on a template file (other themes will use it too)