Commit Graph

315 Commits

Author SHA1 Message Date
Alexandre Alapetite
075101fa66 New extension methods to get typed configuration values (#8696)
And also correctly scoped in a sub-key per extension, instead of risking collisions between extensions.
2026-04-17 09:12:00 +02:00
pe1uca
c44cd2b08f Category autoread by guid (#8673)
* Add configuration to mark same GUID as read in category.

Implement suggestion mentioned in #8641

Changes proposed in this pull request:

- Add a configuration to the categories to automatically mark entries as read if the same GUID is present in recent entries.  

How to test the feature manually:

1. Create a category. Check the option "Mark an article as read… if an identical GUID already exists [...]"  
2. Enable debug logs, or add an extension which registers to the hook `Minz_HookType::EntryAutoRead`.  
3. Add feeds which might have the same GUID.  
  For example: https://www.reddit.com/r/technology/hot.rss, https://www.reddit.com/r/technology/rising.rss, https://www.reddit.com/r/technology/best.rss, and https://www.reddit.com/r/technology/new.rss
4. See the logs "Mark GUID as read[...]", or the effect of the extension.  

* Implement behavior to mark same GUID as read in category.

* Update documentation

* Update i18n

* Fix PHP CS report

* Fix missing argument

* Fixes

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-04-05 19:41:37 +02:00
Matheus Roberson
cf5cfeff58 Add a form to create new user queries on the User Queries page (#8623)
* Add form to create user queries
Closes https://github.com/FreshRSS/FreshRSS/issues/6361

Changes proposed in this pull request:

- Add a form to create new user queries on the User Queries page
- Fix the controller to properly handle request data

How to test the feature manually:

1. Open FreshRSS
2. Open Settings
3. Click User queries
4. Create new user query 

* Add tranlation key for title in create new user query
* Fix 'for' conflict with aside in labels
* Fix input widths

* i18n: fr

* make fix-all

* Fix conditions in configureController

* Remove token condition

* Fix ctype_digits condition

* Fix errors

* Fix phpStan error

* Fix syntax and state for checkboxes

* Add new way to create user queries in docs

* Compress image more

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-04-03 22:29:44 +02:00
pe1uca
bca9a5586e Hook to modify the list of feeds to actualize (#8655)
* Add FeedsListBeforeActualize hook.

Closes #8650
Implement new hook to allow extensions to modify the list of feeds to actualize.  

How to test the feature manually:

1. Add several feeds from a single site (e.g. reddit and YT).  
2. Add feeds to other sites.  
3. Add and enable the extension https://github.com/pe1uca/xExtension-Declumping  
4. Call `php app/actualize_script.php` to update feeds with a different order.  

A log like this one is needed to properly see the behavior.  
```php
foreach ($feeds as $key => $value) {
    syslog(LOG_INFO, "$key: {$value->name()} ({$value->url()})");
}
```

Sort in alphabetical order.

* Implement call to hook

* Remove duplicate return

* Fix PHPStan error

* Update documentation

* Sanitize hook response

* Markdown cleaning

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-04-02 09:21:18 +02:00
Inverle
033e73a446 Allow passing Minz_HookType as hook name in registerHook() (#8600)
* Allow passing `Minz_HookType` as hook name in `registerHook()`

* Add missing `Minz_HookType::EntriesFavorite` documentation

* More corrections

* PHPDoc sync with signature
2026-03-14 22:33:24 +01:00
Inverle
3bb16b0a53 Add new hook: Minz_HookType::ActionExecute (#8599)
* Add new hook: `Minz_HookType::ActionExecute`

* Move down `ActionExecute`
2026-03-14 18:20:57 +01:00
rid3r45
3e4d5bb041 Add option to hide sidebar by default (#8515) (#8528)
* Add option to hide sidebar by default (#8515)

Closes https://github.com/FreshRSS/FreshRSS/issues/8515

Changes proposed in this pull request:

- Add `sidebar_hidden_by_default` user preference (default: `false`)
- Add a checkbox in the Display settings page to toggle this preference
- Hide the sidebar on page load in `normal` and `reader` views when the preference is enabled and no session state exists
- Add English translation key; mark all other languages as `TODO` for translators

How to test the feature manually:

1. Go to Settings → Display, tick "Hide sidebar by default", save
2. Go back to the main view (normal or reader): the sidebar should be hidden on load
3. Toggle the sidebar manually — it should open/stay open for the rest of the session
4. Open a new tab: the sidebar should be hidden again
5. Go to Settings → Display, untick the option, save: the sidebar should now be visible on load as usual
6. Check that the sidebar is always visible on Settings pages regardless of the preference

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: PR comment

* Update app/i18n/pl/conf.php

* i18n: fr

* make fix-all

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Inverle <inverle@proton.me>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-03-02 13:32:10 +01:00
Inverle
63c8fe1285 docs: Fix broken or dead links (#8548)
* docs: Fix broken or dead links
Used the following commands to find broken links:
1. `lychee -E --dump https://freshrss.github.io/FreshRSS/en/ --include freshrss.github.io --output links.txt`
2. `lychee -v --suggest --archive wayback --timeout 5 -u "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0" --files-from links.txt --output output.txt`
3. `cat output.txt`

Then did the same for https://freshrss.github.io/FreshRSS/fr/

We could look into using lychee in CI:
https://github.com/lycheeverse/lychee?tab=readme-ov-file#github-action-usage

* Replace PostgreSQL 16 link with current version

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>

* Remove paragraph about bug message format

* Update README with official app website links

* Replace broken French images with English versions

* Fix broken Fever API docs link in French docs

* Replace GNU Social link with new one in `shares.php`

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-03-02 08:21:23 +01:00
Alexandre Alapetite
cf631b6f87 Implement filter on last modified date by server (#8131)
* Implement filter on last modified date by server
Especially relevant for API, to get the modified changes: the API will now return the articles that are new or which content has been modified since `ot`:

fix https://github.com/FreshRSS/FreshRSS/issues/7304
fix https://github.com/FreshRSS/FreshRSS/issues/2566
https://github.com/jocmp/capyreader/discussions/533#discussioncomment-11341808

New corresponding search operator `mdate:` and new UI:

<img width="650" height="627" alt="image" src="https://github.com/user-attachments/assets/8ba02937-abc7-44bf-b718-cf269cc37caf" />

* Migration from existing id column

* Fix auto-update

* Index after update for performance

* Minor comment

* Minor whitespace

* Fix regex

* Minor .gitignore

* Changelog and warning

* Update app/i18n/pl/gen.php

Co-authored-by: Inverle <inverle@proton.me>

* make fix-all

* Optimise SQL auto-update
For speed and resilience

* Minor SQLite change of sequence

* Changelog

* Speed optimisation: No DEFAULT 0

* Better migration

* Revert small bug

* Prepare filtering on multiple dates for API

* make fix-all

* Update tests

* Remaining manual merge

* Update versions

* Remove warnings no longer relevant in changelog

* Implement in API, and COALESCE

* No lastModified when adding new article

* Rework logic

* Sort IS NOT NULL

* Remove forgotten lastModified

---------

Co-authored-by: Inverle <inverle@proton.me>
2026-03-01 21:43:03 +01:00
Alexandre Alapetite
5beebfcd45 Initial conventions for AI agents and humans: AGENTS.md, SKILLS.md, instructions.md (#8478)
Not stable yet, but initial structure
https://agents.md
https://agentskills.io/specification
https://code.visualstudio.com/docs/copilot/customization/custom-instructions
https://code.visualstudio.com/docs/copilot/customization/agent-skills
2026-02-01 13:06:53 +01:00
Tomas Odehnal
7c853cf507 Update the 'Refreshing feeds' documentation page (#8468)
* Update the 'Refreshing feeds' page
* add the 'user' parameter and clarify the 'token' parameter usage
* remove old token screenshots, add a new one from profile page
* update the authentication page screenshot
* clarify the anonymous refreshing of the feeds

* Add myself to CREDITS.md

* Update Refresh feeds docs page content

* Tweak the content headings to match the actual headings
* Fix the link to Form authentication paragraph

* PNG compress more (16 colours + OptiPNG)

* Minor typography

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-01-28 08:31:19 +01:00
Thomas Hufschmidt
2cbb5f8db1 Update documentation in regards to CSP warnings (#8439)
* Add a reference to the check where the warning is triggered

Note:
This is the place where the admin sees the browser pointing to.
Adding this information here allows the admin to find the matching
documentation entry.

* Update Content-Security-Policy section of english ServerConfig documentation

Note:
This fixes some minor formating/typping issues and adds some clarity to
the fact that this warning is also triggered on correctly configured
hosts, simply due to the nature of how correctness of CSP rules are checked.

* Move CSP infor source-code comment into console.info

Note:
Improve visibility of why this is happening.

* Point towards static website documentation instead of git

This URL should also remain more fixed even accross new branches/releases.

Co-authored-by: Inverle <inverle@proton.me>

* Minor fixes

* Remove overwrite part

---------

Co-authored-by: Inverle <inverle@proton.me>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-01-17 22:28:56 +01:00
netsho
b8656e1df1 Document mounting own CA on FreshRSS container (#8406)
closes https://github.com/FreshRSS/FreshRSS/issues/8405

- Add documentation on how to trust own CA that issued self-signed certificate as authentik signing key
- Add example in Docker Example

How to test the feature manually:

1. Create your own CA
2. Issue a certificate
3. Use the issued certificate as a signing-key in authentik when configuring FreshRSS provider
4. Add created CA on host's CA store by running `update-ca-certificates`
5. Mount the `/etc/ssl/certs/ca-certificates.crt` file on FreshRSS container
6. Start the container
7. Navigate to FreshRSS in the browser
8. Authentik login form should be displayed and work as normal.
2026-01-05 22:06:09 +01:00
Inverle
5e9c3617ca Improve layout of documentation page and add search feature (#8247)
* Improve layout of documentation page and add search feature

Closes https://github.com/FreshRSS/FreshRSS/issues/7915, https://github.com/FreshRSS/FreshRSS/issues/5325

Also: anchor headings and fix building site locally

* Further improvements

* Set color of hyperlinks
* Consistent styling of close aside button across devices
* Mobile layout 600px -> 1200px
* Add suffix to docs `<title>`
    * Note: titles of pages probably need to be improved, since currently they are just derived from the names of the first heading on every page
* Add favicon

* Improve font

* Try to fix favicon not loading correctly on GH pages

* Use local font

* Attempt to fix GH pages

* Final improvements

* Copy to clipboard button
* Support for nojs search
* Dark mode
* Load search.json (200KB json) only on search input focus
* Keep scroll state of sidebar across navigations

* Clickable images and CSP

CSP so we avoid hotlinking resources and clickable images are useful for zooming on mobile for example

* Fix typos

* Disable Dark Reader extension if dark mode CSS is loaded

* Support internationalisation (via language dropdown)

* Add Gemfile.lock

* Make CI build work with the custom plugin

* Make menus closable with Esc

* Fix typos CI

* Suggestions

* Use `ruby/setup-ruby` action in workflow for installing and caching gems.

* Run build only when there are changes to `docs/`

See: https://docs.github.com/en/actions/reference/workflows-and-actions/events-that-trigger-workflows?versionId=free-pro-team%40latest&productId=actions#running-your-workflow-only-when-a-push-to-specific-branches-occurs

* Change font to `Open Sans`

* Increase line height

* Fix Liquid syntax error
2025-12-04 20:06:21 +01:00
Alexandre Alapetite
5e0093aa00 Fix MariaDB updateCachedValues (#8255)
Changed syntax for an even wider compatibility.
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8254
Regression from https://github.com/FreshRSS/FreshRSS/pull/6957
MariaDB images on Docker Hub go back to 10.6, so changed documentation to indicate support from that version, as I cannot easily test even older versions.
2025-11-26 23:47:29 +01:00
Alexandre Alapetite
06d34f9b8e OPML export/import of unicity criteria (#8243)
Found during https://github.com/FreshRSS/FreshRSS/discussions/8242#discussioncomment-15052838
2025-11-24 22:01:46 +01:00
matthew-neavling
9522e8f950 Fix link to Minz docs in 05_Extensions.md (#8229)
The link to the Minz docs works on GitHub but 404's on the [live site](https://freshrss.github.io/FreshRSS/en/developers/03_Backend/05_Extensions.html). Replacing the absolute path with a relative path should correct the 404.
2025-11-18 15:16:14 +01:00
Inverle
b9abe70690 Add new translate action: move, make i18n-move-key (#8214)
So that renaming something like `conf.shortcut.toggle_sidebar` to `conf.shortcut.toggle_aside` can be done easily even after already having added `conf.shortcut.toggle_sidebar` and translated it in multiple languages.

Example of usage:
```console
./cli/manipulate.translation.php -a move -k conf.shortcut.toggle_sidebar -n conf.shortcut.toggle_aside
```
```console
make i18n-move-key key="conf.shortcut.toggle_sidebar" new-key="conf.shortcut.toggle_aside"
```

The key will be moved and all values/states will be kept.
2025-11-16 18:44:07 +01:00
Alexandre Alapetite
a18c35046d Housekeeping lib_rss.php (#8193)
* 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
2025-11-11 08:17:12 +01:00
Inverle
500d05f3c5 Implement whitelist for SimplePie sanitizer (#7924)
* Implement whitelist for SimplePie sanitizer

ref: https://github.com/FreshRSS/FreshRSS/pull/7770#issuecomment-3140334326

https://github.com/FreshRSS/simplepie/pull/53
https://github.com/simplepie/simplepie/pull/947

* Remove `<plaintext>` from whitelist

* Improve order

* Remove some tags from whitelist

* Revert partially

* sync

* Display contents of `<noscript>` and `<noembed>`

* sync

* Allow use of `<track>`

* sync again

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

* Alphabetic order

* Reduce list of stripped attributes

* Temporarily strip some attributes

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-11-02 00:28:35 +01:00
Alexandre Alapetite
1217b6de34 OPML export/import frss:priority (#8158)
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/7583
2025-10-26 15:07:38 +01:00
Alexandre Alapetite
1282d3a270 PostgreSQL: compatibility with PCRE word boundary (#8141)
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
2025-10-22 21:21:17 +02:00
Alexandre Alapetite
7e72033859 Filter on last user modified (#8093)
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
2025-10-15 00:12:19 +02:00
Alexandre Alapetite
e070c3ed2b Implement search form (#8103)
* 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.

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

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

* Fix user query and add tests
2025-10-15 00:08:40 +02:00
Alexis Degrugillier
b6f4276c6c Change regional language codes (#8065)
* Change regional language codes

According to `ISO-639-1` and `ISO-3166-1 alpha-2` recommendations, regional
languages must be written with the language code in lowercase and the region
in uppercase. For instance, we should have `en-US` instead of `en-us`.

Folders have been updated to reflect those recommendations and regional
language codes have been updated in the translation files.

* Update README files

* Fix configuration for typos

* Revert language order in documentation

* Remove unnecessary code

* Change language configuration getter

* Fix phpstan error

* Fix typo

* Add types

* escape regex

* Move language logic to avoid magic or deprecated methods

* Minor fix on regex
2025-10-06 21:09:01 +02:00
Alexis Degrugillier
032316155c Add a new hook in the UI (#8054)
* Add a new hook in the UI

The new hook allows extension to add their own tool bar to navigate between
entries. For instance, if the user wants less or more buttons that what's
available by default.

See #7912
See #7913

* add link data to ease navigation
2025-10-02 15:33:53 +02:00
Alexis Degrugillier
dac275ce3a Add support for extension priority (#8038)
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.
2025-10-01 11:01:31 +02:00
maTh
2bcc090622 configurable notification timeout (#7942)
Ref #7931
Ref #5466
Ref #6409

added configuration in "Display"
<img width="636" height="167" alt="grafik" src="https://github.com/user-attachments/assets/7bbc9f26-d91b-4dd2-b715-1d3f9b7a9ad3" />

* i18n: fr

* Update app/i18n/pl/conf.php

Co-authored-by: Inverle <inverle@proton.me>

* make fix-all

* max()

* Minor whitespace
(I am not a fan of excessive vertical indenting)

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
Co-authored-by: Inverle <inverle@proton.me>
2025-10-01 10:48:07 +02:00
Alexis Degrugillier
72884813e1 Add hook enums (#8036)
- add an enum to handle hook types (enum are available since PHP 8.1)
- change hook calls from string value to enum value
2025-09-30 22:59:41 +02:00
KleinMann
d670bf1e72 Add entry_before_update and entry_before_add hooks (#7977)
Discussion: https://github.com/FreshRSS/FreshRSS/discussions/7973

Changes proposed in this pull request:

- Add new extension hook "entry_before_add"
- Add new extension hook "entry_before_update"

How to test the feature manually:

1. Create extension that uses the hooks and confirm they are invoked correctly.

Extension to use for testing
https://github.com/rnkln/freshrss-xExtension-Discord/pull/2
2025-09-18 23:44:17 +02:00
Bastian Greshake Tzovaras
8e8ff4014d add collection of scraping settings (#7937)
Closes #7894

Changes proposed in this pull request:

- adds the link to the collection of XPath scraping settings to the appropriate documentation page
2025-09-11 09:10:30 +02:00
triatic
56df7f826a Should be REMOTE_USER not Remote-User (#7828)
For fastcgi, REMOTE_USER is the correct variable.
2025-08-15 12:15:54 +02:00
Inverle
2b85a50ed7 Show warning when unsafe CSP policy is in use (#7804)
* Show warning when unsafe CSP policy is in use

* Fix bare markdown URL

* i18n: fr

* Minor i18n: fr

* Add target="_blank" to i18n strings

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-08-09 21:47:39 +02:00
Inverle
e33ef74af9 before_login_btn hook + system conf attributes (#7761)
* `before_login_btn` hook + system conf attributes

* phpstan fix

* Refactoring

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-07-30 08:03:04 +02:00
Inverle
7915abd833 Implement custom feed favicons (#7646)
Closes #3789, #6503

Icon setting when no custom icon is set yet:

![image](https://github.com/user-attachments/assets/28b07dd0-7dac-4c76-b1d7-77035f91a87a)

- `Change...` button opens a file dialog, and after selecting a file shows the chosen icon in the preview on the left. `Submit` must be clicked after selecting the icon.
- `Reset to default` changes the preview icon to the default one, and also requires `Submit` to be clicked to apply the changes.

Full list of changes:
- CSP now includes `blob:` in `img-src` for
   - `indexAction()` and `feedAction()` in `subscriptionController.php`
   - all of the view actions in `indexController.php`
- Introduce new attribute `customFavicon (boolean)` for feeds that indicates if the feed has a custom favicon
   - `hashFavicon()` in `Feed.php` is dependent on this attribute
      - `hashFavicon()` has a new parameter called `skipCache (boolean)` that allows the reset of the favicon hash for the Feed object
      - `resetFaviconHash()` just calls `hashFavicon(skipCache: true)`
- `f.php` URLs now have the format of `/f.php?h=XXXXX&t=cachebuster`, where the `t` parameter is only used for serving custom favicons
   - if `t` parameter is set, `f.php` returns a `Cache-Control: immutable` header
- `stripos` and `strpos` were changed to `str_contains` in various places (refactor)
- JS for handling the custom favicon configuration logic is in `extra.js` inside `init_update_feed()` which is called when feed configuration is opened from the aside or when the subscription management page with the feed is loaded
   - Server-side code for uploading the icon in `subscriptionController.php` under `feedAction()`
   - Errors that may occur during the setting of a custom favicon:
      - Unsupported image file type (handled only server-side with `isImgMime()`)
      - When the file is bigger than 1 MiB (default), handled both client-side and server-side
      - Standard feed error when `updateFeed()` fails
- JS vars `javascript_vars.phtml` are no longer escaped with `htmlspecialchars()`, instead with json encoding,
- CSS for disabled buttons was added
- Max favicon file size is configurable with the `max_favicon_upload_size` option in `config.php` (not exposed via UI)
- Custom favicons are currently deleted only when they are either reset to the default icon, or the feed gets deleted. They do not get deleted when the user deletes their account without removing their feeds first.
- ` faviconPrepare()` and `faviconRebuild()` are not allowed to be called when the `customFavicon` attribute is `true`
- New i18n strings:
   - `'sub.feed.icon' => 'Icon'`
   - `'sub.feed.change_favicon' => 'Change…'`
   - `'sub.feed.reset_favicon' => 'Reset to default'`
   - `'sub.feed.favicon_changed_by_ext' => 'The icon has been set by the <b>%s</b> extension.'`
   - `'feedback.sub.feed.favicon.too_large' => 'Uploaded icon is too large. The maximum file size is <em>%s</em>.'`
   - `'feedback.sub.feed.favicon.unsupported_format' => 'Unsupported image file format!'`
- Extension hook `custom_favicon_hash`
   - `setCustomFavicon()` method
   - `resetCustomFavicon()` method
   - `customFaviconExt` and `customFaviconDisallowDel` attributes
   - example of usage: https://github.com/FreshRSS/Extensions/pull/337
- Extension hook `custom_favicon_btn_url`
   - Allows extensions to implement a button for setting a custom favicon for individual feeds by providing an URL. The URL will be sent a POST request with the `extAction` field set to either `query_icon_info` or `update_icon`, along with an `id` field which describes the feed's ID.
2025-06-30 12:01:56 +02:00
Alexandre Alapetite
c8bbf35534 Add search operator c: for categories (#7696)
* Add search operator `c:` for categories
fix https://github.com/FreshRSS/FreshRSS/discussions/7692
Allow searching for e.g. `c:23,34`
2025-06-29 11:09:08 +02:00
Stefan
51298cd6bc Exposed the reading modes for extensions through Minz (#7668)
* + Exposed the reading modes for extensions through Minz. Now extensions can add a custom view mode. Graceful fallback to normal view in case the extension was disabled without resetting the view_mode through the uninstall method. In that case the user will be informed via Minz_Request::setBadNotification that the view has been reset to normal.
+ Added translation strings for de, en and en-us for the notification

* + Added missing, generated translations

* Simplify indexAction, performance

* Minor settings htmlspecialchars

* i18n: fr

* Minor wording

* Doc

* Fix i18n

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-06-22 00:36:32 +02:00
Alexandre Alapetite
aa45bcbe5a Fix Markdown 78a4256 (#7678)
Fix for 78a4256362
2025-06-18 22:15:54 +02:00
ghostvirus
78a4256362 Merge commit from fork 2025-06-18 21:11:41 +02:00
Alexandre Alapetite
cc35094bb2 Add API endpoint for extensions (#7576)
* Add API endpoint for extensions
Useful for https://github.com/FreshRSS/FreshRSS/issues/7572

* Support PATH_INFO
Now also support being invoked like `/api/misc.php/Extension%20Name/`

* More  documentation
2025-06-03 00:16:17 +02:00
dependabot[bot]
7d86cbe804 Bump markdownlint-cli from 0.44.0 to 0.45.0 (#7632)
* Bump markdownlint-cli from 0.44.0 to 0.45.0

Bumps [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli) from 0.44.0 to 0.45.0.
- [Release notes](https://github.com/igorshubovych/markdownlint-cli/releases)
- [Commits](https://github.com/igorshubovych/markdownlint-cli/compare/v0.44.0...v0.45.0)

---
updated-dependencies:
- dependency-name: markdownlint-cli
  dependency-version: 0.45.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fix Markdown

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-06-01 22:50:58 +02:00
Alexandre Alapetite
f2a7af03e8 Remove Apache 2.2 (only support Apache 2.4+) (#7561)
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/7552
I cannot find any distribution still supporting Apache 2.2
2025-05-07 14:45:43 +02:00
Alexandre Alapetite
0c33d27139 Secure serving of user files from extensions (#7495)
* Secure serving of user files from extensions
fix https://github.com/FreshRSS/FreshRSS/issues/4930

* More fixes

* Typo
2025-04-07 08:47:42 +02:00
22cs
89b0e1168e Update 10_filter.md to provide detailed explanations of the time syntax. (#7464)
* Update 10_filter.md to provide detailed explanations of the time syntax.

* Update 03_Main_view.md to provide detailed explanations of the time syntax.

* Reworded

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-04-01 17:55:39 +02:00
hkcomori
9e8c306b3e JavaScript: new event to detect context loaded (#7452)
* Add JavaScript event: freshrss:globalContextLoaded

* Update docs

* Update docs: fix typo
2025-03-25 10:18:33 +01:00
docxml
2567f76950 Update 02_Prerequisites.md (#7448)
* Update 02_Prerequisites.md

Line numbers have varied over time

* Same for fr

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-03-22 23:16:20 +01:00
Alexandre Alapetite
a7361a3e7c Implement JSON string concatenation with & operator (#7414)
Inspired by [JSONata syntax](https://docs.jsonata.org/expressions).
fix https://github.com/FreshRSS/FreshRSS/issues/6565
2025-03-13 22:40:41 +01:00
Olicorne
31c797b3fc docs: add link to freshrss_python_api (#7401)
as suggested here: https://github.com/FreshRSS/FreshRSS/discussions/7395

Signed-off-by: thiswillbeyourgithub <26625900+thiswillbeyourgithub@users.noreply.github.com>
2025-03-04 23:50:48 +01:00
Elanna Grossman
60b5459cac Update Reader Link Documentation (#7362)
* docs(docs): update Reeder link to point to Reeder Classic

* docs(CREDITS): add name to credits
2025-02-24 12:35:00 +01:00
Alexandre Alapetite
df82c23943 Release 1.26.0 2025-02-23 16:15:36 +01:00