<feed xmlns='http://www.w3.org/2005/Atom'>
<title>FreshRSS (Customized)/app/views/user, branch 1.28.1</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.1</id>
<link rel='self' href='https://git.rdnlsmith.com/fresh-rss-custom/atom?h=1.28.1'/>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/'/>
<updated>2025-12-08T19:32:28+00:00</updated>
<entry>
<title>Minor refactor `&lt;img class="icon"&gt;` -&gt; `_i('...')` (#8297)</title>
<updated>2025-12-08T19:32:28+00:00</updated>
<author>
<name>Inverle</name>
<email>inverle@proton.me</email>
</author>
<published>2025-12-08T19:32:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=fd9e2843f10058147d26d510471e5420ac8101a1'/>
<id>urn:sha1:fd9e2843f10058147d26d510471e5420ac8101a1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Keep scroll state of page when closing the slider (#8295)</title>
<updated>2025-12-07T23:29:43+00:00</updated>
<author>
<name>Inverle</name>
<email>inverle@proton.me</email>
</author>
<published>2025-12-07T23:29:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=9fb3a02b96d5278a8a28edc0831f9c665fbace85'/>
<id>urn:sha1:9fb3a02b96d5278a8a28edc0831f9c665fbace85</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Scaling of user statistics (#8277)</title>
<updated>2025-12-04T18:11:31+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-12-04T18:11:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=78e40c6fe3afe7f815ef9d32646610e2d5436ba3'/>
<id>urn:sha1:78e40c6fe3afe7f815ef9d32646610e2d5436ba3</id>
<content type='text'>
Fix https://github.com/FreshRSS/FreshRSS/issues/8268
To better support user management on FreshRSS instance with many users.

SQL speed improved. On a reduced test with 5 users, including some large accounts (PostgreSQL on a very tiny and slow server), improving from ~2.3s to ~1.8s, which gives ~20% speed improvement.

Then tested with 1000 users, with only the default feed (on my old desktop computer):

```sh
for i in {1..1000}; do ./cli/create-user.php --user=freshrss$i --password=freshrss; done
app/actualize_script.php
cli/access-permissions.sh
```

SQLite:

```console
$ time cli/user-info.php | wc -l
1001

real    0m1.366s
user    0m0.908s
sys     0m0.475s
```

PostgreSQL:

```console
$ time cli/user-info.php | wc -l
1001

real    0m28.498s
user    0m12.137s
sys     0m2.217s
```

MariaDB:

```console
# time ./cli/user-info.php | wc -l
1001

real    0m49.485s
user    0m1.276s
sys     0m2.258s
```

Yes, SQLite is much faster - not a surprise for such use-cases, where the TCP connection is not re-used.

I have added some CLI options to disable some statistics:

```sh
cli/user-info.php --no-db-size --no-db-counts
```

For the Web UI, I have disabled detailed user statistics if it takes too long, and retrieve missing user statistics asynchronously via JavaScript. Lazy loading of the user details based on IntersectionObserver, with maximum 10 requests in parallel.
Web UI tested on 1000 users as well. Checked with SeaMonkey.
</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>Update manage.phtml (#8185)</title>
<updated>2025-11-02T23:00:28+00:00</updated>
<author>
<name>maTh</name>
<email>1645099+math-GH@users.noreply.github.com</email>
</author>
<published>2025-11-02T23:00:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=430ab511f8d99cb910739863a911f8081daeb262'/>
<id>urn:sha1:430ab511f8d99cb910739863a911f8081daeb262</id>
<content type='text'>
I think that the placeholder for new user names should not be "demo". An empty field is good enough IMHO

&lt;img width="825" height="533" alt="grafik" src="https://github.com/user-attachments/assets/e2bde73b-4472-4bf7-ac4e-81138f3d9a3f" /&gt;


&lt;img width="866" height="516" alt="grafik" src="https://github.com/user-attachments/assets/f7586470-d0e8-4962-9e5f-5aa6912670d3" /&gt;
</content>
</entry>
<entry>
<title>Fix autocomplete issues in change password form (#7812)</title>
<updated>2025-09-30T08:12:15+00:00</updated>
<author>
<name>Inverle</name>
<email>inverle@proton.me</email>
</author>
<published>2025-09-30T08:12:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=bf6e634e042b726edd97335ac36b2305f8101b3f'/>
<id>urn:sha1:bf6e634e042b726edd97335ac36b2305f8101b3f</id>
<content type='text'>
## Screenshots

&lt;details&gt;
&lt;summary&gt;Before&lt;/summary&gt;

&lt;img width="773" height="652" alt="image" src="https://github.com/user-attachments/assets/89a0e58c-8c4a-41ff-b5d6-3e916079d563" /&gt;

&lt;/details&gt;

&lt;details&gt;
&lt;summary&gt;After&lt;/summary&gt;

&lt;img width="1006" height="646" alt="image" src="https://github.com/user-attachments/assets/f4575103-7365-4870-a170-2742bf10eb27" /&gt;

&lt;/details&gt;

This is an example on Firefox, where the `Master authentication token` field was incorrectly being autofilled.
Red borders are indicating that the fields are required.

## List of changes

* `required="required"` is now being added to the password fields if the section is open
* The `challenge` field is being added if section is open instead of when at least one of the password fields isn't empty due to autocomplete
* Added `autocomplete="new-password"` on fields that shouldn't be autocompleted
   * Unfortunately Chrome requires a workaround with CSS
   * Not tested on Safari yet
* User will be redirected to profile page after successfully changing their password instead of index page

## How to test

Autocomplete related changes should be tested on a HTTPS page with saved credentials for FreshRSS
</content>
</entry>
<entry>
<title>Fix another user self-delete regression (#7877)</title>
<updated>2025-09-15T20:17:14+00:00</updated>
<author>
<name>Inverle</name>
<email>inverle@proton.me</email>
</author>
<published>2025-09-15T20:17:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=ddb51c0e95074c6fbddade547ca267801177bb01'/>
<id>urn:sha1:ddb51c0e95074c6fbddade547ca267801177bb01</id>
<content type='text'>
Regression from #7763 
Earlier regression which was fixed before #7626

In addition:
* get rid of `data-toggle` (refactor)
* show invalid login message if deleting account and entered incorrect password instead of redirect to 403
* remove unused reference to `r` parameter
* `forgetOpenCategories()` on login not on any crypto form
</content>
</entry>
<entry>
<title>Minor update syntax echo (#7941)</title>
<updated>2025-09-11T19:19:31+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-09-11T19:19:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=8bd9bd95d8cc0fd5fe24386db7182329612579da'/>
<id>urn:sha1:8bd9bd95d8cc0fd5fe24386db7182329612579da</id>
<content type='text'>
* Minor update syntax echo
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/7939

* Fix layout
Whitespace optimisation needed to avoid style glitch</content>
</entry>
<entry>
<title>New JS attribute: `data-auto-leave-validation` (#7785)</title>
<updated>2025-08-08T15:39:38+00:00</updated>
<author>
<name>Inverle</name>
<email>inverle@proton.me</email>
</author>
<published>2025-08-08T15:39:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=d9197d7e32a97f29829ffd4cf4371b1853e51fa2'/>
<id>urn:sha1:d9197d7e32a97f29829ffd4cf4371b1853e51fa2</id>
<content type='text'>
Instead of a repeating pattern like: `&lt;input type="text" value="something" data-leave-validation="something"&gt;`, you can now put a `data-auto-leave-validation="1"` attribute on a `&lt;form&gt;` for example, and it will automatically set the `data-leave-validation` attributes inside the form elements.

`data_auto_leave_validation(parent)`  from `extra.js` is called on slider open and page load.

---------

Co-authored-by: Alexandre Alapetite &lt;alexandre@alapetite.fr&gt;
Co-authored-by: Frans de Jonge &lt;fransdejonge@gmail.com&gt;</content>
</entry>
<entry>
<title>Improve security of form for user details (#7771)</title>
<updated>2025-08-03T21:30:35+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-08-03T21:30:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=05c7aac84e575552a13f9dab9b9ca0d0374b4cb3'/>
<id>urn:sha1:05c7aac84e575552a13f9dab9b9ca0d0374b4cb3</id>
<content type='text'>
Related to https://github.com/FreshRSS/FreshRSS/pull/7684
The form buttons requiring confirmation are disabled in HTML in the case of Ajax, and only enabled again if our own JavaScript is running</content>
</entry>
</feed>
