Skip to content

Latest commit

 

History

History
2457 lines (2267 loc) · 199 KB

CHANGELOG.md

File metadata and controls

2457 lines (2267 loc) · 199 KB

FreshRSS changelog

See also the FreshRSS releases.

2024-1X-XX FreshRSS 1.25.0-dev

  • 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 and Expires #6812, FreshRSS/simplepie#26
    • Support custom HTTP request headers per feed (e.g. for Authorization) #6820
    • New unicity policies and heuristic for feeds with bad article IDs #4487, #6900
    • 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, ^=, |=
    • 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
    • Rebuild feed favicon on cache clear #6961
    • New sharing with Telegram #6838
  • Bug fixing
    • Fix searches with a parenthesis before an operator like ("a b") or (!c) #6818
    • Fix auto-read tags #6790
    • Fix favicon error in case of wrong URL #6899
    • Use cURL to fetch extensions list (allows e.g. IPv6) #6767
    • Fix XML encoding in cURL options #6821
    • Fix share menu shortcut #6825
  • Compatibility
  • Deployment
    • Docker: dev image freshrss/freshrss:oldest updated to Alpine 3.16 with PHP 8.1.22 and Apache 2.4.59 #6711
    • Update Dockerfiles to newer key-value format #6819
    • Docker minor improvement of entrypoint #6827
  • SimplePie
  • Security
    • Apache protect more non-public folders and files #6881, #6893
    • Fix login in unsafe mode when using a password with special XML characters #6797
    • Add privacy settings on extension list retrieval #4603
  • UI
    • Searchable My Labels field #6753
    • Add subscription management button to reading view #6946
    • Move to next unread Label on mark as read #6886
    • Improve Web accessibility: fix aria-hidden bug, and use HTML5 hidden #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
    • Various UI and style improvements #6959
  • 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 in phpstan.neon #6892
    • Code improvements #6800, #6809
    • Makefile improvements #6913
    • Fix PHPCS ControlSignature #6896
    • Update PHPMailer #6968
    • Update dev dependencies #6780, #6964, , #6965, #6966, #6967, #6970

2024-09-06 FreshRSS 1.24.3

  • 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.
    • Use charset for JSON requests from the UI #6710
    • Use .html extension for the local cache of full content pages instead of .spc #6724
    • Update dev dependencies #6739, #6758, #6759, #6760

2024-08-23 FreshRSS 1.24.2

  • 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
    • Force log out of users when they are disabled #6612
    • Increase default values for OpenID Connect OIDCSessionMaxDuration and OIDCSessionInactivityTimeout #6642
    • Add default API CORS HTTP headers to shareable user queries #6659
  • 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
  • Extensions
    • Add core extensions, shipped by default: UserCSS and UserJS #6267
      • Replaces CustomCSS and CustomCS extensions
    • Strong type array parameter helper #6661
  • CLI
    • Add quiet option to cli/db-backup.php #6593
  • Compatibility
  • Deployment
    • Docker default image (Debian 12 Bookworm) updated to PHP 8.2.20 and Apache 2.4.61
    • Docker alternative image updated to Alpine 3.20 with PHP 8.3.10 and Apache 2.4.62 #5383
    • Docker: Alpine dev image freshrss/freshrss:newest updated to PHP 8.4.0beta3 and Apache 2.4.62 #5764
  • UI
    • Default dark mode to auto #5582
    • New option to control action icons position in reading view #6297
    • Sticky buttons at the bottom of settings #6304
    • Various UI and style improvements #6446, #6485, #6651
  • I18n
    • Czech: use correct ISO 639-1 code cs (and not cz, which is the country) #6514
    • Improve Japanese #6564
    • Improve Spanish #6634
    • Improve Traditional Chinese #6691
  • Misc.

2024-06-05 FreshRSS 1.24.1

  • Features
    • New button to export OMPL of a category #6519
    • Better git error messages in built-in Web update #6496
  • 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.

2024-05-23 FreshRSS 1.24.0

  • 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
  • CLI
  • API
    • New compatible app Read You #4633, #6050
    • Reduce API memory consumption #6137
    • Allow negative feed IDs for future special cases #6010
    • Only return OK for requests without query parameters #6238
  • 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
    • 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
  • Security
    • Replace iframe allow attribute #6274
  • Deployment
    • Disable unused PHP modules in our Debian-based Docker image #5994
  • UI
  • i18n
  • 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
    • Fix PHP 7.4 compatibility for automated tests #6038, #6039
    • Fix PHP 8.2+ compatibility for e-mails #6130
    • Use PHP 8.3+ #[\Override] #6273
  • Misc.

2023-12-30 FreshRSS 1.23.1

  • 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
  • i18n
    • Improve Simplified Chinese #5977
    • Improve Hungarian #6000

