Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FreshRSS 1.15 #2599

Merged
merged 100 commits into from
Oct 31, 2019
Merged

FreshRSS 1.15 #2599

merged 100 commits into from
Oct 31, 2019

Conversation

Alkarex
Copy link
Member

@Alkarex Alkarex commented Oct 26, 2019

Hi fellow FreshRSS users!
After 3 months of quite intense development, the next version 1.15 of FreshRSS is finally ready for testing before release.

Several big new features this time, and even more under the hood.

In particular, it is now possible to export/import any FreshRSS account to/from a SQLite file. This also allows you to migrate database (e.g. from MySQL to PostgreSQL) easily, and do better backups or migration from one server to another. Please try it and report whether that works well for you.

The archiving strategy has been reworked and now offers the possibility to control a maximum number of articles per feed. Archiving settings (which are always applied at feed level) can be define for each feed, or by category, or globally. A few additional rules are hidden (for instance always keep the articles seen at the last feed refresh). Dates are to be understood as when an article has last been seen in the original RSS feed, not the publication date. Give it a shot!

Our iOS users have one more client to choose from (the first implementing the Google Reader API, which is more powerful than the clients using the Fever API), and a lot more, see below.

Thanks to the 19 contributors who made this new version :-)

Full changelog:

  • 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 #2492

Alkarex and others added 30 commits July 25, 2019 16:55
The PHP 5.4 and 5.5 archives recently started failing, also see https://travis-ci.community/t/php-5-4-and-5-5-archives-missing/3723

Setting them to use the Trusty images restores their functionality.
* Update .htaccess

* Update htaccess for apache2.4

* Update htaccess for apache2.4

* Update htaccess for apache2.4
The access was checked several times in some actions and had incoherent
behaviours. Also, the `firstAction` condition was a bit tricky to
understand.

This PR duplicates conditions across all the controller actions and
remove the `firstAction` which becomes useless.
The `_useLayout` function is marked as deprecated, replaced by a more
powerful `_layout` function.
This feature is particularly useful to display authors underneath scientific articles.
Hooks allow to:

- add items in menus
- perform new actions at the end of FreshRSS initialization
* [CI] Run stylelint

Perform some basic CSS sanity checking and style enforcement.

I removed vendor prefixed linear-gradient and transform because those are from the IE9 era. With IE11 as a minimum and soon obsolete requirement it doesn't make much sense anymore.

* Remove as-link override

* Don't require newline after comment

* Also apply those newline rules to SCSS

* refine opening/closing braces, allow for single-line
* Add Minz_View::_path method (replace change_view)

The `_path` method is more powerful since it allows to choose the file
extension. It is also Minz_Request-agnostic, which is useful to reuse
the Minz_View class in other places.

`change_view` is now deprecated and a warning is logged if we use it.

* Provide a Minz_Mailer to send emails

It uses PHPMailer under the hood and only supports PHP >= 5.5
* Don't manually pull the base image

* Remove sudo before each docker

cause the user is usually added to the docker group

If not you can read it up here:
https://docs.docker.com/install/linux/linux-postinstall/

* Simplify cd
* Require PHP 5.5+

#2469 (comment)
I think it would be reasonable to require PHP 5.5+ for the core of
FreshRSS after all.

As Frenzie said, WordPress currently requires PHP 5.6.20+, and it is the
most popular PHP application.

