<feed xmlns='http://www.w3.org/2005/Atom'>
<title>FreshRSS (Customized)/tests/app, 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-24T00:19:06+00:00</updated>
<entry>
<title>Fix serialisation of dates in searches (#8341)</title>
<updated>2025-12-24T00:19:06+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-12-24T00:19:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=00c61cf34c3f9a59b4dc16a4accd7cf85945a5a6'/>
<id>urn:sha1:00c61cf34c3f9a59b4dc16a4accd7cf85945a5a6</id>
<content type='text'>
Dates should not be expanded/resolved in string serialisations of search expressions, as it otherwise break relative user queries such as `P30D`.
Fix of https://github.com/FreshRSS/FreshRSS/pull/8293
</content>
</entry>
<entry>
<title>Fix parsing of literal "or" in regex (#8338)</title>
<updated>2025-12-23T10:58:51+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-12-23T10:58:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=6d57a9de47be4bb80a2121b6c4b8ebf278b93d70'/>
<id>urn:sha1:6d57a9de47be4bb80a2121b6c4b8ebf278b93d70</id>
<content type='text'>
fix https://github.com/FreshRSS/FreshRSS/issues/7879
</content>
</entry>
<entry>
<title>Use native PHP #[Deprecated] (#8325)</title>
<updated>2025-12-17T09:11:18+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-12-17T09:11:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=00cd5df294c875ea1e00ab2f645a338a6bd92c8e'/>
<id>urn:sha1:00cd5df294c875ea1e00ab2f645a338a6bd92c8e</id>
<content type='text'>
https://php.watch/versions/8.4/Deprecated
And enfore it with PHPUnit + PHPStan.
Especially useful for extensions.</content>
</entry>
<entry>
<title>Rework encoding of search filters (#8324)</title>
<updated>2025-12-17T09:07:52+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-12-17T09:07:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=4bd503591469f47e710f1afbf0b5883f7770065d'/>
<id>urn:sha1:4bd503591469f47e710f1afbf0b5883f7770065d</id>
<content type='text'>
Rework:
* https://github.com/FreshRSS/FreshRSS/pull/8222

now that we have:
* https://github.com/FreshRSS/FreshRSS/pull/8293

Follow-up of:
* https://github.com/FreshRSS/FreshRSS/pull/8311

* More simplification

* Deprecate getRawInput
</content>
</entry>
<entry>
<title>Fix search encoding and quoting (#8311)</title>
<updated>2025-12-13T10:31:34+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-12-13T10:31:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=a8a544a2a205b42d2009b5c52d8939e8bc36263c'/>
<id>urn:sha1:a8a544a2a205b42d2009b5c52d8939e8bc36263c</id>
<content type='text'>
Revised the encoding approach for searches: the HTML encoding is done just before its use for DB search.
Fix also some cases with wrong quoting.
Fix https://github.com/FreshRSS/FreshRSS/pull/8306#issuecomment-3643865439
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8293
</content>
</entry>
<entry>
<title>Add functions to modify a search expression (#8293)</title>
<updated>2025-12-10T21:41:45+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-12-10T21:41:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=394411677ea9b3e5bb520c39db6e39f751c35e28'/>
<id>urn:sha1:394411677ea9b3e5bb520c39db6e39f751c35e28</id>
<content type='text'>
* Allows easier modifications of the search expression.
* Add proper `__toString()` instead of just returning the raw input string. Allows in particular showing the result of the actual parsing of the raw input string in the UI.

Needed for https://github.com/FreshRSS/FreshRSS/pull/8294
</content>
</entry>
<entry>
<title>PostgreSQL: compatibility with PCRE word boundary (#8141)</title>
<updated>2025-10-22T19:21:17+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-10-22T19:21:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=1282d3a2709064cb847b8757409a7153449faa9d'/>
<id>urn:sha1:1282d3a2709064cb847b8757409a7153449faa9d</id>
<content type='text'>
Allow the use of regex `\b` for word boundary (and `\B` for the opposite) even when using PostgreSQL.
Follow up of:
* https://github.com/FreshRSS/FreshRSS/pull/6706

For instance, `intitle:/\bnew\B/` will find *newest* but not *new* nor *renewal*.

Useful in particular to minimise the differences between PHP and database in:
* https://github.com/FreshRSS/FreshRSS/pull/7959
</content>
</entry>
<entry>
<title>Filter on last user modified (#8093)</title>
<updated>2025-10-14T22:12:19+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-10-14T22:12:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=7e72033859f60f529d4d985da1e9cac0a691b2dc'/>
<id>urn:sha1:7e72033859f60f529d4d985da1e9cac0a691b2dc</id>
<content type='text'>
Example: `userdate:PT1H` to select only articles modified by user during the last hour
Fix https://github.com/FreshRSS/FreshRSS/issues/4280#issuecomment-3393078024

Useful for instance to bulk mark as unread recently marked articles by error:
1. Click on the toggle button to show the read articles (making sure the toggle for the unread articles is off)
2. Sort by *User modified 9→1*
3. Filter by *user modified date*, for instance to the last 3 hours by typing `userdate:PT3H`
4. Click in the drop-down menu *Mark selection as unread*

P.S.: I have added at the same time a bunch of unit tests for date-related logic
</content>
</entry>
<entry>
<title>Implement search form (#8103)</title>
<updated>2025-10-14T22:08:40+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-10-14T22:08:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=e070c3ed2bec4ea4a6c2a216a5c836d1e02ab381'/>
<id>urn:sha1:e070c3ed2bec4ea4a6c2a216a5c836d1e02ab381</id>
<content type='text'>
* Add UI for advanced search
To help users with the seach operators.
Obviously not as powerful as a manually-written search query.
Lack in particular negation and logical *and* for now, but I might try to do something about it.

&lt;img width="939" height="1438" alt="image" src="https://github.com/user-attachments/assets/0bcad39b-eff3-4f44-876b-a2552af2af00" /&gt;

* Consistency: allow multiple user queries like S:1,2

* Fix user query and add tests
</content>
</entry>
<entry>
<title>Upgrade to PHP_CodeSniffer 4 (#7993)</title>
<updated>2025-09-22T20:02:59+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-09-22T20:02:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=833007f5860deae232bacf321d268124123d6749'/>
<id>urn:sha1:833007f5860deae232bacf321d268124123d6749</id>
<content type='text'>
https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki/Version-4.0-User-Upgrade-Guide
A couple of rules have changed name. Exclusion paths have slightly changed behaviour.
Main change is that it was unhappy with our i18n header comments, so minor edit there, since that rule kind of makes sense the rest of the time
</content>
</entry>
</feed>