2023-12-24 FreshRSS 1.23.0

  • 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
  • Compatibility
    • Require PHP 7.4+, and implement typed properties #5720
    • Soft require Apache 2.4+ (but repair minimal compatibility with Apache 2.2) #5791, #5804
  • 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
  • Deployment
    • Use GitHub Actions to build Docker images, offering architectures amd64, arm32v7, arm64v8 with automatic detection #5808
    • Docker alternative image updated to Alpine 3.19 with PHP 8.2.13 and Apache 2.4.58 #5383
  • 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
    • Avoid printing exceptions in favicons #5867
    • Remove unneeded execution permissions on some files #5831
  • UI
    • Ensure that enough articles are loaded on window resize #5815
    • Improve Nord theme #5885
    • Do not show message Add some feeds #5827
    • Various UI and style improvements #5886
  • i18n
    • Fix font priority for languages using Han characters #5930
    • Improve Dutch #5796
    • Improve Hungarian #5918
  • Misc.

2023-10-30 FreshRSS 1.22.1

  • Bug fixing
    • Fix regression in i18n English fallback for extensions #5752
    • Fix identification of thumbnails #5750
    • OpenID Connect compatibility with colon : in OIDC_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
    • Export all environment variables to cron (to allow custom environment variables such as for Kubernetes) #5772
    • Docker: Upgraded Alpine dev image freshrss/freshrss:newest to PHP 8.3 and Apache 2.4.58 #5764
  • Compatibility
    • Test compatibility with PHP 8.3 #5764
  • UI
  • i18n
    • Better i18n string for feed submenu for mark as read #5762
    • Improve Dutch #5759
  • Misc.
    • Move to GitHub Actions for our GitHub Pages #5681
    • Update dev dependencies and use stylelint-stylistic #5766

2023-10-23 FreshRSS 1.22.0

  • Features
    • Add support for OpenID Connect (only in our default Debian-based Docker image for x86_64, not Alpine) through libapache2-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
  • 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
    • Rework trusted proxies (especially with Docker) #5549
    • Automatic trusted sources during install #5358
    • Show remote IP address in case of HTTP Basic Auth error #5314
  • 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
    • Fix fallback to English for extensions #5426
    • Allow deep-link to extension configuration #5449
    • New extension hook entry_auto_read #5505, #5561
    • Simplify extension method #5234
    • Remove obsolete core extensions Google Group and Tumblr #5457
  • SimplePie
    • Fix error_reporting for PHP 8.1+ #5199
  • Misc.

2023-03-04 FreshRSS 1.21.0

  • 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
    • Require PHP 7.2+ (drop support for PHP 7.0 and 7.1) #4848
    • Workaround disabled openlog() or syslog() #5054
  • 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
  • Themes
  • i18n
  • SimplePie
  • Misc.

2022-12-08 FreshRSS 1.20.2

2022-11-14 FreshRSS 1.20.1

  • Features
    • Add support for custom XPath date/time format #4703
    • Add default redirect when authenticating #4778
    • Force default user before rendering login page #4620
  • 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
  • i18n
  • Compatibility
    • Compatibility PHP 8.1+ strip_tags() #4688
    • Fix GLOB_BRACE is not available on all platforms #4628
  • 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.
    • Added Linkding as a sharing method #4721
    • Exclude .git/ from tests #4824
    • Exclude extensions/ from eslint and stylelint tests #4606
    • Update GitHub Actions version #4717

2022-09-10 FreshRSS 1.20.0

  • 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" or search:QueryA, or by ID: S:3
    • Allow many (50k+) feeds #4347
      • Note: only for new users or after an export/import or a manual database update
      • See also #4357, #4353, #4417, #4502
    • 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
    • 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
  • 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" and ab-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 change entry->isRead() #4331
  • i18n
  • API
  • 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) and php-xml (used by SimplePie) #4420
    • 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.

2022-02-04 FreshRSS 1.19.2

  • 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
    • Improve dropdown menus on mobile view #4141, #4128
    • Improve menu icons #4004
  • 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
  • i18n
    • Improve i18n CLI #4131
    • Use typographic quotes #4133
    • Improve message regarding forced feeds #4145
    • Improve Czech #4151
    • Improve English #4161
  • 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

2022-01-02 FreshRSS 1.19.1

  • Bug fixing
    • Fix some filters for automatic article actions (e.g., !pubdate:P3d) #4092
  • 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
  • UI
    • Fix left navigation with long category names #4055
    • Show My labels menu also when empty #4065
    • Improve category titles on global view #4059
    • Disable dynamic favicon for browser / extensions blocking canvas #4098
    • Minor UI and style improvements #4061, #4067, #4085
  • SimplePie
    • Manual update to SimplePie 1.5.8 #4113
  • Code improvements

