<feed xmlns='http://www.w3.org/2005/Atom'>
<title>FreshRSS (Customized), branch custom</title>
<subtitle>Customized version of FreshRSS, a self-hosted RSS feed aggregator</subtitle>
<id>https://git.rdnlsmith.com/fresh-rss-custom/atom?h=custom</id>
<link rel='self' href='https://git.rdnlsmith.com/fresh-rss-custom/atom?h=custom'/>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/'/>
<updated>2026-02-15T21:05:38+00:00</updated>
<entry>
<title>Don’t break NetNewsWire’s footnote detection</title>
<updated>2026-02-15T21:05:38+00:00</updated>
<author>
<name>Daniel Smith</name>
<email>daniel@rdnlsmith.com</email>
</author>
<published>2026-02-08T22:11:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=97edabb3bb8026d38ba45abc11fc5f17a007dfdd'/>
<id>urn:sha1:97edabb3bb8026d38ba45abc11fc5f17a007dfdd</id>
<content type='text'>
If NetNewsWire detects that a link points to a footnote within the same
post, then tapping on that link will produce a popover displaying the
text of said footnote. Otherwise, it is treated as a regular link and
opened in the default web browser.

Detecting a footnote requires two things:

1. The link URL must consist only of a fragment (i.e. it begins with
   `#`).

2. There must exist another element (typically `&lt;li&gt;`) in the post’s
   HTML with an `id` attribute matching the fragment (that is, the text
   after `#`).

Because FreshRSS’s web frontend can display multiple articles at once,
all relative URLs (including bare fragments) are automatically converted
to absolute URLs at ingestion time, and `id` attributes are replaced
with `data-sanitized-id` attributes. These changes avoid conflicts in
the web UI, but they break NNW’s footnote detection.

Since I use FreshRSS solely as a backend service for NNW (and other
clients), it is reasonable for me to disable those two sanitization
steps in order to take full advantage of NNW’s features.

Remove `id` from the list of attributes to rename, and add it to the
list of allowed attributes (as otherwise, it would be stripped
entirely). Convert the `absolutize_url()` function into a no-op if the
relative URL provided appears to be a local fragment.
</content>
</entry>
<entry>
<title>Release 1.28.1</title>
<updated>2026-01-25T18:08:04+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2026-01-25T18:08:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=f65e6b1cf89bcc827e252dbdc806ad85a6b09f61'/>
<id>urn:sha1:f65e6b1cf89bcc827e252dbdc806ad85a6b09f61</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Changelog, credits</title>
<updated>2026-01-25T13:31:28+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2026-01-25T13:31:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=421c0df4e0606511e15445896ddb61a3d24486d1'/>
<id>urn:sha1:421c0df4e0606511e15445896ddb61a3d24486d1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix shortcut next unread article (#8466)</title>
<updated>2026-01-25T12:57:20+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2026-01-25T12:57:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=ac0bf3c1705f3bd9e13cad252c96d02daeca84df'/>
<id>urn:sha1:ac0bf3c1705f3bd9e13cad252c96d02daeca84df</id>
<content type='text'>
fix https://github.com/FreshRSS/FreshRSS/issues/8426
regression from https://github.com/FreshRSS/FreshRSS/pull/8057</content>
</entry>
<entry>
<title>Update Spanish translation (#8464)</title>
<updated>2026-01-24T23:25:05+00:00</updated>
<author>
<name>Martín González Gómez</name>
<email>github@martingonzalez.net</email>
</author>
<published>2026-01-24T23:25:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=2b53203e88c7877e2e55cd368bbfff160153fe4f'/>
<id>urn:sha1:2b53203e88c7877e2e55cd368bbfff160153fe4f</id>
<content type='text'>
* Update Spanish translation

* make fix-all

---------

Co-authored-by: Alexandre Alapetite &lt;alexandre@alapetite.fr&gt;</content>
</entry>
<entry>
<title>Update the support status of ReadYou in readme (#7729)</title>
<updated>2026-01-24T17:20:14+00:00</updated>
<author>
<name>junkfood</name>
<email>69683722+JunkFood02@users.noreply.github.com</email>
</author>
<published>2026-01-24T17:20:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=9942a40c59af78c1c85bc9025c12821799e494f9'/>
<id>urn:sha1:9942a40c59af78c1c85bc9025c12821799e494f9</id>
<content type='text'>
* Update README.md

* Update, i18n:fr

---------

Co-authored-by: Alexandre Alapetite &lt;alexandre@alapetite.fr&gt;</content>
</entry>
<entry>
<title>Message for closed registration  (#8462)</title>
<updated>2026-01-24T14:31:43+00:00</updated>
<author>
<name>rupak</name>
<email>nnew234567@gmail.com</email>
</author>
<published>2026-01-24T14:31:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=85f14f92fdb5c375f0ae4100f50a529a62b480ec'/>
<id>urn:sha1:85f14f92fdb5c375f0ae4100f50a529a62b480ec</id>
<content type='text'>
* Add closed msg field

i18n

fix

* Display based on registration type

* Save as FreshRSS_Context::systemConf()-&gt;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 &lt;alexandre@alapetite.fr&gt;</content>
</entry>
<entry>
<title>Mark Capy Reader podcast support as true (#8444)</title>
<updated>2026-01-24T14:29:13+00:00</updated>
<author>
<name>Eve Coull</name>
<email>eve@oe.tc</email>
</author>
<published>2026-01-24T14:29:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=cb3ea904904b5b170313f285bee884be3df2ff91'/>
<id>urn:sha1:cb3ea904904b5b170313f285bee884be3df2ff91</id>
<content type='text'>
* 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 &lt;alexandre@alapetite.fr&gt;</content>
</entry>
<entry>
<title>MariaDB restrict USE INDEX (#8460)</title>
<updated>2026-01-24T14:06:59+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2026-01-24T14:06:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=3097abfab6e1cb2e22e9acf9145a8394c2d19123'/>
<id>urn:sha1:3097abfab6e1cb2e22e9acf9145a8394c2d19123</id>
<content type='text'>
fix https://github.com/FreshRSS/FreshRSS/issues/8455
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8211
</content>
</entry>
<entry>
<title>Bump PHPStan (#8453)</title>
<updated>2026-01-21T20:44:37+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2026-01-21T20:44:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=bb579956cb38258b1264adaba94e53e14b2b1004'/>
<id>urn:sha1:bb579956cb38258b1264adaba94e53e14b2b1004</id>
<content type='text'>
~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
&gt; 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
&gt; 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
```</content>
</entry>
</feed>
