aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-12-27Do not include hidden feeds when counting unread articles in categories (#8357)Gravatar Alexandre Alapetite
fix https://github.com/FreshRSS/FreshRSS/issues/8347
2025-12-26ChangelogGravatar Alexandre Alapetite
2025-12-26Speed: disable labels count for Ajax requests (#8352)Gravatar Alexandre Alapetite
fix https://github.com/FreshRSS/FreshRSS/issues/8342
2025-12-25DB: auto-add lastUserModified column also during markRead (#8346)Gravatar Alexandre Alapetite
fix https://github.com/FreshRSS/FreshRSS/issues/8345
2025-12-24Handle fetch of text/plain as <pre> (#8340)Gravatar Alexandre Alapetite
* Handle fetch of text/plain as <pre> fix https://github.com/FreshRSS/FreshRSS/issues/8328 * class="text-plain"
2025-12-24Change `Content-Disposition: inline` to `attachment` in `f.php` (#8344)Gravatar Inverle
Some [misconfigured instances](https://github.com/FreshRSS/FreshRSS/issues/7835) may be stripping out the CSP header that `f.php` sends, which can be mitigated by forcing the browser to download the image instead of displaying it and executing JS code from unsanitized SVGs for example. Contributes to https://github.com/FreshRSS/FreshRSS/pull/8263 and https://github.com/FreshRSS/FreshRSS/pull/7924 (improving security when CSP is not present)
2025-12-24Start 1.28.1-dev πŸŽ„Gravatar Alexandre Alapetite
2025-12-24Release 1.28.0 πŸŽ„1.28.0Gravatar Alexandre Alapetite
2025-12-24Fix serialisation of dates in searches (#8341)Gravatar Alexandre Alapetite
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
2025-12-23Capy Reader update (#8339)Gravatar Alexandre Alapetite
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8184 One more ⭐ for synchronisation, which has become better. βœ”οΈ User labels properly implemented https://github.com/jocmp/capyreader/issues/786#issuecomment-3685125608 First client to pass all my criteria since defunct News+.
2025-12-23Fix parsing of literal "or" in regex (#8338)Gravatar Alexandre Alapetite
fix https://github.com/FreshRSS/FreshRSS/issues/7879
2025-12-21ChangelogGravatar Alexandre Alapetite
2025-12-21Improve configuration checks (#8334)Gravatar Alexandre Alapetite
Add a distinction between recommended and required extensions. Add check for recommended php-intl extension as follow-up of https://github.com/FreshRSS/FreshRSS/pull/8329#issuecomment-3677686581 Improve related checks such as ZIP. Reduce duplicated translations and tests.
2025-12-21Fix dropdown menus in sidebar going under the navigation bar (#8336)Gravatar Inverle
Missed in #8335 because I was testing without having the navigation bar enabled. <img width="674" height="198" alt="image" src="https://github.com/user-attachments/assets/a1db7f95-f1d9-47e5-a572-20892e6c7abc" />
2025-12-21Display sidebar dropdowns above if no space below (#8335)Gravatar Inverle
Closes https://github.com/FreshRSS/FreshRSS/issues/7801
2025-12-20More uniform SQL search and PHP search (#8329)Gravatar Alexandre Alapetite
* More uniform SQL search and PHP search The behaviour depends though on the database. Improve https://github.com/FreshRSS/FreshRSS/discussions/8265#discussioncomment-15278980 * Try to use transliterator_transliterate function instead
2025-12-18Add stag-enterprises to credits (#8331)Gravatar stag
https://github.com/FreshRSS/FreshRSS/pull/8330#issuecomment-3667491619
2025-12-17Allow negative category sort numbers (#8330)Gravatar stag
Closes https://github.com/FreshRSS/FreshRSS/issues/8304 Remove the min=1 attribute so negative numbers can be used to force categories to the bottom
2025-12-17Use native PHP #[Deprecated] (#8325)Gravatar Alexandre Alapetite
https://php.watch/versions/8.4/Deprecated And enfore it with PHPUnit + PHPStan. Especially useful for extensions.
2025-12-17Rework encoding of search filters (#8324)Gravatar Alexandre Alapetite
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
2025-12-16Handle null in base64_encode (#8321)Gravatar Alexandre Alapetite
* Handle null in base64_encode https://github.com/FreshRSS/FreshRSS/discussions/8314#discussioncomment-15269370 * PHPDoc
2025-12-16Fix array unique gaps (#8322)Gravatar Alexandre Alapetite
https://github.com/FreshRSS/FreshRSS/discussions/8265#discussioncomment-15270212
2025-12-16ChangelogGravatar Alexandre Alapetite
2025-12-16Safer handling of DB null content (#8319)Gravatar Alexandre Alapetite
https://github.com/FreshRSS/FreshRSS/discussions/8314#discussioncomment-15261119
2025-12-16Bump to API level 4 for Fever; add with_ids so we can mass-change rea… (#8312)Gravatar Andy Valencia
* Bump to API level 4 for Fever; add with_ids so we can mass-change read/unread/saved/unsaved on lists of articles. As discussed in https://github.com/FreshRSS/FreshRSS/issues/8305 A small enhancement to the Fever API to vastly increase efficiency when bulk marking items. - How to test the feature manually: The client at: https://sources.vsta.org:7100/FeedMonkey/file?name=js/Fever.js&ci=tip has code to talk to this API enhancement (when the API level says it's supported). In particular walkArticles(). * Update indentation per PR check on Github * make fix-all * Line length * Fix many typing issues * is_numeric * Update comment --------- Co-authored-by: Andy Valencia <ajv-899-334-8894@vsta.org> Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-12-15Reverse hash and nonce (#8320)Gravatar Alexandre Alapetite
Safer password evaluation
2025-12-15GitHub Actions: --no-progress (#8315)Gravatar Alexandre Alapetite
2025-12-15Improve scrolling into filter in sidebar (#8307)Gravatar Inverle
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8281 todo: * [x] Include labels (prefix `t_`) too * [x] Keep sidebar scrollTop when using the nav menu * [ ] ~~Make this work in the reader view's sidebar too~~ for separate PR * [x] Prevent whole page from scrolling on `scrollIntoView()` call, just scroll in the sidebar (probably related: https://github.com/FreshRSS/FreshRSS/pull/8306#issuecomment-3647414618) This TODO will be done in a separate PR since it requires optimizing the sidebar toggle code. edit: it does work on Chrome already though, but only if `#stream` isn't too large / breaks randomly (Firefox is slower it seems)
2025-12-13Improve simplified chinese translation (#8313)Gravatar Zexin Yuan
* Improve simplified chinese translation * Update translation progress * Add yzx9 to contributors
2025-12-13New links in transitions and jump to next transition (#8294)Gravatar Alexandre Alapetite
Easier to explain graphically: <img width="408" height="266" alt="image" src="https://github.com/user-attachments/assets/0e3724a1-155b-4a87-89b3-cfe8a18cb100" /> The jump to next section ⏭ works when the sorting criterion is a date. Need https://github.com/FreshRSS/FreshRSS/pull/8293
2025-12-13Fix search encoding and quoting (#8311)Gravatar Alexandre Alapetite
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
2025-12-12Improve Docker + compatibility Arch (#8299)Gravatar Alexandre Alapetite
* Better comments in our Docker images * Make `cli/access-permissions.sh` compatible with other Apache groups such as `http` for Linux Arch * Better `/Docker/entrypoint.sh` supporting various Apache configuration paths (and slightly faster). * Add test image for Linux Arch (not sure we will keep it) See * https://github.com/FreshRSS/FreshRSS/pull/8279#issuecomment-3620674818
2025-12-12Translate English phrases to Chinese in gen.php (#8308)Gravatar X.
* Translate English phrases to Chinese in gen.php * make fix-all --------- Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-12-11ChangelogGravatar Alexandre Alapetite
https://github.com/FreshRSS/FreshRSS/pull/8193#issuecomment-3642094344
2025-12-11Scroll into filtered feed/category on page load (#8281)Gravatar Inverle
Previously if you were to go to for example *Subscription management* and filter a feed, the feed wouldn't be visible in a sidebar with lots of feeds, since you'd have to scroll to it first. Now, this is no longer the case. Note that if the navigation comes from the sidebar itself, the original behavior remains. (scroll into previous `scrollTop` value of sidebar) Also improves experience of using shift+j/k (see https://github.com/FreshRSS/FreshRSS/pull/8057)
2025-12-11Fix htmlspecialchars for search (#8306)Gravatar Alexandre Alapetite
Regression from https://github.com/FreshRSS/FreshRSS/pull/8293
2025-12-10Add functions to modify a search expression (#8293)Gravatar Alexandre Alapetite
* 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
2025-12-09Keep scroll state of page when closing the slider with JS shortcut (#8301)Gravatar Inverle
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/8295
2025-12-09Fix chart resize regression due to chart.js v4 update (#8298)Gravatar Inverle
* Fix chart resize regression due to chart.js v4 update * Update to chart.js v4.5.1 + add .map file for easier debugging https://github.com/chartjs/Chart.js/releases/tag/v4.5.1 * Delete .map file
2025-12-08Fix saveHTML() scrambling encoding in newer libxml2 (#8296)Gravatar Alexandre Alapetite
fix https://github.com/FreshRSS/FreshRSS/pull/8279#issuecomment-3620674818
2025-12-08Minor refactor `<img class="icon">` -> `_i('...')` (#8297)Gravatar Inverle
2025-12-08Keep scroll state of page when closing the slider (#8295)Gravatar Inverle
2025-12-07Fix minor backslashes (#8292)Gravatar Alexandre Alapetite
2025-12-06Improve sidebar toggle button position (#8286)Gravatar maTh
Ref https://github.com/FreshRSS/FreshRSS/pull/8201#issuecomment-3610813235 <img width="422" height="119" alt="grafik" src="https://github.com/user-attachments/assets/0859bf55-d8e6-4401-adda-e854bf41a64a" />
2025-12-05phpstan analyse --memory-limit 512M (#8288)Gravatar Alexandre Alapetite
2025-12-05Docker: Alpine 3.23 (#8285)Gravatar Alexandre Alapetite
https://alpinelinux.org/posts/Alpine-3.23.0-released.html PHP 8.4.15, Apache/2.4.65 Dev Container updated from PHP 8.3.x to PHP 8.4.x.
2025-12-05PHP 8.5: Remove ReflectionProperty::setAccessible (#8284)Gravatar Alexandre Alapetite
https://php.net/reflectionproperty.setaccessible > As of PHP 8.1.0, calling this method has no effect; all properties are accessible by default. > This function has been DEPRECATED as of PHP 8.5.0.
2025-12-04Move unsafe autologin to an extension (#7958)Gravatar Inverle
Completes the following TODO https://github.com/FreshRSS/FreshRSS/issues/7923: https://github.com/FreshRSS/FreshRSS/blob/de624dc8ce63ec819c61216d9d44f828841c293e/app/Controllers/authController.php#L105 Extension PR: https://github.com/FreshRSS/Extensions/pull/364 https://github.com/FreshRSS/Extensions/tree/main/xExtension-UnsafeAutologin
2025-12-04Improve layout of documentation page and add search feature (#8247)Gravatar Inverle
* 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-04Scaling of user statistics (#8277)Gravatar Alexandre Alapetite
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.