2021-12-31 FreshRSS 1.19.0

  • 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 or labels:"my label,my other label,🧪"
      • Search articles with any label: L:* or no label: !L:*
    • 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
    • Require PHP 7.0+ (drop support for PHP 5.x) #3666
    • Drop support for Microsoft Internet Explorer (IE11) #3666
    • Fix some warnings with PHP 8.1+ #4012, #4018
    • Fix back-compatibility with Git 2.21- for automatic updates #3669
    • Fix JavaScript caching and compression for some Apache platforms #4075
  • Deployment
    • Docker: development image :oldest is now based on alpine: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
  • UI
  • 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 inputand select elements for the Origine theme #3727
    • Fix style of banner text for the Origine theme #3731
  • i18n
  • Extensions
    • Add system configuration for extension #3626
  • SimplePie
    • Merge from upstream, help with PHP 8.1+ #4011
    • Fallback to file extensions for enclosures not providing a media type #3861
  • 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

2021-06-06 FreshRSS 1.18.1

  • Features
    • Support standard HTTP 410 Gone by disabling (muting) gone feeds #3561
    • Make advanced feed options such as SSL available to non-admins #3612
  • API
  • 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
  • i18n
  • Code improvements:
    • Friendly constant syntax for Intellisense #3577
    • Fix several comments syntaxes #3615
    • Minor uniform stricter HTML #3616
    • Removed unused variable #3587
    • Provide action name in Minz controller exception #3624
    • New convenience method to extract multiline GET parameters from e.g. <textarea> #3629
  • Deployment
    • Automatically apply latest tag in git for the latest FreshRSS release #3524
  • Misc.
    • Remove legacy data/do-install.txt for triggering install process #3555
    • If using built-in git updates, automatically change to git edge branch if using old master or dev branch names #3589

2021-03-14 FreshRSS 1.18.0

  • 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
  • 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
    • Support PHP 8+ #3186, #3207, #3459, #3487
      • Note: needed for MySQL 8+ with default authentication settings
      • Change ZIP-handling method #3470
  • API
    • Supported by FocusReader (Android) #3478
    • Implement OPML import/export #3424
    • Add canonical field for fluent-reader, better compatibility InoReader #3391
    • Better compatibility with BazQux API #3320
    • Fix continuation token by ensuring it is a string (for Reeder) #3247
  • 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
  • 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() by intval() 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 and nav_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
    • 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.
    • Check access rights to temp folder during install #3312
    • Ensure maximum integer for a date to avoid some database issues #3259
    • Upgrade PHPMailer to 6.3.0 #3457
    • Make our Travis greener by testing only our oldest and newest supported PHP versions #3492

2020-09-22 FreshRSS 1.17.0

  • Features
    • New tag management page #3121
    • New page to add feeds and categories #3027
    • Add a way to disable/enable users #3056
  • 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
    • Add fall-backs for compatibility with OPMLs from The Old Reader #3071
    • Relaxed to allow underscore _ in feed addresses #3133
  • Deployment
    • Docker default image rebased on Debian 10 Buster, with Apache 2.4.38 and PHP 7.3.19 #3159
    • Docker: Alpine image updated to 3.12 with Apache/2.4.46 and PHP 7.3.21 #3025
    • Update example of Dockerfile #3108
  • CLI
    • Re-introduce --api_password option (vanished in 1.16.0) #3179
    • Modify shebang to be more portable #3038
  • Bug fixing
    • SimplePie: Fix compliance with HTTP 301 Moved Permanently #3180
  • i18n
    • Add language negotiation when the user is not logged in #3022
    • New United States English #3060
    • Improved British English #3068
    • Improved Dutch #3063
    • Improved Slovak #3020
    • Add a language reference when adding a new one #3044
    • Change how updating a key works #3072
    • Add missing translations #3034
  • Misc.
    • Return proper MIME type for favicons #3032
    • Add a migration system #2760
    • Makefile support for FreshRSS extensions #3042
    • Update rules to use Make syntax #3062
    • Refactor the export feature #3045

2020-05-31 FreshRSS 1.16.2

  • Bug fixing (regressions)
    • Fix migration of the preference Show categories unfolded (from ≤ 1.16.0) to the new Categories to unfold #3019

2020-05-30 FreshRSS 1.16.1

  • Features
    • Add the possibility to filter by feed IDs #2892
      • like f:123 more-search or multiple feed IDs like f:123,234,345 more-search or an exclusion like !f:456,789 more-search
    • Show users last activity date #2936
    • Ability to follow HTML redirections when retrieving full article content #2985
  • 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
    • JSON output option for ./cli/user-info.php --json #2968
    • Add language and e-mail in ./cli/user-info.php #2958
    • Fix filenames for exported files #2932
  • 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
    • Docker: Alpine image updated to PHP 7.3.17
    • Add reference documentation for using Apache as a reverse proxy #2919
    • Enforce Unix line endings when checking out via git #2879
  • 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
    • Improve Simplified Chinese #2891
    • Improve Dutch #3005
    • Reformat i18n files #2976
    • Add a Makefile rule to produce PO4A i18n files #3006
  • 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

2020-04-09 FreshRSS 1.16.0

  • 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
    • 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.
    • 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 and FRESHRSS_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 in applyFilterActions #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
  • 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.
  • 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
  • Extensions
    • New core extension to find feeds for Google Groups #2835
    • New hooks check_url_before_add and feed_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.
    • Improve logging of database errors #2734
    • Remove the min_posts_per_rss configuration, which made efficient buffering difficult #2588
    • Add a test target to Makefile #2725
    • Fix test suite #2721
    • Refactor request class #2373
    • Remove deprecated magic quotes logic #2698

2019-11-22 FreshRSS 1.15.3

  • Bug fixing (regressions from 1.15.x)
    • Fix adding categories in MySQL 5.5 #2670
    • Fix saving sharing integrations #2669
  • 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
  • UI
    • Start adding support for RTL (right-to-left) languages #2656
  • Deployment
    • Docker: Ubuntu image updated to PHP 7.3.11
  • Misc.
    • Add more log when errors occur when saving a profile #2663
    • Improve Makefile with port override #2660
    • Update a few external links to HTTPS #2662

2019-11-12 FreshRSS 1.15.2

  • Bug fixing (regressions from 1.15.x)
    • Fix CLI failing due to new test against empty usernames #2644
    • Fix CLI install for SQLite #2648
    • Fix database optimize action for MySQL/MariaDB #2647
  • 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

2019-11-06 FreshRSS 1.15.1

  • 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)
    • Fix database auto-creation at install #2635
    • Fix bug in database size estimation with PostgreSQL for users with uppercase names #2631
    • Reset name of default category (which cannot be customised anymore) #2639
    • Fix UI style details #2634
  • Security
    • Improve cookie security with policy SameSite=Lax #2630
  • Misc.
    • Perform automatic git updates with safer fetch+reset instead of clean+fetch+merge #2625

2019-10-31 FreshRSS 1.15.0

  • 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
    • Require at least PHP 5.6+ #2495, #2527, #2585
    • Require php-json and remove remove JSON.php fallback #2528
    • Require at least PostgreSQL 9.5+ #2554
  • Deployment
    • Take advantage of mod_authz_core instead of mod_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
  • Bug fixing
    • Fix missing PHP opcache package in Docker Alpine #2498
    • Fix IE11 / Edge keyboard compatibility #2507
    • Use <dc:creator> instead of <author> for RSS 2.0 outputs #2542
    • Fix PostgreSQL and SQLite database size estimation #2562
    • Fix broken SVG icons in Swage theme #2568, #2571
  • Security
    • Fix referrer vulnerability when opening an article original link with a shortcut #2506
    • Slight refactoring of access check #2471
  • UI
    • Optimize dynamic favicon for HiDPI screens #2539
    • Hide the admin checkbox if user is not admin #2531
  • I18n
  • Extensions
    • Additional hooks #2482
    • New call to change the layout #2467
  • 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

2019-07-25 FreshRSS 1.14.3

  • UI
    • New configuration page for each category #2369
    • Update shortcut configuration page #2405
    • CSS style for printing #2149
    • Do not hide multiple <br /> tags #2437
    • Updated to jQuery 3.4.1 (only for statistics page) #2424
  • 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
  • I18n
  • Misc.
    • New parameter ?maxFeeds=10 to control the max number of feeds to refresh manually #2388
    • Default to SQLite during install #2443
    • Add automatic check of shell scripts in Travis with shellcheck and shfmt #2454

2019-04-08 FreshRSS 1.14.2

  • 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

2019-04-07 FreshRSS 1.14.1

  • 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.)
    • Fix extensions in Windows #994
    • Fix import of empty articles #2351
    • Fix quote escaping on CLI i18n tools #2355
  • UI
    • Better handling of bad Ajax requests and fast page unload (ask confirmation) #2346
  • I18n
  • Misc.
    • Check JavaScript (jshint) in Travis continuous integration #2315
    • Add PHP 7.3 to Travis #2317

