<feed xmlns='http://www.w3.org/2005/Atom'>
<title>FreshRSS (Customized)/app/Utils, branch 1.28.0</title>
<subtitle>Customized version of FreshRSS, a self-hosted RSS feed aggregator</subtitle>
<id>https://git.rdnlsmith.com/fresh-rss-custom/atom?h=1.28.0</id>
<link rel='self' href='https://git.rdnlsmith.com/fresh-rss-custom/atom?h=1.28.0'/>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/'/>
<updated>2025-12-08T22:18:33+00:00</updated>
<entry>
<title>Fix saveHTML() scrambling encoding in newer libxml2 (#8296)</title>
<updated>2025-12-08T22:18:33+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-12-08T22:18:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=ec2663812470820dc802628f9cb1b768f4f26fc6'/>
<id>urn:sha1:ec2663812470820dc802628f9cb1b768f4f26fc6</id>
<content type='text'>
fix https://github.com/FreshRSS/FreshRSS/pull/8279#issuecomment-3620674818</content>
</entry>
<entry>
<title>Web scraping support date format epoch milliseconds (#8266)</title>
<updated>2025-11-30T20:42:46+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-11-30T20:42:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=023cdf0d7a6408f670fb0ef5c60e65bd0bd409a9'/>
<id>urn:sha1:023cdf0d7a6408f670fb0ef5c60e65bd0bd409a9</id>
<content type='text'>
fix https://github.com/FreshRSS/FreshRSS/discussions/8264
Auto detect whether a `U` date format should be in seconds or milliseconds.</content>
</entry>
<entry>
<title>Fix undefined array key CURLOPT_PROXY (#8218)</title>
<updated>2025-11-16T11:30:44+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-11-16T11:30:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=9050598b08fd426aafe1a27ccea0ba445134a7ea'/>
<id>urn:sha1:9050598b08fd426aafe1a27ccea0ba445134a7ea</id>
<content type='text'>
&gt; PHP Warning:  Undefined array key 10004 in ./FreshRSS/app/Utils/httpUtil.php on line 276</content>
</entry>
<entry>
<title>Exclude local networks for domain-wide Retry-After (#8195)</title>
<updated>2025-11-13T10:46:45+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-11-13T10:46:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=947a8c015af1b93f6860fd0631299ddefe5bbd23'/>
<id>urn:sha1:947a8c015af1b93f6860fd0631299ddefe5bbd23</id>
<content type='text'>
* Exclude local networks for domain-wide Retry-After
Retry-After will be applied by URL and not by domain for local networks.
fix https://github.com/FreshRSS/FreshRSS/issues/7880

* Improved logic for detection of local domains

* Support ip6-localhost and a couple more variants

* On more: .lan

* Resolve IP address

* Add .intranet</content>
</entry>
<entry>
<title>Housekeeping lib_rss.php (#8193)</title>
<updated>2025-11-11T07:17:12+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-11-11T07:17:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=a18c35046daee15e7ac5f85db290d54541a03e3c'/>
<id>urn:sha1:a18c35046daee15e7ac5f85db290d54541a03e3c</id>
<content type='text'>
* Housekeeping lib_rss.php
`lib_rss.php` had become much too large, especially after https://github.com/FreshRSS/FreshRSS/pull/7924
Moved most functions to other places.
Mostly no change of code otherwise (see comments).

* Extension: composer run-script phpstan-third-party</content>
</entry>
<entry>
<title>Create separate `Retry-After` files for proxies (#8029)</title>
<updated>2025-11-04T11:48:31+00:00</updated>
<author>
<name>Inverle</name>
<email>inverle@proton.me</email>
</author>
<published>2025-11-04T11:48:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=7d4854a0a4f5665db599f18c34035786465639f3'/>
<id>urn:sha1:7d4854a0a4f5665db599f18c34035786465639f3</id>
<content type='text'>
* Create separate `Retry-After` files for proxies
Bad proxies are able to send a false `Retry-After` header and affect the availability of feeds (domain-wide) for other users.
This PR starts including the address of the proxy if present in filenames for `Retry-After` to mitigate the issue.

* Reduce code changes

* Sync SimplePie fork
https://github.com/FreshRSS/simplepie/pull/62

---------

Co-authored-by: Alexandre Alapetite &lt;alexandre@alapetite.fr&gt;</content>
</entry>
<entry>
<title>Include port number for HTTP Retry-After (#7875)</title>
<updated>2025-08-30T14:28:37+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-08-30T14:28:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=2b02ca59c6af1cfe087ec7e6ea9773cffd48fd50'/>
<id>urn:sha1:2b02ca59c6af1cfe087ec7e6ea9773cffd48fd50</id>
<content type='text'>
fix https://github.com/FreshRSS/FreshRSS/issues/7870 (partially)
</content>
</entry>
<entry>
<title>Implement support for HTTP 429 Too Many Requests (#7760)</title>
<updated>2025-07-31T07:17:42+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-07-31T07:17:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=7a0c423357818b19eb431775452b1357bc7fd3eb'/>
<id>urn:sha1:7a0c423357818b19eb431775452b1357bc7fd3eb</id>
<content type='text'>
* Implement support for HTTP 429 Too Many Requests
Will obey the corresponding HTTP `Retry-After` header at domain level.

* Implement 503 Service Unavailable

* Sanitize Retry-After

* Reduce default value when Retry-After is absent
And make configuration parameter

* Retry-After also for favicons</content>
</entry>
<entry>
<title>Update bcrypt.js from 2.4.4 to 3.0.2 (#7449)</title>
<updated>2025-03-25T09:19:51+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-03-25T09:19:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=d0b961131939800a119801bfce7411ad2e429e9e'/>
<id>urn:sha1:d0b961131939800a119801bfce7411ad2e429e9e</id>
<content type='text'>
https://github.com/dcodeIO/bcrypt.js/releases/tag/v3.0.0
Can be updated to the latest version with:
`curl -L https://unpkg.com/bcryptjs/umd/index.js &gt; p/scripts/vendor/bcrypt.js`</content>
</entry>
<entry>
<title>Implement JSON string concatenation with &amp; operator (#7414)</title>
<updated>2025-03-13T21:40:41+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-03-13T21:40:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=a7361a3e7cd335c8932deba88fe60e8f673c2d40'/>
<id>urn:sha1:a7361a3e7cd335c8932deba88fe60e8f673c2d40</id>
<content type='text'>
Inspired by [JSONata syntax](https://docs.jsonata.org/expressions).
fix https://github.com/FreshRSS/FreshRSS/issues/6565</content>
</entry>
</feed>
