diff --git a/.editorconfig b/.editorconfig
index 48e59bb40..048045b1a 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,4 +1,4 @@
-# http://EditorConfig.org
+# https://editorconfig.org/
[*]
charset = utf-8
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index a974f27d4..9d59e490d 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -17,7 +17,7 @@ jobs:
tests:
name: tests
- # https://github.com/actions/virtual-environments
+ # https://github.com/actions/runner-images
runs-on: ubuntu-26.04
steps:
@@ -105,7 +105,6 @@ jobs:
run: GOBIN=${PWD}/bin/ go install mvdan.cc/sh/v3/cmd/shfmt@v3.8.0
- name: Check shell script syntax
- # shellcheck is pre-installed https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2204-Readme.md
run: ./tests/shellchecks.sh
- name: Install hadolint
diff --git a/.lycheeignore b/.lycheeignore
index 93ff6ee20..d913bed6d 100644
--- a/.lycheeignore
+++ b/.lycheeignore
@@ -7,7 +7,6 @@
# URLs used in source code / tests
^http://www\.blogger\.com/feeds/1/posts
^https://www\.blogger\.com/feeds/1/posts
-^http://a\.bc/
^https://web\.archive\.org/save/~LINK~
^https://www\.facebook\.com/sharer\.php\?u=~LINK~&t=~TITLE~
^https://archive\.ph/submit/\?url=~LINK~
@@ -17,6 +16,10 @@
^https://www\.journalduhacker\.net/stories/new\?url=~LINK~&title=~TITLE~
^https://www\.linkedin\.com/shareArticle\?url=~LINK~&title=~TITLE~&source=FreshRSS
^https://www\.xing\.com/spi/shares/new\?url=~LINK
+^http://a\.bc/
+^http://rss-bridge\.lan/
+^https://198\.51\.100\.7/
+^https://198\.51\.100\.7:8443/
# URLs that likely exist, but will be published in the future
^https://github\.com/FreshRSS/FreshRSS/security/advisories/.*
@@ -42,13 +45,18 @@
^https://alternativeto\.net/
^https://www\.patreon\.com/
^https://www\.reddit\.com/
+^https://fiat-tux\.fr/
# Works normally in the browser, but not in lychee
^https://www\.vsta\.org/andy/
^https://gnusocial\.rocks/
^https://friendi\.ca/
+# TODO: Temporarily broken
+^https://install-app\.yunohost\.org/\?app=freshrss
+
# TODO: Dead?
^https://template\.run\.claw\.cloud/\?openapp=system-fastdeploy%3FtemplateName%3Dfreshrss
^https://amaury\.carrade\.eu/
^https://www\.pimsnel\.com/
+^https://fsf\.org/
diff --git a/CREDITS.md b/CREDITS.md
index a9b9187ca..e6f6c2a5b 100644
--- a/CREDITS.md
+++ b/CREDITS.md
@@ -19,7 +19,7 @@ People are sorted by name so please keep this order.
* [Aidi Stan](https://github.com/aidistan): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:aidistan), [Web](https://aidistan.site/)
* [akine](https://github.com/akine): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:akine)
* [ale-rt](https://github.com/ale-rt): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:ale-rt)
-* [Alejandro Borrego](https://github.com/abp002): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:abp002), [Web](https://abp002.github.io/)
+* [Alejandro Borrego](https://github.com/abp002): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:abp002), [Web](https://alejandroborrego.dev/)
* [Alexander Steinhöfer](https://github.com/lx-s): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:lx-s), [Web](https://lx-s.de/)
* [Alexandre Alapetite](https://github.com/Alkarex): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:Alkarex), [Web](https://alexandre.alapetite.fr/)
* [Alexis Degrugillier](https://github.com/aledeg): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:aledeg)
@@ -44,7 +44,7 @@ People are sorted by name so please keep this order.
* [Axel Leroy](https://github.com/axeleroy): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:axeleroy), [Web](https://axel.leroy.sh/)
* [azlux](https://github.com/azlux): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:azlux), [Web](https://azlux.fr/)
* [Balázs Keresztury](https://github.com/belidzs/): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:belidzs), [Web](https://www.keresztury.com/)
-* [Bartłomiej Dmitruk](https://github.com/hackerman70000): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:hackerman70000), [Web](https://www.bartek-dmitruk.com/)
+* [Bartłomiej Dmitruk](https://github.com/hackerman70000): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:hackerman70000), [Web](https://www.bartekdmitruk.com/)
* [Bartosz Taudul](https://github.com/wolfpld): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:wolfpld), [Web](https://wolf.nereid.pl/)
* [beerisgood](https://github.com/beerisgood): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:beerisgood)
* [Ben Passmore](https://github.com/passbe): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:passbe), [Web](https://passbe.com/)
@@ -174,7 +174,7 @@ People are sorted by name so please keep this order.
* [Jules Bertholet](https://github.com/Jules-Bertholet): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:Jules-Bertholet)
* [Julien Herr](https://github.com/juherr): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:juherr), [Web](https://juherr.dev/)
* [Julien Reichardt](https://github.com/j8r): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:j8r)
-* [Julien-Pierre Avérous](https://github.com/javerous): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:javerous), [Web](https://www.sourcemac.com/)
+* [Julien-Pierre Avérous](https://github.com/javerous): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:javerous), [Web](https://www.sourcemac.fr/)
* [junkfood](https://github.com/JunkFood02): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:JunkFood02)
* [Justin Tracey](https://github.com/jtracey): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:jtracey), [Web](https://unsuspicious.click)
* [Kachelkaiser](https://github.com/Kachelkaiser): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:Kachelkaiser)
@@ -223,13 +223,13 @@ People are sorted by name so please keep this order.
* [matthew-neavling](https://github.com/matthew-neavling): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:matthew-neavling)
* [Maurice Schleußinger](https://github.com/maurice-schleussinger): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:maurice-schleussinger)
* [Max Oberrauch](https://github.com/Juice-de-Orange): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:Juice-de-Orange)
-* [May Meow](https://github.com/MayMeow): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:MayMeow), [Web](https://maymeow.com)
+* [May Meow](https://github.com/MayMeow): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:MayMeow), [Web](https://www.maymeow.com)
* [McFev](https://github.com/McFev): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:McFev)
* [Mejans](https://github.com/Mejans): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:Mejans)
* [Melvyn Laïly](https://github.com/yaurthek): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:yaurthek), [Web](https://x2a.yt/)
* [Michael Meier](https://github.com/mmeier86): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:mmeier86)
* [Michael Thomas](https://github.com/nanos): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:nanos), [Web](https://michael.thms.uk)
-* [Michael Wagner](https://github.com/michi-onl): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:michi-onl), [Web](https://about.michi.onl/)
+* [Michael Wagner](https://github.com/michi-onl): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:michi-onl), [Web](https://michi.onl/)
* [Miguel Sánchez](https://github.com/msdlr): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:msdlr)
* [Miika Launiainen](https://gitlab.com/miicat): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:miicat), [Web](https://miicat.eu/)
* [Mike Vanbuskirk](https://github.com/codevbus): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:codevbus) [Web](https://mikevanbuskirk.io/)
@@ -300,7 +300,7 @@ People are sorted by name so please keep this order.
* [Raineer](https://github.com/Raineer): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:Raineer)
* [Ramazan Sancar](https://github.com/ramazansancar): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:ramazansancar), [Web](https://www.ramazansancar.com.tr/)
* [Ramón Cutanda](https://github.com/rcutanda): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:rcutanda)
-* [Rasmus Larsen](https://github.com/rlrs): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:rlrs), [Web](https://rlrs.github.io/)
+* [Rasmus Larsen](https://github.com/rlrs): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:rlrs), [Web](https://rlrs.dk/)
* [raspo](https://github.com/raspo): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:raspo), [Web](https://raspo.dev/)
* [rdmitr](https://github.com/rdmitr): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:rdmitr)
* [Rebecca Scott](https://github.com/becdetat): [contributions](https://github.com/FreshRSS/FreshRSS/pulls?q=is:pr+author:becdetat), [Web](https://becdetat.com)
diff --git a/Docker/README.md b/Docker/README.md
index b5a2350c8..3e89bc273 100644
--- a/Docker/README.md
+++ b/Docker/README.md
@@ -446,7 +446,7 @@ docker compose down --remove-orphans --volumes
## Run in production
For production, it is a good idea to use a reverse proxy on your host server, providing HTTPS.
-A dedicated solution such as [Træfik](https://traefik.io/traefik/) is recommended
+A dedicated solution such as [Træfik](https://traefik.io/traefik) is recommended
(or see [alternative options below](#alternative-reverse-proxy-configurations)).
You must first chose a domain (DNS) or sub-domain, e.g. `freshrss.example.net`, and set it in your `.env` file:
diff --git a/README.fr.md b/README.fr.md
index 865b35ce5..956322e0c 100644
--- a/README.fr.md
+++ b/README.fr.md
@@ -64,7 +64,7 @@ FreshRSS n’est fourni avec aucune garantie.
* Fonctionne même sur un Raspberry Pi 1 avec des temps de réponse < 1s (testé sur 150 flux, 22k articles)
* Serveur Web Apache2.4+ (recommandé), ou nginx, lighttpd (non testé sur les autres)
* PHP 8.1+
- * Extensions requises : [cURL](https://www.php.net/curl), [DOM](https://www.php.net/dom), [JSON](https://www.php.net/json), [XML](https://www.php.net/xml), [session](https://www.php.net/session), [ctype](https://www.php.net/ctype)
+ * Extensions requises : [cURL](https://www.php.net/curl), [DOM](https://www.php.net/dom), [JSON](https://www.php.net/json), [XML](https://www.php.net/xml), [session](https://www.php.net/features.sessions), [ctype](https://www.php.net/ctype)
* Extensions recommandées : [PDO_SQLite](https://www.php.net/pdo-sqlite) (pour l’export/import), [GMP](https://www.php.net/gmp) (pour accès API sur plateformes < 64 bits), [IDN](https://www.php.net/intl.idn) (pour les noms de domaines internationalisés), [mbstring](https://www.php.net/mbstring) (pour le texte Unicode), [iconv](https://www.php.net/iconv) (pour conversion d’encodages), [ZIP](https://www.php.net/zip) (pour import/export), [zlib](https://www.php.net/zlib) (pour les flux compressés)
* Extension pour base de données : [PDO_PGSQL](https://www.php.net/pdo-pgsql) ou [PDO_SQLite](https://www.php.net/pdo-sqlite) ou [PDO_MySQL](https://www.php.net/pdo-mysql)
* PostgreSQL 10+ ou SQLite ou MariaDB 10.6+ ou MySQL 8.0+
diff --git a/README.md b/README.md
index 50540e70e..f370ed4eb 100644
--- a/README.md
+++ b/README.md
@@ -87,7 +87,7 @@ and the [list of releases](https://github.com/FreshRSS/FreshRSS/releases).
| | | |
|-|-|-|
| [
](./Docker/) | [
](https://install-app.yunohost.org/?app=freshrss) | [
](https://elest.io/open-source/freshrss) |
-| [
](https://cloudron.io/button.html?app=org.freshrss.cloudronapp) | [
](https://www.pikapods.com/pods?run=freshrss) | [
](https://zeabur.com/templates/MD4TRW) |
+| [
](https://www.cloudron.io/button.html?app=org.freshrss.cloudronapp) | [
](https://www.pikapods.com/pods?run=freshrss) | [
](https://zeabur.com/templates/MD4TRW) |
| [
](https://template.run.claw.cloud/?openapp=system-fastdeploy%3FtemplateName%3Dfreshrss) | [
](https://www.hostinger.com/docker-hosting?compose_url=https://github.com/FreshRSS/FreshRSS/blob/edge/Docker/freshrss/docker-compose.yml) | |
For more cloud hosting options, see the [list of cloud providers](https://freshrss.org/cloud-providers.html) or [Chatons](https://www.chatons.org/search/by-service?field_software_target_id=269) (a directory of ethical hosting providers).
@@ -199,7 +199,7 @@ and [Fever API](https://freshrss.github.io/FreshRSS/en/developers/06_Fever_API.h
| [lire](https://lireapp.com/) | iOS, macOS | – | ✓✓ | GReader | ? | ? | ? | ? | ? | ? | ? | ? |
| [Unread](https://www.goldenhillsoftware.com/unread/) | iOS | – | ✓✓ | Fever | ✓ | ? | ? | ? | ✓ | – | – | – |
| [Fiery Feeds](https://voidstern.net/fiery-feeds) | iOS | – | ✓✓ | Fever | ? | ? | ? | ? | ? | – | – | – |
-| [Netnewswire](https://ranchero.com/netnewswire/) | iOS, macOS | [✓](https://github.com/Ranchero-Software/NetNewsWire) | Work in progress | GReader | ✓ | ? | ? | ? | ✓ | – | – | ✓ |
+| [Netnewswire](https://netnewswire.com/) | iOS, macOS | [✓](https://github.com/Ranchero-Software/NetNewsWire) | Work in progress | GReader | ✓ | ? | ? | ? | ✓ | – | – | ✓ |
# Included libraries
diff --git a/docs/en/admins/08_FeedUpdates.md b/docs/en/admins/08_FeedUpdates.md
index d59ce48f9..2e5a01e6d 100644
--- a/docs/en/admins/08_FeedUpdates.md
+++ b/docs/en/admins/08_FeedUpdates.md
@@ -24,7 +24,7 @@ docker run ... \
## Cron as a trigger
-You’ll need to check the Cron documentation for your specific distribution ([Debian/Ubuntu](https://help.ubuntu.com/community/CronHowto), [Red Hat/Fedora/CentOS](https://fedoraproject.org/wiki/Administration_Guide_Draft/Cron), [Slackware](https://docs.slackware.com/slackbook:process_control#cron), [Gentoo](https://wiki.gentoo.org/wiki/Cron), [Arch Linux](https://wiki.archlinux.org/title/Cron) …) to make sure you set the Cron job correctly.
+You’ll need to check the Cron documentation for your specific distribution ([Debian/Ubuntu](https://ubuntu.com/server/docs/how-to/backups/back-up-using-shell-scripts/#run-with-cron), [Red Hat/Fedora/CentOS](https://fedoraproject.org/wiki/Administration_Guide_Draft/Cron), [Slackware](https://docs.slackware.com/slackbook:process_control#cron), [Gentoo](https://wiki.gentoo.org/wiki/Cron), [Arch Linux](https://wiki.archlinux.org/title/Cron) …) to make sure you set the Cron job correctly.
It’s advisable that you run the Cron job as your Web server user (often `www-data`).
diff --git a/docs/en/admins/18_Pocket-ID.md b/docs/en/admins/18_Pocket-ID.md
index f5019c911..b9652affd 100644
--- a/docs/en/admins/18_Pocket-ID.md
+++ b/docs/en/admins/18_Pocket-ID.md
@@ -3,7 +3,7 @@
**[Pocket ID](https://github.com/pocket-id/pocket-id)** is a simple OIDC provider that allows users to authenticate with their passkeys to your services.
(See [FreshRSS’ OpenID Connect documentation](16_OpenID-Connect.md)).
-You can find more information in the [Pocket ID documentation](https://pocket-id.org/docs).
+You can find more information in the [Pocket ID documentation](https://pocket-id.org/docs/introduction).
## 1. Create OAuth2/OpenID Provider
diff --git a/docs/en/users/08_sharing_services.md b/docs/en/users/08_sharing_services.md
index 330d6f3b0..445ae6753 100644
--- a/docs/en/users/08_sharing_services.md
+++ b/docs/en/users/08_sharing_services.md
@@ -29,7 +29,7 @@ FreshRSS has the option to share links with a bunch of services.
| Nextcloud Bookmarks | Selfhosted bookmark app for Nextcloud | [Website](https://apps.nextcloud.com/apps/bookmarks) | |
| Omnivore | A complete, open source read-it-later solution for people who love to read. | [Website](https://omnivore.app/) | |
| Pinboard | Social Bookmarking for Introverts | [Website](https://pinboard.in/) | |
-| Pinterest | Is an image sharing and social media service designed to enable saving and discovery of information| [Website](https://pinterest.com/), [Wikipedia](https://en.wikipedia.org/wiki/Pinterest) | |
+| Pinterest | Is an image sharing and social media service designed to enable saving and discovery of information| [Website](https://www.pinterest.com/), [Wikipedia](https://en.wikipedia.org/wiki/Pinterest) | |
| Raindrop.io | All-in-one bookmark manager | [Website](https://raindrop.io/)| |
| Reddit | A network of communities where people can dive into their interests, hobbies and passions| [Website](https://www.reddit.com/), [Wikipedia](https://en.wikipedia.org/wiki/Reddit)| |
| Shaarli | Self-hosted minimalist bookmark manager and link sharing service | [Website](https://shaarli.readthedocs.io/) | |