2019-03-31 FreshRSS 1.14.0

  • Features
    • Filter actions feature, to auto-mark-as-read based on a search query per feed #2275
    • Improve account change when using the unsafe automatic login #2288
  • 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
    • New default Docker image based on Ubuntu (~3 times faster, but ~2.5 times larger) #2205
      • Using Ubuntu 18.10 with PHP 7.2.15 and Apache 2.4.34
    • Alpine version updated to Alpine 3.9 with PHP 7.2.14 and Apache 2.4.38 #2238
  • 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
    • Better validation of parameters #2046
    • New option --header to cli/user-info.php #2296
  • API
    • Supported by Readably (client for Android using Fever API)
  • I18n
  • Security
    • Reworked the CSRF token interaction with the session in some edge cases #2290
    • Remove deprecated CSP child-src instruction (was already replaced by frame-src) #2250
    • Ensure entry IDs are unique and cannot be set by feeds #2273
  • Misc.
    • Remove HHMV from Travis continuous integration #2249

2019-01-26 FreshRSS 1.13.1

  • Features
    • Include articles with custom labels during export #2196
    • Export/import articles read/unread state #2226
    • Import FeedBin, and more robust general import #2228
  • Bug fixing
    • Fix missing HTTP X-Forwarded-Prefix in cookie path behind a reverse-proxy #2201
  • 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 in constants.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
  • Extensions
    • Trigger a freshrss:openArticle JavaScript event #2222
  • API
    • Automatic test of API configuration #2207
    • Performance + compatibility: Use Apache SetEnvIf module if available and fall-back to RewriteRule #2202
  • Security
    • Fixes when HTTP user does not exist in FreshRSS #2204
  • I18n
  • Accessibility
    • Remove alt in logo #2209

2018-12-22 FreshRSS 1.13.0

  • API
  • Features
    • Ability to import XML files exported from Tiny-Tiny-RSS #2079
    • Ability to show all the feeds that have a warning #2146
    • Share with Pinboard #1972
  • 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
  • Deployment
    • Support for HTTP X-Forwarded-Prefix to ease the use of reverse proxies #2191
      • Updated Docker + Træfik + Let’s Encrypt deployment guide #2189
    • Docker image updated to Alpine 3.8.2 with PHP 7.2.13 and Apache 2.4.35
    • Fix .dockerignore #2195
  • I18n
  • SimplePie
    • Update to SimplePie 1.5.2 #2136
      • Fix some sanitizing in authors / tags
    • Strip embedded SVG images for now #2135
  • Security
  • Bug fixing
    • Fix warning in tempnam() with PHP 7.1+ affecting ZIP export #2134
    • Fix print for views with unfolded articles #2130
    • Fix notifications in reader view #1407
    • Fix sharing with Movim #1781
  • Misc.

2018-10-28 FreshRSS 1.12.0

  • 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
  • UI
    • New theme Swage #2069
    • Click on authors to initiate a search by author #2025
    • Fix CSS for button alignments in older Chrome versions #2020
    • Updated to jQuery 3.3.1 #2021
    • Updated to bcrypt.js 2.4.4 #2022
  • Security
    • Improved flow for password change (avoid error 403) #2056
    • Allow dot . in username (best to avoid, though) #2061
  • Performance
    • Remove some counterproductive preload / prefetch rules #2040
    • Improved fast flush (earlier transfer, fetching of resources, and rendering) #2045
      • Only available for Apache running PHP as module (not for NGINX, or PHP as CGI / FPM) because we want to keep compression
  • Deployment
    • Fix Docker bug with some cron values #2032
    • Perform git clean -f -d -f (removes unknown files and folders) before git auto-update method #2036
    • Docker image updated to Alpine 3.8.1 with PHP 7.2.8 and Apache 2.4.34
  • 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
  • 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

2018-09-09 FreshRSS 1.11.2

  • Features
    • New menu to mark selected articles (view) as unread #1966
    • Share with LinkedIn #1960
  • 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
    • Improved mark-as-read the bottom articles during scrolling #1973
    • Show all authors for articles with multiple authors #1968
  • I18n
  • Mics.
    • Auto-login after self user creation #1928
    • Better test if server has public address #2010
    • Allow - in database name at install time #2005

2018-06-16 FreshRSS 1.11.1

  • Features
    • Better support of media: tags such as thumbnails and descriptions (e.g. for YouTube) #944
  • Extensions
    • New extension mechanism allowing changing HTTP headers and other SimplePie parameters #1924
    • Built-in extension to fix Tumblr feeds from European Union due to GDPR #1894
  • Bug fixing
    • Fix bug in case of bad i18n in extensions #1797
    • Fix extension callback for updated articles and PubSubHubbub #1926
    • Fix regression in fetching full articles content #1917
    • Fix several bugs in the new Fever API #1930
    • Updated sharing to Mastodon #1904

2018-06-03 FreshRSS 1.11.0

  • API
  • Features
    • Several per-feed options (implemented in JSON) #1838
      • Mark updated articles as read #891
      • Mark as read upon reception #1702
      • Only for admin user #1905
        • Feed cURL timeout
        • Ignore SSL (unsafe) #1811
    • Light Boolean search implementation #879
      • All parts are implicitly AND (which must not be written), except if OR 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"
    • Share with Pocket #1884
  • Deployment
    • Includes an optional cron daemon in Docker to refresh feeds automatically #1869
    • Docker Compose example #1882
  • 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 option no_default_feeds #1900
  • SimplePie
    • Work-around for feeds with invalid non-unique GUIDs #1887
    • Fix for Atom feeds using a namespace for type #1892
    • Remove some warnings during parsing attempts of some bad feeds #1909
  • Security
    • Strip HTTP credentials from HTTP Referer in SimplePie #1891
    • Use autocomplete="new-password" to prevent form autocomplete in user management pages (fix bug with e.g. Firefox) #1877
  • UI
    • Add tooltips on user queries #1823
  • I18n
  • Misc.
    • Use cURL for fetching full articles content #1870
    • Add error log information when SQLite has not enough temp space #1816
    • Allow extension dir to be a symlink #1911

2018-03-09 FreshRSS 1.10.2 (Docker only)

  • Bug fixing
    • Fix Docker image for OPML import #1819
    • Fix Docker image for CSS selectors #1821
    • Fix Docker other missing PHP extensions #1822

2018-03-04 FreshRSS 1.10.1

  • Deployment
    • 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
  • Bug fixing
    • Fix API bug for EasyRSS #1799
    • Fix login bug when using double authentication (HTTP + Web form) #1807
    • Fix database upgrade for FreshRSS versions older than 1.1.1 #1803
    • Fix cases of double port in FreshRSS public URL #1815
  • UI
    • Add tooltips on share configuration buttons #1805
  • Misc.
    • Move ./data/shares.php to ./app/shares.php to facilitate updates #1812
    • Show article author email when there is no author name #1801
    • Improve translation tools #1808

2018-02-24 FreshRSS 1.10.0

  • API
    • Add compatibility with FeedMe 3.5.3+ on Android #1774
  • Features
    • Ability to pause feeds, and to hide them from categories #1750
    • Ability for the admin to reset a user’s password #960
  • Security
    • Allow HTTP Auth login with REDIRECT_REMOTE_USER when using Apache internal redirect #1772
  • UI
    • New icons for marking as favourite and marking as read in the Reading View #603
    • Add shortcuts to switch views #1755
  • Bug fixing
    • Fix login bug when HTTP REMOTE_USER changes (used by YunoHost) #1756
    • Fix warning in PHP 7.2 #1739
  • Extensions
    • Allow extensions to define their own reading view #1714
  • I18n
  • Misc.
    • More sites in force-https.default.txt #1745
    • Trim URLs when adding new feeds #1778

2017-12-17 FreshRSS 1.9.0

  • Features
    • Share with Mastodon #1521
  • UI
    • Add more Unicode glyphs in the Open Sans font #1032
    • Show URL to add subscriptions from third-party tools #1247
    • Improved message when checking for new versions #1586
  • SimplePie
    • Remove "SimplePie" name from HTTP User-Agent string #1656
  • Bug fixing
    • Work-around for PHP 5.6.0- CURLOPT_FOLLOWLOCATION open_basedir bug in favicons and PubSubHubbub #1655
    • Fix PDO PostgreSQL detection #1690
    • Fix punycode warning in PHP 7.2 #1699
    • Fix crash when adding a new category while adding a new feed #1731
    • Fix ExtensionManager exception handling #1724
  • CLI
    • New command ./cli/db-optimize.php for database optimisation #1583
    • Check PHP requirements before running actualize_script.php (cron for refreshing feeds) #1711
  • SQL
    • Perform VACUUM on SQLite and PostgreSQL databases when optimisation is requested #918
  • API
    • Breaking change / compatibility fix (EasyRSS): Provide link to articles without HTML-encoding #1683
  • Extensions
    • Breaking change: uppercase ./Controllers/ directory #1729
    • Show existing extensions in admin panel #1708
    • New function $entry->_hash($hex) for extensions that change the content of entries #1707
  • I18n
  • Misc.
    • Customisable constants.local.php #1725
    • Basic mechanism to limit the size of the logs #1712
    • Translation validation tool #1653
    • Translation manipulation tool #1658
    • Improved documentation #1697, #1704
    • New .editorconfig file #1732

2017-10-01 FreshRSS 1.8.0

  • Compatibility
    • Minimal PHP version increased to PHP 5.3.8+ to fix sanitize bug #1604
    • Add support for PHP 7.1 in the API #1584, #1594
  • 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
  • I18n
  • Bug fixing
    • Fix API compatibility bug between PostgreSQL and EasyRSS #1603
    • Fix PostgreSQL error when adding entries with duplicated GUID #1610, #1614
    • Fix for RSS feeds containing HTML in author field #1590
    • Fix logout issue in global view due to CSRF #1591
  • Misc.
    • Travis continuous integration #1619
    • Allow longer database usernames #1597

