aboutsummaryrefslogtreecommitdiff
path: root/app
AgeCommit message (Collapse)Author
2025-10-16Sort by article length (#8119)Gravatar Alexandre Alapetite
* Sort by article length fix https://github.com/FreshRSS/Extensions/issues/378 Very basic using simply SQL `LENGTH()` function. <img width="492" height="217" alt="image" src="https://github.com/user-attachments/assets/7cf37303-76c8-4411-b8b1-075e81535b60" /> * Improve content length retrieval
2025-10-16Remove pocket sharing service (#8127)Gravatar Alexis Degrugillier
It has been discontinued. See https://github.com/FreshRSS/FreshRSS/issues/8125
2025-10-16Change omnivore help URL (#8126)Gravatar Alexis Degrugillier
Fix https://github.com/FreshRSS/FreshRSS/issues/7105
2025-10-15Filter on last user modified (#8093)Gravatar Alexandre Alapetite
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-15Implement search form (#8103)Gravatar Alexandre Alapetite
* 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-14Fix SQLite GREATEST() (#8118)Gravatar Alexandre Alapetite
* Fix SQLite GREATEST() fix https://github.com/FreshRSS/FreshRSS/pull/8105 Related to https://github.com/FreshRSS/FreshRSS/pull/7886
2025-10-14Option to show user labels instead of tags in RSS share (#8112)Gravatar Alexandre Alapetite
* Option to show user labels instead of tags in RSS share fix https://github.com/FreshRSS/FreshRSS/discussions/8108#discussioncomment-14668813 <img width="711" height="182" alt="image" src="https://github.com/user-attachments/assets/8effb2cd-fffb-4f00-b628-54e963e8b2dc" />
2025-10-14[i18n] updated Italian translation (#8115)Gravatar scollovati
* [i18n] updated Italian translation * make fix-all * [i18n] italian unsafe_csp_header * make fix-all --------- Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-10-14New stats overview of dates with most unread articles (#8089)Gravatar Alexandre Alapetite
New view with direct links to dates with most unread articles: <img width="734" height="581" alt="image" src="https://github.com/user-attachments/assets/159a39b3-3a06-4ae9-9cc0-62ae36d9db9c" />
2025-10-14Fix drag&drop of user query losing information (#8113)Gravatar Alexandre Alapetite
* Fix drag&drop of user query losing information Information about RSS sharing was lost after a drag&drop * Fix related type cast
2025-10-13Fix SQL updateEntry (#8105)Gravatar Alexandre Alapetite
fix https://github.com/FreshRSS/FreshRSS/issues/8087#issuecomment-3395337832 Regression from https://github.com/FreshRSS/FreshRSS/pull/7886
2025-10-12Fix SQL bind bug when adding tag (#8101)Gravatar Alexandre Alapetite
Error in SQLite: `SQL error FreshRSS_TagDAO::addTag["HY000",25,"column index out of range"]`
2025-10-12Translate new user_modified strings (#8092)Gravatar Minna N.
* Translate new user_modified strings * make fix-all --------- Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-10-11Fix MySQL autoupdate Last user modified (#8090)Gravatar Alexandre Alapetite
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/7886 (Probably wrong merge conflict resolution)
2025-10-11Last user modified (#7886)Gravatar Federico Scodelaro
* feat: Add user modified functionality Closes https://github.com/FreshRSS/FreshRSS/issues/7862 Changes proposed in this pull request: This is an implementation of the proposed feature. It allows entries to have a new field that will be updated whenever an item is marked as read/unread or bookmark/removed from bookmarks. And a new sort criteria to sort by it. How to test the feature manually: 1. Mark items from a feed as read/unread 2. Mark items from a feed as bookmark / remove bookmark 3. Sort by the new criteria * feat: Add sort functionality * feat: Add sort nav button * fix: Use correct migrations * fix: Add internationalization * fix: Linter errors * chore: PR comments * Update app/i18n/fr/index.php Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr> * Update app/i18n/pl/index.php Co-authored-by: Inverle <inverle@proton.me> * Update app/i18n/nl/index.php Co-authored-by: Frans de Jonge <fransdejonge@gmail.com> * make fix-all * Fixes * More fixes sort * Fix wrong index * Fix unneeded column * Fix auto-create indexes * Some copilot suggestions * One more fix Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr> --------- Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr> Co-authored-by: Inverle <inverle@proton.me> Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>
2025-10-06Update Finnish translation (#8073)Gravatar Minna N.
* Update Finnish translation * Remove TODOs and add one IGNORE * make fix-all * Remove DIRTY tag --------- Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-10-06Change regional language codes (#8065)Gravatar Alexis Degrugillier
* 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-04Do not mark important feeds as read from category (#8067)Gravatar Alexandre Alapetite
Important feeds are not supposed to be marked as read from another view. This was already working for the main view, but this PR fixes the case of a category view. Follow-up of: * https://github.com/FreshRSS/FreshRSS/pull/5782
2025-10-04Strengthen some crypto (#8061)Gravatar Alexandre Alapetite
For login, tokens, nonces
2025-10-02Replace translation status flags with text section (#7842)Gravatar Inverle
* Replace translation status flags with text section * make fix-all * Update README.md Co-authored-by: maTh <1645099+math-GH@users.noreply.github.com> * Improve with suggestions * Improve with further suggestions * fix headers * BCP 47 https://developer.mozilla.org/en-US/docs/Glossary/BCP_47_language_tag * en-US: `TODO` -> `IGNORE` * i18n: fr * i18n: fr * i18n: fr * Links --------- Co-authored-by: maTh <1645099+math-GH@users.noreply.github.com> Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-10-02Add a new hook in the UI (#8054)Gravatar Alexis Degrugillier
* 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-01PHPStan 2.1.29 (#8052)Gravatar Alexandre Alapetite
Replace: * https://github.com/FreshRSS/FreshRSS/pull/8049 * https://github.com/FreshRSS/FreshRSS/pull/8050
2025-10-01API optimisation: more streaming of outputs (#8041)Gravatar Alexandre Alapetite
* API optimisation: more streaming of outputs I spotted a memory issue when testing https://github.com/FreshRSS/FreshRSS/pull/7714 Attempt to stream results more, instead of keeping too much in memory. Could be further improved. * Apply suggestions from code review Co-authored-by: Alexis Degrugillier <aledeg@users.noreply.github.com> * Minor whitespace JSON formatting --------- Co-authored-by: Alexis Degrugillier <aledeg@users.noreply.github.com>
2025-10-01configurable notification timeout (#7942)Gravatar maTh
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-09-30Add hook enums (#8036)Gravatar Alexis Degrugillier
- 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-30Fix autocomplete issues in change password form (#7812)Gravatar Inverle
## Screenshots <details> <summary>Before</summary> <img width="773" height="652" alt="image" src="https://github.com/user-attachments/assets/89a0e58c-8c4a-41ff-b5d6-3e916079d563" /> </details> <details> <summary>After</summary> <img width="1006" height="646" alt="image" src="https://github.com/user-attachments/assets/f4575103-7365-4870-a170-2742bf10eb27" /> </details> 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
2025-09-30Add new visibility priority *Show in its feed* (#7972)Gravatar Alexandre Alapetite
* Add new visibility priority *Show in its feed* fix https://github.com/FreshRSS/FreshRSS/pull/7970#issuecomment-3293917428 (you can't directly filter a hidden feed, it just shows a 404 page) And add a new visibility *Show in its feed* to show the feed in the list but not its articles. Ensure that visibility *hidden* is not shown to API. * TODO for later * Update app/i18n/pl/sub.php Co-authored-by: Inverle <inverle@proton.me>
2025-09-29Fix more CSRFs (#8035)Gravatar Inverle
Follow-up of #8000 Some were still missed in `feedController`. even had comments but no check: https://github.com/FreshRSS/FreshRSS/blob/0d463b67bdade2e896b7fa74595950eeaadd55fe/app/Controllers/feedController.php#L1053-L1055 https://github.com/FreshRSS/FreshRSS/blob/0d463b67bdade2e896b7fa74595950eeaadd55fe/app/Controllers/feedController.php#L374-L376
2025-09-29Update German (#8028)Gravatar Daniel Scharmach
* Update index.php "Vorgestern" was technically not correct here, in my opinion: - "Vorgestern empfangen" implies this is only for the day before yesterday - "Vor gestern empfangen" would instead include everything before yesterday, too * Update sub.php Correction of small typo
2025-09-27Stable IDs during SQL import (#7988)Gravatar Alexandre Alapetite
* Stable IDs during SQL import Follow-up of https://github.com/FreshRSS/FreshRSS/pull/7949 Make sure that the original category IDs, feed IDs, and label IDs are kept identical during an SQL import. Avoid breaking everything referring to categories, feeds, labels by their IDs such as searches and third-party extensions. * Fix export of default category
2025-09-25fix: anonym. mode: Do not show config button in sharing menu (#8012)Gravatar maTh
* Ref #8001 Do not show the config button in the article sharing menu if it is in the anonym. mode * Minor whitespace reduction Because it is a section that is used many times --------- Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-09-25fix: anonym. mode: label management link (#8011)Gravatar maTh
Ref: #8001 Changes proposed in this pull request: - do not show the "manage" dropdown menu for labels in anonym. mode (normal view) Before: <img width="304" height="139" alt="grafik" src="https://github.com/user-attachments/assets/2aff0299-febe-41b0-a99a-450559393cd6" /> After: <img width="281" height="121" alt="grafik" src="https://github.com/user-attachments/assets/69ad334e-0a31-4546-9939-9b72306db046" />
2025-09-25Prevent logout CSRFs (#7999)Gravatar Inverle
By avoiding `FreshRSS_Context::initUser()` calls
2025-09-25Fix: sharing button in top line when 0 entries (#8010)Gravatar maTh
ref #8001 Changes proposed in this pull request: - count entries, do not show share button when 0 sharing services How to test the feature manually: 1. having 0 sharing services 2. enable the sharing button in top line (settings -> display> 3. go to normal view -> sharing button should not be displayed in the article entry 4. add 1 sharing service 5. normal view -> sharing button is be displayed
2025-09-24Fix some CSRFs (#8000)Gravatar Inverle
In two bookmark actions and one in `entryController` Completes one TODO from #7923: https://github.com/FreshRSS/FreshRSS/blob/de624dc8ce63ec819c61216d9d44f828841c293e/app/Controllers/entryController.php#L257 (a POST request is already sent in the frontend)
2025-09-22Upgrade to PHP_CodeSniffer 4 (#7993)Gravatar Alexandre Alapetite
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
2025-09-21Update German (#7833)Gravatar beerisgood
* Update sub.php German translation added. * Update gen.php German translation added * make fix-all * Update conf.php * make fix-all * Update index.php * make fix-all * Update admin.php * Update feedback.php * Update app/i18n/de/index.php * make fix-all * Apply suggestions from code review Co-authored-by: maTh <1645099+math-GH@users.noreply.github.com> * Update app/i18n/de/index.php Co-authored-by: maTh <1645099+math-GH@users.noreply.github.com> * Update app/i18n/de/feedback.php Co-authored-by: maTh <1645099+math-GH@users.noreply.github.com> * Icon * make fix-all --------- Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr> Co-authored-by: maTh <1645099+math-GH@users.noreply.github.com> Co-authored-by: Alexis Degrugillier <aledeg@users.noreply.github.com>
2025-09-21Add option for CSP frame-ancestors (#7857)Gravatar Alexandre Alapetite
* Add option for CSP frame-ancestors https://github.com/FreshRSS/FreshRSS/discussions/7856 * Revert contentSelectorPreviewAction * Same for f.php and api * Fix double init in f.php * No sandbox for API page
2025-09-21Move update one step before (#7989)Gravatar Inverle
Closes https://github.com/FreshRSS/FreshRSS/issues/7897
2025-09-20fix linkding documentation link (#7985)Gravatar Alexis Degrugillier
Closes #7984 Changes proposed in this pull request: - fix linkding documentation link How to test the feature manually: 1. add a linkding sharing method 2. click on the documentation link 3. validate that the link is working
2025-09-206846 i18n update hungarian language (#7986)Gravatar Horváth Zsolt
* Update hungarian translation * Update hungarian translation status as well
2025-09-18Add `entry_before_update` and `entry_before_add` hooks (#7977)Gravatar KleinMann
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-18Restrict allowed curl parameters (#7979)Gravatar Inverle
For additional safety, also making sure in this PR that [`CURLOPT_COOKIEFILE`](https://curl.se/libcurl/c/CURLOPT_COOKIEFILE.html) is only allowed as an empty string during import.
2025-09-17Keep sort and order after marking as read (#7974)Gravatar Alexandre Alapetite
fix https://github.com/FreshRSS/FreshRSS/issues/7867
2025-09-16Safer calling of `install.php` (#7971)Gravatar Inverle
To prevent `install.php` from being accessed in unintended places
2025-09-15Clarify: Visibility hidden vs. archived (#7970)Gravatar Alexandre Alapetite
fix https://github.com/FreshRSS/FreshRSS/issues/7887 We have two concepts: how much a feed is shown or not (controlled by priority), and how often a feed is refreshed (or not, in which case it is archived). This PR removes the wording *Archived* from the *visibility* parameter, since this is not what it does.
2025-09-15Minor RSS output whitespace reduction (#7969)Gravatar Alexandre Alapetite
fix https://github.com/FreshRSS/FreshRSS/issues/7968
2025-09-15Fix another user self-delete regression (#7877)Gravatar Inverle
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
2025-09-15i18n zh-CN: Update conf.php (#7944)Gravatar scmaybee
* Update conf.php Supplementary part of the translation. * Update app/i18n/zh-cn/conf.php * Update app/i18n/zh-cn/conf.php * Update app/i18n/zh-cn/conf.php * Fixes --------- Co-authored-by: Frans de Jonge <fransdejonge@gmail.com> Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-09-14Recovery: skip broken entries during CLI export/import (#7949)Gravatar Alexandre Alapetite
* Recovery: skip broken entries during CLI export/import fix https://github.com/FreshRSS/FreshRSS/discussions/7927 ``` 25605/25605 (48 broken) ``` Help with *database malformed* or other corruption. * Compatibility multiple databases