We would loose about 20% of the PHP servers according to
https://w3techs.com/technologies/details/pl-php/5/all but I expect this
number to drop fast after the release of CentOS 8 (CentOS accounts for
17% of Linux servers
https://w3techs.com/technologies/details/os-linux/all/all ).

Distributions:
* no impact on Ubuntu, Fedora, Alpine, OpenWRT, FreeBSD, OpenSuze,
Mageia, as all active versions have PHP > 7
* no impact on OpenSuze, Synology, as all active versions have PHP > 5.5
* we drop Debian 8 Jessie (-2020) - we keep supporting Debian 9 Stretch
(2017-06) - current is Debian 10 Buster
* we drop Red Hat 7 (-2024) - we keep supporting RHEL 8 (2019-05)
* we drop CentOS 7 (-2024) - we will support CentOS 8 (to be released
soonish)

When dropping older versions, I can better like when it is for a good
reason, and there is actually one with PHP 5.5, namely generators
(yield) https://php.net/language.generators.overview which I consider
using.

* Version note for JSON.php

* hex2bin

* Update .travis.yml

Co-Authored-By: Frans de Jonge <fransdejonge@gmail.com>
Follow-up to <#2500>. The languages aren't translated, so they don't need to be there.
Add a couple of new strings, minor grammar and style improvements, and ignore everything that should be ignored for 100 %.
* Prevent window opener vulnerability with space shortcut

This change fixes a vulnerability introduced by `window.open()` on untrusted sources. It reproduces the effect of `rel="noreferrer"` with JS.

Cross browser solution from: https://stackoverflow.com/a/40593743

## Reproduction

> tested with Firefox 68

  1. Add this RSS feed
  2. Open the 2nd link "À propos de la faille de sécurité liée à target="_blank" **using the space key shortcut**.
  3. Click on the first of three links "http://bookmarks.ecyseo.net"

Current behaviour: the FreshRSS tab changes.
Expected behaviour: no effect on FreshRSS

* Test for popup blockers
* New environment variable to control development mode

Suggestion of new enviromnent variable, as discussed
#2492 (comment)

* Update Docker/README.md

Co-Authored-By: Frans de Jonge <fransdejonge@gmail.com>

* Update Docker/README.md

Co-Authored-By: Frans de Jonge <fransdejonge@gmail.com>

* Update Docker/README.md

Co-Authored-By: Frans de Jonge <fransdejonge@gmail.com>

* Declare ENV in Dockerfile

Tested
Co-Authored-By: Frans de Jonge <fransdejonge@gmail.com>

Co-Authored-By: Alexandre Alapetite <alexandre@alapetite.fr>
* Add an email field to the profile page

I reuse the `mail_login` from the configuration. I'm not sure if it's
useful today (I would say it was used when Persona login was available).

A good improvement would be to rename `mail_login` into `email` so it
would be more intuitive to use.

* Add boolean to the conf to force email validation

This commit only adds a configuration item.

* Add email during registration if email must be validated

* Set email token to validate when email changes

* Block access to FreshRSS if email is not validated

* Send email when address is changed

* Allow to resend the validation email

* Allow the user to change its email while blocked

* Document the email validation feature

* fixup! Allow the user to change its email while blocked

* tec: Autoload PHPMailer lib

* Validate email address format

* Add feedback on validation email resend action

* Allow to logout when user is blocked

* fix: Change default email "from"

* Reorganize i18n keys

* Complete all the locales with default english

* Hide sidebar (profile page) if email is not validated

* Check email requirements on registration

* Allow admin to specify email when creating users

* Don't check email format if value is empty

* Remove trailing comma in userController

Co-Authored-By: Alexandre Alapetite <alexandre@alapetite.fr>

* Set PHPMailer validator to html5 before sending email

* fixup! Remove trailing comma in userController
* fix: Make sure $disable_aside is initialized

There was a warning for an uninitialized variable, hidden in production
but visible in development mode.

* fix: Allow to delete account when email isn't validated
@Alkarex
Copy link
Member Author

Alkarex commented Oct 26, 2019

@Frenzie Please open a new issue.
P.S. Works for me

Quenty31 and others added 4 commits October 26, 2019 20:00
* Update sub.php

* Update gen.php

* Update conf.php
From version 63 and onwards, Firefox has removed the ability to add subscription
services. This is a warning for deprecation on the subscription tools page.

See #2100
Frenzie added a commit to Frenzie/FreshRSS that referenced this pull request Oct 27, 2019
Alkarex and others added 4 commits October 27, 2019 20:52
* [fix] Flat unread CSS style

Same as #2611.

* [fix] Origine-Compact unread CSS style

Same as #2611.

* [fix] Swage unread CSS style

Same as #2611.
Frenzie
Frenzie previously approved these changes Oct 28, 2019
Copy link
Member

@Frenzie Frenzie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nothing jumps out anymore, all seems well.

Website seems dead. Changed by repository URL.

See #2613
Quenty31 and others added 3 commits October 30, 2019 20:08
I had a bug when some articles in a category were unread. Sometimes,
filtering the category displayed all the articles, even with the "Adjust
showing" option.

A reasonably good guess was to look the last commits that impacted the
categories and, indeed, it was introduced by the new category sorting
system.

The sort function (`usort`) doesn't keep the index association, which is
important here. I must admit I don't understand exactly why (I didn't
search), but the keys are probably used somewhere. Another fix would be
to not rely on these keys anymore.

The bug was introduced in 042fcd5

- Ref PR: #2592
- Ref usort: https://www.php.net/manual/en/function.usort.php
- Ref uasort: https://www.php.net/manual/en/function.uasort.php
@Alkarex Alkarex merged commit 3aa66f3 into master Oct 31, 2019
@gpion
Copy link

gpion commented Nov 1, 2019

Hello, will (and if yes when) this release will be available for update via GUI?
Blast! No update to apply

@marienfressinaud
Copy link
Member

It will be available tomorrow (or today if I have time but I can't promise)

@ParoTheParrot
Copy link
Contributor

Still no update available :-(

@marienfressinaud
Copy link
Member

marienfressinaud commented Nov 4, 2019

Yep sorry, I didn't did the change because we are waiting for a version 1.15.1 https://github.com/FreshRSS/FreshRSS/milestone/40

Edit: I'll do the review for the opened PR but I have some more urgent tasks for now

This was referenced Nov 4, 2019
javerous pushed a commit to javerous/FreshRSS that referenced this pull request Jan 20, 2020
javerous pushed a commit to javerous/FreshRSS that referenced this pull request Jan 20, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet