Commit Graph

7003 Commits

Author SHA1 Message Date
Inverle
6b5304b825 Fix slider behavior when using navigate back button (#8496)
Closes https://github.com/FreshRSS/FreshRSS/issues/8488

* Ensure leave confirmation is shown by preventing navigation using the [Navigation API](https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API)
* Prevent scroll lock by removing it on `hashchange` instead of `onclick` on the close buttons
2026-02-08 20:42:20 +01:00
Martin Riedel
d7848e9fd6 Translation of several german phrases. (#8491)
* Translate notification enable message to German

* Translate English phrases to German in admin.php

* Translate UI strings to German

Translated various UI strings from English to German.

* Update German translations in index.php

* make fix-all

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-02-05 12:28:56 +01:00
dependabot[bot]
afa7c8440f Update phpmailer/phpmailer requirement from 7.0.1 to 7.0.2 in /lib (#8483)
* Update phpmailer/phpmailer requirement from 7.0.1 to 7.0.2 in /lib

Updates the requirements on [phpmailer/phpmailer](https://github.com/PHPMailer/PHPMailer) to permit the latest version.
- [Release notes](https://github.com/PHPMailer/PHPMailer/releases)
- [Changelog](https://github.com/PHPMailer/PHPMailer/blob/master/changelog.md)
- [Commits](https://github.com/PHPMailer/PHPMailer/compare/v7.0.1...v7.0.2)

---
updated-dependencies:
- dependency-name: phpmailer/phpmailer
  dependency-version: 7.0.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update PHPMailer

* Update changelog

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-02-01 20:56:06 +01:00
Alexandre Alapetite
e1ed499d59 Changelog 2026-02-01 20:37:50 +01:00
dependabot[bot]
3b3ba25bf6 Bump the stylelint group with 3 updates (#8481)
Bumps the stylelint group with 3 updates: [stylelint](https://github.com/stylelint/stylelint), [stylelint-config-recommended](https://github.com/stylelint/stylelint-config-recommended) and [@stylistic/stylelint-plugin](https://github.com/stylelint-stylistic/stylelint-stylistic).


Updates `stylelint` from 16.26.1 to 17.1.0
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.26.1...17.1.0)

Updates `stylelint-config-recommended` from 17.0.0 to 18.0.0
- [Release notes](https://github.com/stylelint/stylelint-config-recommended/releases)
- [Changelog](https://github.com/stylelint/stylelint-config-recommended/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint-config-recommended/compare/17.0.0...18.0.0)

Updates `@stylistic/stylelint-plugin` from 4.0.1 to 5.0.1
- [Release notes](https://github.com/stylelint-stylistic/stylelint-stylistic/releases)
- [Changelog](https://github.com/stylelint-stylistic/stylelint-stylistic/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint-stylistic/stylelint-stylistic/compare/v4.0.1...v5.0.1)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-version: 17.1.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: stylelint
- dependency-name: stylelint-config-recommended
  dependency-version: 18.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: stylelint
- dependency-name: "@stylistic/stylelint-plugin"
  dependency-version: 5.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: stylelint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-01 19:56:47 +01:00
dependabot[bot]
09aec089d6 Bump ruby/setup-ruby from 1.278.0 to 1.287.0 (#8482)
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.278.0 to 1.287.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](4c24fa5ec0...8d27f39a5e)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.287.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-01 19:56:10 +01:00
Alexandre Alapetite
e447d82b27 Bump PHPStan, other dev dependencies (#8480) 2026-02-01 19:21:00 +01:00
PeterVavercak
ee7eb67f3c Implement sort order per feed (#8234)
* added local feed sorting

Addresses https://github.com/FreshRSS/FreshRSS/issues/4761

- Added number of sorted feeds and associative array for feed sorting option in Context.
- Number of sorted feeds and local sorting option by its index saved into Minz Request Parameters.
- Number of sorted feeds and local sorting options deleted when choosing another Option Of Global Sorting.
- Added option of allowing sorting by feed in configuration.
- Added variable for allowing local sorting in userConf.
- Added function to get feeds by current get in context.
- Added menu button for all individual feed sorting.
- New database options for individual feed sorting in EntryDAO.
- Considered choosing new entries based on chosen load limit.
- Local sorting parameter saved into continuation value in Index Controller.

How to test the feature manually:

1. At the bottom of Reading Configuration menu turn on individual sorting option menu 
2. Choose Sorting by feed option
3. Choose feed at next sorting menu and choose sorting option for that feed

* added feed sorting option

* added sort feeds display

* added template for sort feed name

* added title to feed sorting button

* added comments

* added local sorting option

* Added Docs

* css reset

* added getter and seter for local sort

* added getter and seter for local sort

* allowed sorting per feed

* allowed sorting per feed

* added sorting option for category

* deleted changes from NetryDAO

* add setting up sorting for category

* docs reset

* i18 reset

* updated i18 for category

* added i18 for categories

* added i18 for category

* added setting sorting for feeds and category

* removing userConf.allow-local-sort

* removing userConf.allow-local-sort

* removing white space

* added credits

* removed feeds_by_get

* removed whitespace

* changed escaping for values

* added escaping to user set values

* added in_array

* added secondary sort and order

* added secondary sort and order

* fixed readme

* removed whitespace change

* reseted i18n

* added translations

* added feed setting translations

* fixed i18n

* fixed i18n

* changes in sort order per feed

* changes in sort order per feed

* added secondary sort order

* primary sort

* changed to preferred sort order

* i18n

* Revert wrong whitespace changes

* Re-order new options

* added blank option

* fixed escaping

* fixed default sort in feed

* fixed default sort recovery

* siplyfied option

* added rand option

* Revert unrelated change

* Minor plaintext

* Whitespace and formatting fixes

* Avoid unneeded SQL requests and processing

* Improve syntax

* Improve logic

* Reuse existing translations as much as possible

* i18n

* Remove some options that make little sense

* Separators

* Fix old transation key

* Add help messages

* Progress on secondary sort

* raw name

* Pass parameters. Add TODO

* Progress

* Minor ordering

* Fix parenthesis

---------

Co-authored-by: root <root@LAPTOP-C8TCHHPN.localdomain>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-02-01 13:12:47 +01:00
Alexandre Alapetite
5beebfcd45 Initial conventions for AI agents and humans: AGENTS.md, SKILLS.md, instructions.md (#8478)
Not stable yet, but initial structure
https://agents.md
https://agentskills.io/specification
https://code.visualstudio.com/docs/copilot/customization/custom-instructions
https://code.visualstudio.com/docs/copilot/customization/agent-skills
2026-02-01 13:06:53 +01:00
Alexandre Alapetite
dae27ebd5d Fix wrong search toString in case of regex-looking string (#8479)
`author:'/u/Alice'` was missing its quotes during serialisation, transforming it to a regex.
2026-02-01 13:06:18 +01:00
X.
7f0164d8b0 Update Chinese user messages for username validation (#8474) 2026-01-30 14:45:46 +01:00
X.
9c50c5643a Translate error messages to Chinese in install.php (#8476)
* Translate error messages to Chinese in install.php

* Fix syntax error

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-01-30 14:43:39 +01:00
X.
7c5df3ed25 Translate 'Enable notification' to Chinese (#8475) 2026-01-30 13:43:00 +01:00
X.
f71bb47a37 Add xtmd to CREDITS.md (#8473)
Add myself to CREDITS.md,see [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:xtmd)
2026-01-30 13:33:00 +01:00
rupak
b59a2101b4 Add option to enable notifications (#8458)
Closes https://github.com/FreshRSS/FreshRSS/issues/7330

- Default behavior is same
- Added FreshRSS_Context::userConf()->html5_disable_notif so that, it determines weather user wants notification. (will not show any even it has permission) (i want default false so disable, so old configs get proper default values)
- Added button such that checking it makes it request permission too 
<img width="707" height="119" alt="image" src="https://github.com/user-attachments/assets/a0fdbc4d-9f15-4644-8753-f0e6c979677f" />

- test notification actually happening (how can i trigger it, do i have to wait it), this code fixes permissions.
2026-01-29 21:34:35 +01:00
rupak
edc750fe44 pubSub, if hub have same host it can be reached without being public (#8450)
Compares host of hub and baseUrl, to detect they can connect each other ofr pubSubHub

Helps https://github.com/FreshRSS/FreshRSS/issues/8442

Changes proposed in this pull request:

- if host of hub and baseUrl are same then they hub can access freshrss even in localhost

How to test the feature manually:

- Create pubsub server on localhost and connect to RSS instance on localhost.

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-01-29 10:08:08 +01:00
Tomas Odehnal
7c853cf507 Update the 'Refreshing feeds' documentation page (#8468)
* Update the 'Refreshing feeds' page
* add the 'user' parameter and clarify the 'token' parameter usage
* remove old token screenshots, add a new one from profile page
* update the authentication page screenshot
* clarify the anonymous refreshing of the feeds

* Add myself to CREDITS.md

* Update Refresh feeds docs page content

* Tweak the content headings to match the actual headings
* Fix the link to Form authentication paragraph

* PNG compress more (16 colours + OptiPNG)

* Minor typography

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-01-28 08:31:19 +01:00
Luca Olivetti
bb786f4ade add allowfullscreen to iframe (#8467)
With the "allowfullscreen" attribute it's possible to view an embedded video in full screen.
2026-01-28 08:28:23 +01:00
Alexandre Alapetite
0df3a3c51c Rewrite setcookie using new syntax (#8447)
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/2630 now that we have PHP 7.3+ (even PHP 8.1+).
* The new syntax natively supports `samesite`, and also avoids the need of re-setting all parameters.
* Use automatic path instead of own function `getCookieDir()`.

Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8446
* Sanitize lifetime of session cookies from PHP ini to avoid likely invalid/misunderstood values
2026-01-28 08:21:25 +01:00
dependabot[bot]
4aabf235e9 Bump phpunit/phpunit in the composer group across 1 directory (#8469)
Bumps the composer group with 1 update in the / directory: [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit).


Updates `phpunit/phpunit` from 10.5.60 to 10.5.62
- [Release notes](https://github.com/sebastianbergmann/phpunit/releases)
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/10.5.62/ChangeLog-10.5.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/10.5.60...10.5.62)

---
updated-dependencies:
- dependency-name: phpunit/phpunit
  dependency-version: 10.5.62
  dependency-type: direct:development
  dependency-group: composer
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-28 08:06:55 +01:00
Alexandre Alapetite
cc32b2daa5 Start 1.28.2-dev 2026-01-25 19:22:41 +01:00
Alexandre Alapetite
f65e6b1cf8 Release 1.28.1 1.28.1 2026-01-25 19:08:04 +01:00
Alexandre Alapetite
421c0df4e0 Changelog, credits 2026-01-25 14:31:28 +01:00
Alexandre Alapetite
ac0bf3c170 Fix shortcut next unread article (#8466)
fix https://github.com/FreshRSS/FreshRSS/issues/8426
regression from https://github.com/FreshRSS/FreshRSS/pull/8057
2026-01-25 13:57:20 +01:00
Martín González Gómez
2b53203e88 Update Spanish translation (#8464)
* Update Spanish translation

* make fix-all

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-01-25 00:25:05 +01:00
junkfood
9942a40c59 Update the support status of ReadYou in readme (#7729)
* Update README.md

* Update, i18n:fr

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-01-24 18:20:14 +01:00
rupak
85f14f92fd Message for closed registration (#8462)
* Add closed msg field

i18n

fix

* Display based on registration type

* Save as FreshRSS_Context::systemConf()->closed_registration_message instead

* Improve messages

* Revert unrelated changes

* make fix-all

* Minor whitespace

* Simplify logic

* Fix invalid use of empty() and sympler syntax

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-01-24 15:31:43 +01:00
Eve Coull
cb3ea90490 Mark Capy Reader podcast support as true (#8444)
* Update README.md

Capy Reader has added podcast support under their Experimental section of the General settings. As such, I'm setting it as supported in the app table, along with a link to its GitHub discussion showing how to enable it.

- Changed Capy Reader podcast support to True, with link to GitHub discussion

* Readme.fr

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-01-24 15:29:13 +01:00
Alexandre Alapetite
3097abfab6 MariaDB restrict USE INDEX (#8460)
fix https://github.com/FreshRSS/FreshRSS/issues/8455
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8211
2026-01-24 15:06:59 +01:00
Alexandre Alapetite
bb579956cb Bump PHPStan (#8453)
~22% faster analysis since 2.1.34+.
https://github.com/phpstan/phpstan/releases/tag/2.1.34

Before / after:

```console
$ rm -fr /tmp/phpstan/
$ time composer run-script phpstan
> phpstan analyse --memory-limit 512M .
Note: Using configuration file /home/alex/GitHub/FreshRSS/phpstan.dist.neon.

real    1m2.924s
user    4m54.812s
sys     0m16.494s

$ rm -fr /tmp/phpstan/
$ time composer run-script phpstan
> phpstan analyse --memory-limit 512M .
Note: Using configuration file /home/alex/GitHub/FreshRSS/phpstan.dist.neon.

real    0m49.215s
user    3m40.906s
sys     0m18.413s
```
2026-01-21 21:44:37 +01:00
Tsung-Han Yu
84604e0c64 fix validator url update (#8436)
Closes https://github.com/FreshRSS/FreshRSS/issues/8435

Changes proposed in this pull request:
- update validator links to use the same open-url handler with prefix + encoding
- ensure the validator link reflects the current #url field value before opening
- keep existing open-url behavior for other links unchanged

How to test the feature manually:
1. Open feed edit (or add feed) form.
2. Change the feed URL in the URL field.
3. Click “Check the validity of the feed” and verify it opens the validator with the updated URL.
2026-01-20 20:00:39 +01:00
Alexandre Alapetite
63379a6fc2 Fix custom session.cookie-lifetime (#8446)
fix https://github.com/FreshRSS/FreshRSS/issues/8430
Fix case when `session.cookie-lifetime` is not using the default value of 0 in PHP ini.

Co-authored-by: rioky <rioky@users.noreply.github.com>
2026-01-18 20:41:39 +01:00
Alexandre Alapetite
ff7ce7b21d Bump SimplePie (#8445)
https://github.com/simplepie/simplepie/pull/957
2026-01-18 15:37:10 +01:00
Thomas Hufschmidt
2cbb5f8db1 Update documentation in regards to CSP warnings (#8439)
* Add a reference to the check where the warning is triggered

Note:
This is the place where the admin sees the browser pointing to.
Adding this information here allows the admin to find the matching
documentation entry.

* Update Content-Security-Policy section of english ServerConfig documentation

Note:
This fixes some minor formating/typping issues and adds some clarity to
the fact that this warning is also triggered on correctly configured
hosts, simply due to the nature of how correctness of CSP rules are checked.

* Move CSP infor source-code comment into console.info

Note:
Improve visibility of why this is happening.

* Point towards static website documentation instead of git

This URL should also remain more fixed even accross new branches/releases.

Co-authored-by: Inverle <inverle@proton.me>

* Minor fixes

* Remove overwrite part

---------

Co-authored-by: Inverle <inverle@proton.me>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-01-17 22:28:56 +01:00
Alexandre Alapetite
db16450b93 Bump SimplePie (#8443)
* https://github.com/FreshRSS/simplepie/pull/68
* https://github.com/FreshRSS/simplepie/pull/69

fix https://github.com/FreshRSS/FreshRSS/issues/8441
2026-01-17 12:09:04 +01:00
Alexandre Alapetite
307b527279 Changelog 2026-01-14 23:33:00 +01:00
Alexandre Alapetite
d7656b098b Changelog 2026-01-14 23:32:23 +01:00
Alexandre Alapetite
09aa9adb31 Fix RSS and OPML access by token (#8434)
Regression from https://github.com/FreshRSS/FreshRSS/pull/8165
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8371
2026-01-14 23:10:29 +01:00
Alexandre Alapetite
7573fee4f0 Fix MySQL transliterator_transliterate fallback (#8427)
The string syntax of `strtr()` cannot handle mutibytes characters, so need to be rewritten using an array map approach.
Extend the fallback replacements to include the Windows/ISO charsets of the latin languages for which we have a translation
2026-01-10 23:38:00 +01:00
Rob Loach
a5bbd679d9 Fix space between 'By:' and the author name (#8422)
* Fix space between 'By:' and the author name

* Use a different approach than sprintf()

* Revert "Use a different approach than sprintf()"

This reverts commit 3ede55f000.

* Apply a space between By: and the author name

* Apply suggestion from @Alkarex

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-01-10 20:50:35 +01:00
Alexandre Alapetite
b0a5f063ab Fix tags ILIKE (#8425)
fix https://github.com/FreshRSS/FreshRSS/issues/8424
Regression from https://github.com/FreshRSS/FreshRSS/issues/8329
2026-01-10 19:14:26 +01:00
Alexandre Alapetite
6b46e70f5a Changelog 2026-01-08 20:04:36 +01:00
Ciro Mota
131f4f8e63 Credits pt-BR
https://github.com/FreshRSS/FreshRSS/pull/8411
2026-01-07 22:12:48 +01:00
S. Neuhaus
43d0ab23ee Add S. Neuhaus to CREDITS.md (#8412)
https://github.com/FreshRSS/FreshRSS/pull/8402
2026-01-07 13:39:19 +01:00
Ciro Mota
0a4dc87f0f feat(i18n): Added missing translations and fix others (#8411)
* feat(i18n): Added missing translations and fix others

* feat(i18n): Fix #8401 proposed

* IGNORE

* make fix-all

* feat(i18n): Fix missing TODO

* make fix-all

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-01-07 09:01:19 +01:00
Frans de Jonge
ff3d1e8009 [i18n] Add "." at the end of "You have the PDO driver for SQLite" to improve uniformity (#8409)
See <https://github.com/FreshRSS/FreshRSS/pull/8403#discussion_r2662753028>.
2026-01-06 08:17:41 +01:00
Inverle
a044120ecf Update Polish translation (#8408) 2026-01-05 22:06:47 +01:00
netsho
b8656e1df1 Document mounting own CA on FreshRSS container (#8406)
closes https://github.com/FreshRSS/FreshRSS/issues/8405

- Add documentation on how to trust own CA that issued self-signed certificate as authentik signing key
- Add example in Docker Example

How to test the feature manually:

1. Create your own CA
2. Issue a certificate
3. Use the issued certificate as a signing-key in authentik when configuring FreshRSS provider
4. Add created CA on host's CA store by running `update-ca-certificates`
5. Mount the `/etc/ssl/certs/ca-certificates.crt` file on FreshRSS container
6. Start the container
7. Navigate to FreshRSS in the browser
8. Authentik login form should be displayed and work as normal.
2026-01-05 22:06:09 +01:00
Frans de Jonge
8cac68a394 Update Dutch translation (#8403)
* Dutch translation

Fixes #8401 for Dutch, plus a few other things.

* todo

* more todo

* more todo

* pdo

* more todo

* gen.php todo

* index.php todo

* update readme
2026-01-05 22:03:52 +01:00
S. Neuhaus
66a3272cfe Fix german translation (#8402)
* fix german translation issues

* Update translation for 'unread' in German

* Update translation for 'unread' in German

* add TODO items in German translation

* make fix-all

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-01-05 22:02:09 +01:00