2017-06-03 FreshRSS 1.7.0

  • 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
      • Allow double-quotes, such as author:"some name", in addition to single-quotes such as author:'some name' #1478
    • Multi-user tokens (to access RSS outputs of any user) #1390
  • Compatibility
    • Add support for PHP 7.1 #1471
    • PostgreSQL is not experimental anymore #1476
  • 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
    • New option for not closing the article when clicking outside its area #1539
    • Add shortcut in reader view to open the original page #1564
    • Download icon 💾 for other MIME types (e.g. application/*) #1522
  • 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

2017-03-11 FreshRSS 1.6.3

  • Features
    • New option disable_update (also from CLI) to hide the system to update to new FreshRSS versions #1436
    • Share with Known #1420
    • Share with GNU social #1422
  • UI
    • New theme Origine-compact #1388
    • Chrome parity with Firefox: auto-focus tab when clicking on notification #1409
  • CLI
    • New command ./cli/reconfigure.php to update an existing installation #1439
    • Many CLI improvements #1447
      • More information (number of feeds, articles, etc.) in ./cli/user-info.php
      • Better idempotency of ./cli/do-install.php and language parameter #1449
  • Bug fixing
    • Fix several CLI issues #1445
      • Fix CLI install bugs with SQLite #1443, #1448
      • Allow empty strings in CLI do-install #1435
    • Fix PostgreSQL bugs with API and feed modifications #1417
    • Do not mark as read in anonymous mode #1431
    • Fix Favicons warnings #59dfc64, #1452
  • Security
    • Sanitize feed Web site URL #1434
    • No version number for anonymous users #1404
  • Misc.
    • Relaxed requirements for username to /^[0-9a-zA-Z]|[0-9a-zA-Z_]{2,38}$/ #1423

2016-12-26 FreshRSS 1.6.2

  • Features
    • Add git compatibility in Web update system #1357
      • Requires that the initial installation is done with git
    • New option limits.cookie_duration in data/config.php to set the login cookie duration #1384
  • 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
  • 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

2016-11-02 FreshRSS 1.6.1

  • Bug fixing
    • Fix regression introduced in 1.6.0 when refreshing articles with Mark updated articles as unread #1349

2016-10-30 FreshRSS 1.6.0

  • CLI
    • New Command-Line Interface (CLI) #1095
  • API
    • Support for editing feeds and categories from client applications #1254
  • Compatibility:
    • Support for PostgreSQL #416
    • New client supporting FreshRSS on Linux: FeedReader 2.0+ #1252
  • 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 and max_posts_per_rss in user config
    • 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
  • 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
    • Prevent <a target="_blank"> attacks with window.opener #1245
    • Updated gitignore rules to keep user directories during a git clean -f -d #1307
  • Extensions
    • Allow extensions for default account in anonymous mode #1288
    • Trigger a freshrss:load-more JavaScript event to help extensions #1278
  • SQL
    • Slightly modified several SQL requests (MySQL, SQLite) to simplify support of PostgreSQL #1195
    • Increase performances by removing a superfluous category request #1316
  • I18n
    • Fix some messages during installation #1339
  • UI
    • Fix CSS line-height bug with <sup> in dates (English, Russian, Turkish) #1340
    • Disable Mark all as read before confirmation script is loaded #1342
    • Download icon 💾 for podcasts #1236
  • SimplePie
    • Fix auto-discovery of RSS feeds in Web pages served as text/xml #1264
  • Misc.
    • Removed resource-priorities attributes (defer, lazyload), deprecated by W3C #1222

2016-08-29 FreshRSS 1.5.0

  • Compatibility
    • Require at least MySQL 5.5.3+ #1153
    • Require at least PHP 5.3.3+ #1183
      • Restore compatibility with PHP 5.3.3 #1208
    • Restore compatibility with Microsoft Internet Explorer 11 / Edge #772
  • Features
    • Mark a search as read #608
    • Support for full Unicode such as emoji 💕 in MySQL with utf8mb4 #1153
      • FreshRSS will automatically migrate MySQL tables to utf8mb4 the first time it is needed.
  • Security
    • Remove Mozilla Persona login (the service closes on 2016-11-30) #1052
    • Use Referrer Policy <meta name="referrer" content="never" /> for anonymizing HTTP Referer #955
    • Implement CSRF tokens for POST security #570
  • Bug fixing
    • Fixed scroll in log view #1178
    • Fixed JavaScript bug when articles were not always marked as read #1123
    • Fixed Apache Etag issue that prevented caching #1199
    • Fixed OPML import of categories #1202
    • Fixed PubSubHubbub callback address bug on some configurations 1229
  • UI
    • Use sticky category column #1172
    • Updated to jQuery 3.1.0 and several JavaScript fixes (e.g. drag & drop) #1197
  • API
    • Add API link in FreshRSS profile settings to ease set-up #1186
  • Misc.
    • Work-around for SuperFeeder time-outs during PubSubHubbub registration #1184
    • JSHint of JavaScript code and better initialisation #1196
    • Updated credits, and images in README #1201

2016-07-23 FreshRSS 1.4.0

2016-06-12 FreshRSS 1.3.2-beta

  • Compatibility
    • Require at least PHP 5.3+ (drop PHP 5.2) #1133
  • Features
    • Support for MySQL 5.7+ (e.g. Ubuntu 16.04 LTS) #1132
    • Speed optimization for HTTP/2 #1133
    • API support for REDIRECT_* HTTP headers (fcgi) #1128
  • SimplePie
    • Support for feeds with invalid whitespace #1142
  • Bug fixing
    • Fix bug when adding feeds with passwords #1137
    • Fix validator link #1147
    • Fix Favicon small bugs #1135
  • Security
    • CSP compatibility for homepage #1120
  • I18n
  • Misc.
    • Change default feed timeout to 15 seconds #1146
    • Updated Wallabag v2 #1150

2016-03-11 FreshRSS 1.3.1-beta

  • Security
    • Added CSP Content-Security-Policy: default-src 'self'; child-src *; frame-src *; img-src * data:; media-src * #1075, #1114
    • Added X-Content-Type-Options: nosniff #1116
    • Cookie with Secure tag when used over HTTPS #1117
    • Limit API post input to 1MB #1118
  • 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
  • UI
    • Updated to jQuery 2.2.1 and changed code for auto-load on scroll #1050, #1091
  • I18n
  • 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.
    • Filters <img /> attributes srcset and sizes #1077, #1086
    • Implement PubSubHubbub unsubscribe responses #1058
    • Restored some compatibility with PHP 5.2 #1055
    • Check for extension php-xml during install #1094
    • Updated the sharing with Movim #1030

2015-11-03 FreshRSS 1.2.0 / 1.3.0-beta

  • Features
    • Share with Movim #992
    • New option to allow robots / search engines #938
  • Security
    • Invalid logins now return HTTP 403, to be easier to catch (e.g. fail2ban) #1015
  • UI
    • Remove "title" field during installation #858
    • Visual alert on categories containing feeds in error #984
  • I18n
  • Misc.
    • Support reverse proxy #975
    • Make auto-update server URL alterable #1019

2015-09-12 FreshRSS 1.1.3-beta

  • UI
    • Configuration page for global settings such as limits #958
    • Add feed ID in articles to ease styling #953
  • I18n
  • Bug fixing
    • Session cookie bug #924
    • Better error handling for PubSubHubbub #939
    • Fix tag search link from articles #970
    • Fix all queries deleted when deleting a feed or category #982

2015-07-30 FreshRSS 1.1.2-beta

  • Features
    • Support for PubSubHubbub for instant notifications from compatible Web sites. #312
    • cURL options to use a proxy for retrieving feeds. #897 #675
    • Allow anonymous users to create an account. #679
  • Security
    • cURL options to verify or not SSL/TLS certificates (now enabled by default). #897 #502
    • Support for SSL connection to MySQL. #868
    • Workaround for browsers that have disabled support for <form autocomplete="off">. #880
  • UI
    • Force UTF-8 for responses. #870
    • Increased pagination limit to 500 articles. #872
    • Improved UI for installation. #855
  • 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 a pubsubhubbub_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

2015-05-31 FreshRSS 1.1.1 (beta)

  • 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.
  • Misc.
    • Attempt to better handle encoded article titles.

2015-01-31 FreshRSS 1.0.0 / 1.1.0 (beta)

  • 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

2015-01-15 FreshRSS 0.9.4 (beta)

  • Feature
  • 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.

2014-12-12 FreshRSS 0.9.3 (beta)

  • 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

2014-10-31 FreshRSS 0.9.2 (beta)

  • 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() and Minz_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

2014-10-09 FreshRSS 0.8.1 / 0.9.1 (beta)

  • 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

2014-09-26 FreshRSS 0.8.0 / 0.9.0 (beta)

  • 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

2014-08-24 FreshRSS 0.7.4

  • 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.

2014-07-21 FreshRSS 0.7.3

  • 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

2014-06-13 FreshRSS 0.7.2

  • API compatible with Google Reader API level 2
    • FreshRSS can now be used from e.g.:
  • Basic support for audio and video podcasts
  • Searching
    • New search filters date: and pubdate: accepting ISO 8601 date intervals such as date:2013-2014 or pubdate:P1W
    • Possibility to combine search filters, e.g. date:2014-05 intitle:FreshRSS intitle:Open great reader #Internet
  • 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)

Older

See older changes (in French)