<feed xmlns='http://www.w3.org/2005/Atom'>
<title>FreshRSS (Customized)/lib/Minz/Extension.php, branch edge</title>
<subtitle>Customized version of FreshRSS, a self-hosted RSS feed aggregator</subtitle>
<id>https://git.rdnlsmith.com/fresh-rss-custom/atom?h=edge</id>
<link rel='self' href='https://git.rdnlsmith.com/fresh-rss-custom/atom?h=edge'/>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/'/>
<updated>2025-10-21T21:49:06+00:00</updated>
<entry>
<title>Add support for extension compatibility (#8081)</title>
<updated>2025-10-21T21:49:06+00:00</updated>
<author>
<name>Alexis Degrugillier</name>
<email>aledeg@users.noreply.github.com</email>
</author>
<published>2025-10-21T21:49:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=eee8b8c03f93b82ed762137e386659d9da3adbf3'/>
<id>urn:sha1:eee8b8c03f93b82ed762137e386659d9da3adbf3</id>
<content type='text'>
The compatibility does support only a minimum version of FreshRSS. If we need
something a bit more clever in the future, it is possible to handle a rule
with a bit more complexity.

See https://github.com/FreshRSS/FreshRSS/issues/5903

* Update app/Controllers/extensionController.php

Co-authored-by: Alexandre Alapetite &lt;alexandre@alapetite.fr&gt;

* Update app/i18n/pl/admin.php

Co-authored-by: Inverle &lt;inverle@proton.me&gt;

* Minor move phpstan-type

---------

Co-authored-by: Alexandre Alapetite &lt;alexandre@alapetite.fr&gt;
Co-authored-by: Inverle &lt;inverle@proton.me&gt;</content>
</entry>
<entry>
<title>Add support for extension priority (#8038)</title>
<updated>2025-10-01T09:01:31+00:00</updated>
<author>
<name>Alexis Degrugillier</name>
<email>aledeg@users.noreply.github.com</email>
</author>
<published>2025-10-01T09:01:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=dac275ce3a3529494af1b86b803f140a1a55424e'/>
<id>urn:sha1:dac275ce3a3529494af1b86b803f140a1a55424e</id>
<content type='text'>
Extension can now define their hook priority. This will allow to define the order in which hooks are triggered.

See #7110

Closes #7110

Changes proposed in this pull request:

- Add support for extension priority

How to test the feature manually:

1. Create an extension with 2 hooks on the same hook type but different priority
2. The hooks must be prepending the title with different values
3. Validate that changing the hook priority changes the final title accordingly.
</content>
</entry>
<entry>
<title>Change how files are included (#7916)</title>
<updated>2025-09-05T13:56:46+00:00</updated>
<author>
<name>Alexis Degrugillier</name>
<email>aledeg@users.noreply.github.com</email>
</author>
<published>2025-09-05T13:56:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=23ba48c71f0d41bbe012d668349f6516dad527b4'/>
<id>urn:sha1:23ba48c71f0d41bbe012d668349f6516dad527b4</id>
<content type='text'>
1. `include`, `include_once`, `require` and `require_once` are expressions not functions, parentheses are not necessary.
2. to move up the directory tree, it's better to use the `dirname` function instead of relying on `/..`.</content>
</entry>
<entry>
<title>Secure serving of user files from extensions (#7495)</title>
<updated>2025-04-07T06:47:42+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-04-07T06:47:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=0c33d2713957eaf6cc0222150df7ebbcb53beaed'/>
<id>urn:sha1:0c33d2713957eaf6cc0222150df7ebbcb53beaed</id>
<content type='text'>
* Secure serving of user files from extensions
fix https://github.com/FreshRSS/FreshRSS/issues/4930

* More fixes

* Typo</content>
</entry>
<entry>
<title>Catch extension exceptions in override (#7475)</title>
<updated>2025-04-01T15:55:20+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-04-01T15:55:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=3336631a846c2e34f55b2ecb76b46cd68228486f'/>
<id>urn:sha1:3336631a846c2e34f55b2ecb76b46cd68228486f</id>
<content type='text'>
* Catch extension exceptions in override
https://github.com/FreshRSS/Extensions/pull/300#issuecomment-2768578464

* Fix error message</content>
</entry>
<entry>
<title>PHPStan 2.0 (#7131)</title>
<updated>2024-12-27T11:12:49+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2024-12-27T11:12:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=b1d24fbdb7d1cc948c946295035dad6df550fb7e'/>
<id>urn:sha1:b1d24fbdb7d1cc948c946295035dad6df550fb7e</id>
<content type='text'>
* PHPStan 2.0
fix https://github.com/FreshRSS/FreshRSS/issues/6989
https://github.com/phpstan/phpstan/releases/tag/2.0.0
https://github.com/phpstan/phpstan/blob/2.0.x/UPGRADING.md

* More

* More

* Done

* fix i18n CLI

* Restore a PHPStan Next test
For work towards PHPStan Level 10

* 4 more on Level 10

* fix getTagsForEntry

* API at Level 10

* More Level 10

* Finish Minz at Level 10

* Finish CLI at Level 10

* Finish Controllers at Level 10

* More Level 10

* More

* Pass bleedingEdge

* Clean PHPStan options and add TODOs

* Level 10 for main config

* More

* Consitency array vs. list

* Sanitize themes get_infos

* Simplify TagDAO-&gt;getTagsForEntries()

* Finish reportAnyTypeWideningInVarTag

* Prepare checkBenevolentUnionTypes and checkImplicitMixed

* Fixes

* Refix

* Another fix

* Casing of __METHOD__ constant</content>
</entry>
<entry>
<title>Upgrade to PHP 8.1 (#6711)</title>
<updated>2024-09-06T07:06:46+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2024-09-06T07:06:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=a81656c3ed5b8fe0f31794a4fbe0d1a907fca8e8'/>
<id>urn:sha1:a81656c3ed5b8fe0f31794a4fbe0d1a907fca8e8</id>
<content type='text'>
* Upgrade to PHP 8.1
As discussed in https://github.com/FreshRSS/FreshRSS/discussions/5474

https://www.php.net/releases/8.0/en.php
https://www.php.net/releases/8.1/en.php

Upgrade to available native type declarations
https://php.net/language.types.declarations

Upgrade to https://phpunit.de/announcements/phpunit-10.html which requires PHP 8.1+ (good timing, as version 9 was not maintained anymore)

Upgrade `:oldest` Docker dev image to oldest Alpine version supporting PHP 8.1: Alpine 3.16, which includes PHP 8.1.22.

* Include 6736
https://github.com/FreshRSS/FreshRSS/pull/6736</content>
</entry>
<entry>
<title>Minor update whitespace PHPCS rules (#6666)</title>
<updated>2024-08-01T18:31:40+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2024-08-01T18:31:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=d2247221bbf23a8fe19f66ea4ad7d0a59ffaa5b4'/>
<id>urn:sha1:d2247221bbf23a8fe19f66ea4ad7d0a59ffaa5b4</id>
<content type='text'>
* Minor update whitespace PHPCS rules
To simplify our configuration, apply more rules, and be clearer about what is added or removed compared with PSR12.
Does not change our current conventions, but just a bit more consistent.

* Forgotten *.phtml

* Sort exclusion patterns + add a few for Extensions repo

* Relaxed some rules</content>
</entry>
<entry>
<title>Add core extensions: UserCSS, UserJS (#6267)</title>
<updated>2024-06-05T18:58:19+00:00</updated>
<author>
<name>hkcomori</name>
<email>hkcomori@gmail.com</email>
</author>
<published>2024-06-05T18:58:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=99b1d551e61adb5cbd014677f151f443b0c6c35f'/>
<id>urn:sha1:99b1d551e61adb5cbd014677f151f443b0c6c35f</id>
<content type='text'>
* Copy CustomCSS and CustomJS

Original: FreshRSS/Extensions@9f21984

* Rename CustomCSS -&gt; UserCSS

* Rename CustomJS -&gt; UserJS

* Change metadata

The name is used for the directory where the configuration
is stored and should not contain spaces.
Since the name was changed, I reset the version number and
changed to semantic versioning.

* Change data directory

Changed the location of the configuration file to
the user data directory, because it is not `static`.
That way, the user's configurations are gathered
in the user directory, which makes it easier to backup them.

* Edit documentations

Remove procedures to install the extension
because it is no longer necessary.

* Fix wrong variables in the configuration page

Remove permission error indication because the storage location
is now in the user data directory managed by the application.

* Remove the `xExtension-` prefix for core extensions

* Set version to 1.0.0 for UserCSS, UserJS

* Refactoring

* Remove unused variables

* Remove version 0.0.1 in Changelog

Version 0.0.1 will not be merged, so only version 1.0.0 will remain.

* public getFileUrl

* Revert more protected

* Use entrypoint for extension user path instead of name

* Add space to extension name

* Add `#[\Override]`

* Add explains of User CSS and User JS to docs

* Remove README of User CSS and User JS

* Add migration code for extension user path

---------

Co-authored-by: Alexandre Alapetite &lt;alexandre@alapetite.fr&gt;</content>
</entry>
<entry>
<title>Add a way to modify CSP rules within an extension (#6246)</title>
<updated>2024-03-30T17:09:44+00:00</updated>
<author>
<name>Alexis Degrugillier</name>
<email>aledeg@users.noreply.github.com</email>
</author>
<published>2024-03-30T17:09:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=7da0e70a7221a42fb8ff6534fc339b18f8e2daa1'/>
<id>urn:sha1:7da0e70a7221a42fb8ff6534fc339b18f8e2daa1</id>
<content type='text'>
This will allow to change CSP rules to authorize the use of external scripts.
We might need to add some safeguard since it will be virtually possible to
load any script even malicious one.</content>
</entry>
</feed>
